Готовый перевод Linux Fundamentals Part 3 / Основы Linux от основателя Gentoo. Часть 3: Linux account managment

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «перевод редактируется»

Управление аккаунтами в Linux

Знакомьтесь, /etc/passwd

В этом разделе мы познакомимся с механизмом управления аккаунтами в Linux и начнем с файла /etc/passwd, в котором определены все пользователи, которые существуют в системе. Вы можете посмотреть свой файл /etc/passwd, набрав команду "less /etc/passwd".

Каждой строкой в /etc/passwd определяется аккаунт пользователя. Вот пример из моего /etc/passwd:

drobbins:x:1000:1000:Daniel Robbins:/home/drobbins:/bin/bash

Как видите, в одной строке не так уж много информации. Но на самом деле, каждая из них содержит несколько полей, разделённых ":".

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

Третье поле отвечает за числовой пользовательский идентификатор, связанный с конкретным пользователем, а четвертое поле ассоциирует этого пользователя с конкретной группой; через несколько , мы увидим, где определена группа 1000

Пятое поле содержит текстовое описание аккаунта, в нашем случае это имя пользователя. Шестое поле определяет домашний каталог пользователя, седьмое - устанавливает стартовую оболочку пользователя, которая будет автоматически запускаться когда пользователь входит в систему.
/etc/passwd советы и хитрости

Вы вероятно заметили, что в системе намного больше пользовательских аккаунтов, которые определены в /etc/passwd, чем тех, которые логинятся в систему на самом деле. Всё это потому, что различные компоненты Linux используют такие аккаунты для повышения безопасности. Обычно, такие системные аккаунты имеют идентификатор меньший 100, и у многих из них в качестве стартовой оболочки установлена /bin/false. Так как эта программа ничего не делает, кроме как выходит и возвращает код ошибки, это эффективно предотвращает эти аккаунты от использования в качестве обычных аккаунтов для логина - т.е. они только для внутрисистемного пользования.
/etc/shadow

Итак, сами пользовательские аккаунты определены в /etc/passwd. Системы Linux вдобавок к /etc/passwd содержат его файл-компаньон /etc/shadow. Он, в отличие от /etc/passwd, доступен для чтения только суперпользователю и содержит зашифрованную информацию о паролях. Взглянем на образец строки из /etc/shadow:

drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

Каждая строка определяет информацию о пароле конкретного аккаунта, поля в ней разделены знаком ":". Первое поле определяет конкретный пользовательский аккаунт, которому соответствует данная "теневая" запись. Во втором поле содержится зашифрованный пароль. Оставшиеся поля описаны в таблице ниже:

поле 3 - количество дней с 01.01.1970 до момента, когда пароль был изменен
поле 4 - количество дней до того, как будет разрешено сменить пароль ("0" - "менять в любое время")
поле 5 - количество дней до того, как система заставит пользователя сменить пароль ("-1" - "никогда")
поле 6 - количество дней до истечения срока действия пароля, когда пользователь получит предупреждение об этом ("-1" - "не предупреждать")
поле 7 - количество дней после истечения срока действия пароля, по прошествии которых аккаунт будет автоматически отключен системой ("-1" - "не отключать")
поле 8 - количество дней, прошедшее с момента отключения этого аккаунта ("-1" - "этот аккаунт включен")
поле 9 - зарезервировано для будущего использования
/etc/group

Теперь взглянем на файл /etc/group, который определяет группы в системе Linux. Вот примерная строка из него:

drobbins:x:1000:

Формат полей файла /etc/group следующий. Первое поле определяет имя группы, второе поле - это поле остаточного пароля, которое сейчас просто зарезервировано x, и третье поле определяет числовой идентификатор для конкретной группы. Четвертое поле (которое пусто в примере выше) определяет всех членов группы.

Вспомните что в нашем образце строки из /etc/passwd ссылка на группу с идентификатором 1000. Мы сможем поместить пользователя drobbins в группу drobbins, даже несмотря на отсутствие имени drobbins в четвертом поле /etc/group.
Примечания

Замечание насчет соответствия пользователей с группами: на некоторых системах каждый новый логин-аккаунт связан с группой, имеющей то же имя (и обычно идентификатор). На других системах все логин-аккаунты будут принадлежать к одной группе пользователей. Какой из этих методов выбрать зависит от вас. Создание соответствующей группы для каждого пользователя имеет преимущество в том, что позволяет им более легко контролировать их собственный доступ просто помещая доверенных друзей в свою личную группу.

Ручное добавление пользователей и групп

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

# echo $EDITOR
vim

Если это не так, то вы можете установить переменную EDITOR, набрав что-то, вроде:

# export EDITOR=/usr/bin/emacs
# vipw

Далее ваш редактор должен уже быть с загруженным /etc/passwd экране. Изменяя системные файлы passwd и group обязательно используйте команды vipw и vigr. Они имеют повышенные меры предосторожности, оберегая ваши файлы от участи быть испорченными.

Редактирование /etc/passwd

Итак, у вас уже есть готовый файл /etc/passwd, добавьте теперь следующую строку:

testuser:x:3000:3000:LPI tutorial test user:/home/testuser:/bin/false

Мы только что добавили пользователя "testuser" с идентификатором 3000. Мы определили его в группу с таким же идентификатором, которую еще не создали. Но мы можем определить его к идентификатору группы пользователей, если надо. У этого пользователя установлен комментарий, гласящий "LPI tutorial test user", домашний каталог установлен как "/home/testuser", а командная оболочка - как "/bin/false", в целях безопасности. Если бы мы создавали не тестировочный аккаунт, мы бы установили командную оболочку как "/bin/bash". Отлично, теперь сохраните файл и выходите.

Редактирование /etc/shadow

Сейчас нам надо добавить запись в /etc/shadow для этого пользователя. Для этого наберите vipw -s. Вас как всегда встретит ваш любимый редактор в котором уже открыт файл /etc/shadow. Теперь скопируйте строку существующего пользовательского аккаунта (того, у которого есть пароль и который больше чем стандартные системные записи аккаунтов)

drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

Замените имя пользователя в скопированной строке на имя вашего пользователя и убедитесь что все поля (в частности устаревший (?) пароль) установлены как вам надо:

testuser:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

Теперь сохраните и закройте

Установка пароля

Вы вернетесь к командной строке. Теперь, самое время задать пароль для вашего нового пользователя.

# passwd testuser
Enter new UNIX password: (enter a password for testuser)
Retype new UNIX password: (enter testuser's new password again)

Редактирование /etc/group

Теперь /etc/passwd и /etc/shadow готовы и самое время как следует настроить /etc/group. Для этого, наберите:

# vigr

Перед вами появится ваш /etc/group файл, готовый для редактирования. Сейчас же, если вы решите присоединить группу пользователей к какому-то вашему конкретному, то вам не понадобится добавлять какие-либо группы в /etc/groups. Однако, если вам понадобится создать новую группу для этого пользователя, добавьте следующую строку:

testuser:x:3000:

Теперь сохраните и закройте

Создание домашней директории

Мы почти закончили. Выполните следующие команды для создания домашнего каталога testuser'а:

# cd /home
# mkdir testuser
# chown testuser.testuser testuser
# chmod o-rwx testuser

Наш каталог пользователя на месте и аккаунт готов к использованию. Уже почти готово. Если вы собираетесь использовать этот аккаунт, вам надо будет воспользоваться vipw для смены стартовой оболочки на /bin/bash, так, чтобы пользователь смог войти.

Утилиты администрирования учетных записей

Вы уже знаете как вручную добавить новые аккаунты и группы, давайте же теперь рассмотрим различные, экономящие время, утилиты для управления аккаунтами под Linux. Из-за некоторых ограничений мы не будем рассматривать множество деталей, описывающих эти команды. Запомните - вы всегда можете получить больше информации о какой-либо команде если посмотрите её man-страничку. Если вы планируете сдавать LPIC 101 экзамен, вам следует провести побольше времени за ознакомлением с каждой из этих команд.

newgrp

По умолчанию, любой файл, который создает пользователь, сразу же присваивается к группе, в которой он состоит, определенной в /etc/passwd. Если пользователь принадлежит к другим группам, он или она может набрать newgrp thisgroup чтобы стать членом группы thisgroup. Затем, любые новые созданные файлы унаследуют членство в thisgroup.

chage - Команда chage используется для просмотра и изменения настроек срока действия паролей, сохраненных в /etc/shadow.
gpasswd - Основная утилита управления группами
groupadd/groupdel/groupmod - Используются для добавления/удаления/изменения групп в /etc/group
useradd/userdel/usermod - Используются для добавления/удаления/изменения пользователей в /etc/passwd. Эти команды могут выполнять и другие полезные функции. Смотрите man для получения дополнительной информации.
pwconv/grpconv - Используются для преобразования passwd и group файлов в новые shadow passwords. Фактически, все Linux системы уже используют shadow passwords, так что вам никогда не придется использовать эти команды.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется

Переведено на Нотабеноиде
http://notabenoid.org/book/12606/40968

Переводчики: VBart, nekjine, Neiro

Настройки

Готово:

100.00% КП = 1.0