• 3.1. Вход в систему
  • 3.1.1. Вход в систему под другим именем
  • 3.2. Изменение пароля
  • 3.3. Идентификаторы пользователя и группы
  • 3.4. Создание группы
  • 3.5. Удаление и модификация учетных записей
  • 3.6. Квотирование
  • 3.6.1. Определение ограничений
  • 3.6.2. Запрет квоты для пользователя или группы
  • 3.6.3. Использование программы linuxconf для определения квот
  • 3.7. Сценарий создания пользователей
  • 3

    Учетные записи пользователей

    3.1. Вход в систему

    Linux — это многозадачная и многопользовательская система. А это значит, что в системе могут одновременно работать несколько пользователей, которые будут использовать многозадачный интерфейс (запускать несколько программ одновременно). И это в отличие от Windows, где хоть и можно создать различные учетные записи пользователей, но в одно и то же время с системой может работать только один пользователь, который, правда, может использовать многозадачные возможности операционной системы.

    Идентификация в Linux состоит из двух шагов: ввода имени пользователя (логина) и пароля, который никто кроме вас не знает (во всяком случае, не должен знать…). При входе в систему вы увидите примерно такую подсказку:

    localhost login:

    Password:

    На что вы должны ввести свой логин и пароль. При некорректном вводе вы увидите сообщение Login incorrect и вам придется ввести пароль еще раз. При начальной регистрации администратор сам назначает вам пароль, который вы потом можете изменить. Так как читатель сам является администратором, то написанная выше строчка его не касается.

    В Linux существуют виртуальные консоли. Консоль — это дисплей и клавиатура, связанные воедино. Виртуальные консоли позволяют войти в систему под одним и тем же именем несколько раз одновременно. Для демонстрации этого момента нажмите Alt+F2 — вы перейдете на вторую виртуальную консоль. Если до этого вы работали в X Window, нажмите Ctrl+Alt+F2 (см. табл. 3.1).

    Некоторые комбинации клавиш при работев консоли и X Window Таблица 3.1

    Комбинация клавиш Описание
    All+Fn Переключение между ВК
    Ctrl+Alt+Fn Переключение из X Windows ВК с номером n
    Alt + F7 Возврат в X Window
    Ctrl + Alt + Backspace Аварийный выход из X Window

    Для выхода пользователя из системы, то есть для завершения текущего сеанса работы, используется команда exit. В некоторых старых дистрибутивах для этого использовалась команда logout.

    3.1.1. Вход в систему под другим именем

    Команда login используется для входа в linux-систему. Для входа под другим именем нужно ввести

    login [имя] [параметры]

    Если имя не указано, программа запросит его. Команда login позволяет использовать параметры, указанные в табл. 3.2. Для регистрации в качестве суперпользователя (root) нужно использовать команду su.

    Параметры команды login Таблица 3.2

    Параметр Описание
    -f Пропускает вторичную аутентификацию. Этот параметр сохранился со времен UNIX и в Linux работает не так как надо
    Сохраняет переменные окружения, используемые getty. Программа getty — это программа, устанавливающая связь между операционной системой и указанным терминалом
    -h имя хоста Передает команде login имя удаленного хоста. Обычно используется на серверах

    3.2. Изменение пароля

    Чтобы изменить свой пароль воспользуйтесь командой passwd. Ее нужно ввести без параметров. При этом команда запросит новый пароль. Если вы не root, система не разрешит вам ввести пароль, являющимся словом, или короткий пароль. В другом случае вы можете ввести все, что угодно — даже 123 тоже будет допустимо — система не сможет вам помешать. Обычно, если пользователь изменяет свой пароль, система проверяет пароль на возможность подбора, и не является ли этот пароль словом из системного словаря. Также проверяется длина пароля. Минимальная допустимая длина пароля –шесть символов, в некоторых дистрибутивах — восемь.

    Чтобы изменить пароль какого-нибудь пользователя, вы должны (зарегистрировавшись как root) в качестве параметра команды passwd указать имя этого пользователя.

    3.3. Идентификаторы пользователя и группы

    Система Linux чем-то похожа на монархическое государство: в нем существует один суперпользователь — root, которому все подчиняется, и определенное число обыкновенных пользователей. Это значит, что если вы попробуете удалить один из жизненно важных файлов Linux под учетной записью пользователя, то система не позволит вам этого сделать. Под учетной записью root вы имеете право делать все, что вам заблагорассудится. Поэтому в целях безопасности, даже если вы используете систему в гордом одиночестве, рекомендуется создавать в системе хотя бы одного пользователя, под которым вы будете работать. Если вы работаете с системой на правах пользователя, а вам вдруг потребовались права суперпользователя, то в этой ситуации вы можете воспользоваться командой su, которая в большинстве случаях вам поможет. Эта команда разрешит вам использовать привилегии суперпользователя без завершения текущего сеанса работы.

    Для создания учетной записи используется команда adduser <имя_пользователя>. Естественно, добавлять новых пользователей может только root. После создания новой учетной записи не забудьте изменить пароль пользователя командой passwd <имя_пользователя>.

    При добавлении новых пользователей используются параметры по умолчанию. Естественно, они вас не будут устраивать (например, только потому, что для каждого нового пользователя создается новая группа с именем пользователя). Изменить эти параметры можно с помощью опций программы passwd. Более подробно об этих опциях вы можете прочитать в справочной системе (man passwd). Для автоматизации процесса создания учетных записей я предлагаю использовать небольшой сценарий, который вы найдете в конце этой главы.

    Примечание. Обычно пользователи объединяются в группы для решения какой-нибудь задачи, например, для работы над одним проектом или же вы просто хотите создать различные группы пользователей для разных отделов предприятия, чтобы потом определенным образом установить права доступа к какому-нибудь объекту. Если каждый пользователь будет находиться в своей группе, то такое управление доступом будет невозможным.

    В общем случае система хранит следующую информацию о пользователе: Имя пользователя (username)— регистрационное имя пользователя, то есть логин. Желательно, хотя и не обязательно, создавать пароли, каким-то образом ассоциирующиеся с определенными пользователями (с их реальными именами). Это упрощает работу администратора, позволяя ему быстро по паролю распознавать пользователя.

    Идентификатор пользователя (User ID) — индивидуальный числовой идентификатор пользователя (UID). Система обычно работает с UID, а не с именами пользователей. Идентификатор задается из диапазона 0…65534 и должен быть уникальным. Число 0 соответствует пользователю root. Желательно идентификаторы назначать не произвольным образом, а системно. Например, выделить определенный интервал (1000…1100) под одну группу пользователей, а еще один (2000…2100) — под другую группу. В каждом диапазоне назначать идентификаторы последовательно. Это опять же упростит администрирование и позволит, бегло взглянув на список процессов, сразу же определить кто чем занимается.

    Идентификатор группы (Group ID) — числовой идентификатор первичной группы пользователя (GID). Помимо первичной группы пользователь может входить или не входить в состав разных групп, но в первичную группу (native group) он входит всегда. В различных дистрибутивах это выглядит по-разному. Идентификатор группы 0 соответствует группе root.

    Пароль (password) — пароль.

    Реальное имя пользователя (full name) — обычно представляет собой реальное (фактическое) имя пользователя, например, ivan ivanov. Может содержать и другие данные: номер телефона и т.п. Эти сведения используются в информационных целях.

    Домашний каталог пользователя (home dir) — вкачестве домашнего каталога обычно используется каталог /home/<имя_пользователя> (например, /home/den). Без особых причин не рекомендуется изменять такую организацию домашних каталогов.

    Оболочка пользователя (login shell) — командный интерпретатор пользователя, который используется им по умолчанию. Программа-оболочка (командный интерпретатор) запускается при входе пользователя в систему. Примеры командных интерпретаторов: ash, bash, csh, fcsh, ksh.

    Вся эта информация хранится в файле /etc/passwd в следующем виде:

    username:password:UID:GID:full_name:home_dir:login_shell

    Пример фрагмента файла /etc/passwd:

    root:x:0:0:root:/root:/bin/bash

    bin:x:1:1:bin:/bin:/sbin/nologin

    daemon:x:2:2:daemon:/sbin:/sbin/nologin

    den:x:500:500:den:/home/den:/bin/bash

    evg:x:501:501::/home/evg:/bin/bash

    На практике обычно используются теневые пароли, и вместо пароля в файле /etc/passwd стоит *, а сам пароль хранится в файле /etc/shadow, естественно в зашифрованном виде. Применение теневых паролей оправдывает себя с точки зрения безопасности. Обычно к файлу /etc/passwd разрешен доступ в режиме «только чтение» всем пользователям. К файлу /etc/shadow обычный пользователь не имеет даже такого доступа.

    В качестве основного алгоритма шифрования используется MD5. Этот алгоритм является самым надежным. Раньше использовались алгоритмы DES и 3DES, но здесь я не буду подробно останавливаться ни на одном из них. При установке системы обычно спрашивается, хотите ли вы использовать теневые пароли (Shadow Passwords) и MD5. Я очень рекомендую вам использовать обе эти возможности.

    Домашние каталоги пользователей обычно располагаются в каталоге /home основной файловой системы, но вы можете назначить и любой каталог в качестве домашнего. Суперпользователь использует домашний каталог /root. Для перехода в домашний каталог используется команда cd ~.

    Примечание. В Linux текущий каталог обозначается точкой, родительский каталог — двумя точками, а домашний каталог пользователя — символом ~ (тильда).

    3.4. Создание группы

    Каждый пользователь принадлежит к одной или более группам. Группы используются для того, чтобы пользователи, принадлежащие одной группе, могли работать с общими файлами. Например, в группу user входят пользователи ivanov и petrov, а пользователь sidorov входит в группу sgroup. Пользователь ivanov создает файл report и разрешает всем членам группы users работать с этим файлом. При попытке обратиться к файлу report пользователь sidorov получит сообщение Permission denied.

    Как правило, все члены группы имеют доступ к домашним каталогам друг друга. По умолчанию разрешается только чтение для членов группы. Более подробно о правах доступа к файлам мы поговорим в гл. 4. Информация о группах пользователей хранится в файле /etc/group. Формат этого файла следующий:

    имя_группы:пароль:GID:члены_группы

    Пароль используется крайне редко. Пример файла /etc/group представлен в листинге 3.1.

    Листинг 3.1. Пример файла /etc/group

    root:*:0:

    local:*:100:den,operator,ivan

    guest:*:200:

    dialup:*:250:victor,evg

    В этом примере группа root зарезервирована для пользователя root. Группа с идентификатором 100 используется для локальных пользователей. В ее состав входят пользователи den, operator, ivan. Группа quest предназначена для гостевого входа и пользователя guest. В состав группы dialup входят пользователи victor и evg.

    Существует несколько групп, определяемых самой системой, вроде bin, mail и sys. Пользователи не могут принадлежать к какой-либо из этих групп. Эти группы используются для системных файлов. Добавить группу вы можете с помощью команд groupadd. Я, как правило, просто добавляю запись в файл /etc/group, а если мне нужно удалить группу, то удаляю соответствующую строку.

    3.5. Удаление и модификация учетных записей

    Для удаления пользователя можно воспользоваться командой userdel. Удалять учетные записи умеет и linuxconf. При удалении пользователя программа linuxconf спросит у вас, что делать с домашним каталогом удаляемого пользователя: удалить, архивировать или оставить без изменения. Что делать с ним — это уже вам решать.

    Модифицирование учетной записи реализуется программой usermod. Здесь хочу дать один совет: для модифицирования (да и создания) учетных записей гораздо удобнее пользоваться программой linuxconf. Например, для создания учетной записи, введите команду linuxconf (или userconf — для Linux Mandrake). Затем запустите конфигуратор учетных записей, нажав на кнопку «User Accounts» (если вы запустили userconf, этого делать не нужно). В окне UserAccount Configurator перейдите на вкладку Normal (см. рис. 3.1) и нажмите на кнопку «User Accounts» (см. рис. 3.2), а затем на кнопку «Add». 

     Рис. 3.1. User Account Configurator

    Рис. 3.2. Учетные записи

    Рис. 3.3. Добавление учетной записи

    3.6. Квотирование

    Квотирование — мощный механизм ограничения дискового пространства, используемый еще в ранних версиях UNIX. Данный материал настолько объемный, что ему можно было бы смело посвятить целую главу. Надеюсь, читатель мне простит, если я немного отклонюсь «от основного курса». Вспоминается народная мудрость: все новое — это хорошо забытое старое. Квоты поддерживались самыми ранними версиями UNIX, тогда как в состав ОС семейства Windows компания Microsoft включила их только в Windows 2000, естественно, гордо заявив об этом.

    Команда quota (см. дальше) позволяет просмотреть ограничения дискового пространства для данного пользователя. Ограничения, как правило, устанавливаются системным администратором. При этом существуют два типа ограничений — ограничение на количество файлов (inodes) и ограничение на использование дискового пространства (blocks). Если установлены оба ограничения, то они будут использоваться одновременно.

    Ограничения на inodesи наblocksмогут быть установлены как для пользователя, так и для группы. Если вы входите в группу, которая превысила наложенное на нее ограничение, то вы не сможете использовать дисковое пространство, даже если вы не превысили квоту как пользователь.

    Для каждого ограничения характерны четыре числа:

    1. Ограничение, которое используется в данный момент.

    2. «Мягкое» ограничение (softlimit).

    3. «Жесткое» ограничение (hardlimit).

    4. Время, по истечении которого «мягкое» ограничение будет интерпретироваться как «жесткое».

    «Мягкое» ограничение определяет число блоков, которые пользователь все еще может превысить, «жесткое» ограничение превысить невозможно. При попытке сделать это, пользователь получит сообщение об ошибке. При истечении определенного времени (обычно 7 дней) «мягкое» ограничение переходит в «жесткое». За это время пользователь должен удалить ненужные ему файлы. Размер блока в Linux обычно составляет 1024 байт.

    Для поддержки ограничений, прежде всего, нужно настроить ядро. Для этого необходимо включить quota support в меню Filesystem при конфигурировании ядра, а потом перекомпилировать ядро. С этой целью нужно перейти в каталог /usr/src/linux и выполнить команду make menuconfig, a затем ввести следующую последовательность команд:

    make dep; make bzImage; make modules; make modules_install

    Последние две нужно вводить в случае, если вы хотите перекомпилировать модули. Не забудьте ввести команду lilo (см. рис. 3.4) (перед этим нужно немного подправить файл /etc/lilo.conf, если вы этого не сделали раньше — см. гл. 18). Более подробно о конфигурировании ядра вы можете прочитать в гл. 18.

    Звездочкой на рис. 3.4 отмечен раздел, загружаемый по умолчанию. Перед перекомпилированием ядра я настоятельно рекомендую прочитать п. 4.11 «Использование LILO» и гл. 18. Если при загрузке ядра на экране монитора вы увидите сообщение Turning onu ser and group quotas for local filesystems, это значит, что ваше ядро уже поддерживает квоты.

    Рис. З.4. Запись загрузчика LILO


    Теперь нужно определить, использование какой файловой системы вы хотите ограничить. Обычно это /home (домашние каталоги пользователей), /usr (пользователи имеют право записывать информацию в этот каталог) и, возможно, /var.

    Для этого отредактируйте файл /etc/fstab следующим образом:

    /dev/hda1 /     ext2 defaults

    /dev/hda4 /home ext2 defaults,usrquota

    /dev/hda5 /usr  ext2 defaults,usrquota,grpquota

    none      /proc proc defaults

    Параметр usrquota означает ограничение пространства для пользователей на данном устройстве, a grpquota — для групп. Если вы пишите usrquota (grpquota) без знака «=», то подразумевается, что файлы ограничений находятся в корневом каталоге каждой файловой системы, для которой используются ограничения на дисковое пространство. Обычно эти файлы называются quota.user и quota.group для квот пользователей и групп соответственно. Однако вы сами можете указать какие файлы следует использовать для определения квот, например, usrquota= /quotas/user.quota. Старайтесь не указывать слишком длинный путь.

    Периодически необходимо проверять содержащиеся в файле ограничения на целостность действительного числа блоков и файлов, выделенных для пользователя. Для этого используется команда quotacheck. Ее можно выполнять даже на смонтированных файловых системах, а также на файловых системах, на которых не используются квоты. Для проверки файловой системы на число блоков, которые используются пользователем, выполните команду:

    # quotacheck –avug

    В основном данную проверку нужно выполнять при некорректной перезагрузке. При этом вы можете включить эту команду в один из rc-сценариев и выполнять ее так же, как и fsck.

    Для того, чтобы включить систему ограничений при загрузке операционной системы, добавьте команду quotaon –avug в сценарии загрузки системы.

    Рис. 3.5. Результат выполнения команды quotacheck –avug


    Только root имеет право использовать команды, связанные с квотированием. Команда quota, как уже было выше отмечено, используется для проверки используемых ограничений любого пользователя, а команда repquota — для проверки используемого пространства и ограничений для всех пользователей на данной файловой системе. При выполнении команды quotacheck –avug будут автоматически изменены файлы квот, а также будет изменена таблица ядра. Файлы квот имеют размер 2 Мб, даже если ни один из пользователей не использует квот.

    Для того, чтобы получить информацию об ограничениях, наложенных на пользователя (группу), используется команда repquota –ua (см.рис. 3.6).

    Рис. З.6. Результат выполнения команды repquota –ua

    3.6.1. Определение ограничений

    Для определения (задания) ограничений используется команда edquota. Ограничение дискового пространства пользователя производится командой edquota с параметром –u (см. рис. 3.7), а определение квот для группы — с параметром –g. После выполнения этой команды будет запущен редактор, который указан в переменной окружения $EDITOR, для редактирования квот. Редактировать надо только число, которое следует за словом hard или soft.

    Рис. З.7. Результат выполнения команды edquota –u den


    #edquota -u den

    Перед выполнением этой команды выполните две следующие команды:

    quotacheck –u <filesystem> quotaon –u <filesystem>

    Например:

    quotacheck –u /mnt/ext2 quotaon –u /mnt/ext2

    Данные команды необходимы для создания файлов quota.user и quota.group. В противном случае при редактировании ограничений пользователей (групп) вы получите сообщение о том, что данные файлы не существуют. Для каждой файловой системы, на которую наложены квоты, вы увидите две строки. Слово soft означает, что на данную файловую систему наложено «мягкое» ограничение, а слово hard — «жесткое». При этом пользователь имеет некоторый интервал времени, по истечении которого «мягкое» ограничение перейдет в «жесткое». Данный интервал можно изменить с помощью команды edquota –t:

    #edquota –t

    Time units may be: days, hours, minutes, or seconds

    Grace period before enforcing soft limits for users:

    /dev/hda4: block grace period: 50 minutes, file grace period: 50 minutes

    «Жесткое» ограничение является максимальным значением, которое может иметь пользователь или группа на данной файловой системе.

    Строка /dev/hda4: blocks in use: 1024, limits (soft = 1, hard = 0) определяет количество блоков, которое может быть выделено для пользователей или группы. Напомню, что обычно размер блока в Linux составляет 1024 байт. В данном случае ограничение равно 1 Мб.

    Строка inodes in use: 94, limits (soft = 0, hard = 0) сообщает какое число inode (файлов, устройств, поименованных каналов (pipes)) может быть выделено для данного пользователя или группы.

    В большинстве случаев у вас есть группа пользователей, которая должна иметь одинаковые ограничения. Самым быстрым способом редактирования ограничений в этом случае является использование прототипа. С помощью команды:

    # edquota –u <пользователь/группа_который(ая)_станет_прототипом>

    можно определить ограничения прототипа, а затем с помощью команды:

    # edqouta –p <прототип> пользователь

    создать квоты для всех оставшихся пользователей, применив к ним ограничения прототипа. При этом вам не нужно редактировать ограничения отдельно для каждого пользователя/группы. Например, вам нужно добавить пользователя user, который будет использовать такие же ограничения, что и пользователь den. Делается это следующим образом:

    # edquota –p den user

    Команда quota используется для проверки ограничений дискового пространства пользователей и групп и применяется со следующими параметрами:

    quota [-guqv]

    quota [-qv] –u <имя_пользователя>

    quota [-qv] –g <имя_группы>

    Параметр –v используется для вывода информации о файловых системах, которые не имеют активных ограничений, а также о файловых системах, на которых квоты уже активны, но не занят еще ни один блок.

    Параметр –q используется для получения сведений о файловых системах, на которых превышено значение «мягкого» ограничения.

    Параметр –g предоставляет информацию об ограничениях, наложенных на указанную группу.

    Параметр –u предоставляет информацию об ограничениях, наложенных на указанного пользователя. Этот параметр используется по умолчанию и аналогичен запуску программы quota без параметров.

    Например, просмотр ограничения для пользователя user выглядит следующим образом:

    Disk quotas for user user (uid 1002) :

    Filesystem blocks quota limit grace files quota limit grace

    /dev/hdb3  1024*  1     0     none  94    0     0

    Пользователь user, ограничен так же, как и его прототип — пользователь den.

    Если ограничения для данного пользователя не заданы, вы увидите примерно такое сообщение: Disk quotas for user root (uid 0) : none

    Только суперпользователь может просматривать квоты других пользователей. Обычный пользователь может просматривать только свои квоты и квоты группы, к которой он принадлежит.

    3.6.2. Запрет квоты для пользователя или группы

    Иногда не нужно ограничивать какого-то отдельного пользователя — и в самом деле, не будете же вы ограничивать самого себя? Тогда для этого вам нужно использовать программу edquota и установить значения soft и hard равными 0. После этого данный пользователь или группа сможет использовать дисковое пространство без ограничений.

    3.6.3. Использование программы linuxconf для определения квот

    Очень удобно редактировать ограничения с помощью linuxconf. Для этого запустите linuxconf и выберите в меню Filesystems→Set quotas default (см. рис. 3.8).

    Рис. З.8. Редактирование квот программой linuxconf


    Здесь можно указать ограничения, которые будут использованы по умолчанию для пользователей или групп. При этом можно также указать интервал времени (grace period), по истечении которого «мягкое» ограничение перейдет в «жесткое». Ограничения можно задать отдельно и для конкретного пользователя. Для этого выберите в меню программы User accounts→User accountsи укажите пользователя, для которого вы хотите задать ограничения (см. рис. 3.9).

    Рис. 3.9. Определение квот для пользователя


    По умолчанию используется значение Default, то есть для этого пользователя будут использованы такие же ограничения, как и для всех остальных. Значение No limit — без ограничения. Ограничения можно задавать отдельно и для разных файловых систем.

    Для квотирования сетевой файловой системы (NFS) нужно установить quota на сервере, а на клиенте она не нужна. Клиент получит сведения об ограничениях с помощью rquotad, который должен быть установлен и запущен на сервере. Вам не нужно устанавливать флаги usrquota или grpquota для монтирования NFS-дисков. Вместо этого установите quota на своем файловом сервере и запустите на нем из rc-файла сервер rpc.rquotad.

    3.7. Сценарий создания пользователей

    В качестве завершения этой главы приведу обещанный мною сценарий добавления новых пользователей (см. листинг 3.2). Данный сценарий нужно поместить в каталог /sbin и сделать этот файл исполнимым:

    chmod 711 /sbin/nu

    Листинг 3.2. Сценарий nu

    # !/bin/bash

    # nu (New User) — Сценарий добавления пользователей.

    # Группа по умолчанию

    GROUP=100

    # Оболочка по умолчанию

    SHELL=/bin/bash

    # Префикс для домашнего каталога

    HOME=/home

    # Время окончания действия пароля (дни)

    EXPIRE=30

    # Минимальное количество дней до смены пароля

    DAYS=0

    # За 5 дней предупреждаем пользователя

    WARN=5

    WHOAMI=`/usr/bin/whoami`

    if [ $WHOAMI!="root" ]; then

     echo "Access violation."

     exit 1

    fi

    echo –n "Enter new name: "

    read USERNAME

    echo –n "Enter full name: "

    read FULLNAME

    adduser –c "$FULLNAME" –d $HOME/$USERNAME –e $EXPIRE \

     –g $GROUP –S $SHELL $USERNAME

    passwd –n $DAYS –w $WARN $USERNAME

    passwd $USERNAME






     

    Главная | В избранное | Наш E-MAIL | Прислать материал | Нашёл ошибку | Наверх