Конечно же пользователей и группы можно добавлять, изменять и удалять без использования скриптов и программ, поставляемых со Slackware. Это не так уж и сложно, хотя после прочтения о том, как это делается, вы скорее всего решите, что использовать скрипты всё же проще. Однако важно знать о том, как на самом деле хранится информация с вашим паролем на тот случай, если вам надо будет восстановить эту информацию, а утилит Slackware под рукой не окажется.
Сначала нужно добавить нового пользователя в файлы /etc/passwd(5), /etc/shadow(5) и /etc/group(5). В файле passwd хранится информация о пользователях вашей системы, но (как ни странно) без их паролей. Когда-то пароли в нём хранились, однако довольно давно это было отменено по соображениям безопасности. Файл passwd должен быть доступен на чтение всем пользователям системы. Однако зашифрованные пароли при этом не должны быть доступны на чтение всем, поскольку, имея их, злоумышленники путём перебора могут взломать пароли пользователей. Поэтому зашифрованные пароли хранятся в файле shadow, который доступен на чтение только root'у, а все пароли пользователей, указываемые в файле passwd - это просто “x”. В файле group перечислены все группы и их члены.
Вы можете использовать утилиту vipw для безопасного редактирования файла /etc/passwd и утилиту vigr для безопасного редактирования /etc/group. Для безопасного редактирования файла /etc/shadow используйте vipw -s. (Здесь под “безопасностью” подразумевается, что никто другой не сможет изменить файл, пока вы редактируете его. Если вы являетесь единственным администратором своей системы, вам не стоит об этом беспокоиться, однако лучше с самого начала научиться придерживаться такого поведения.)
Давайте изучим содержимое файла /etc/passwd и узнаем, как добавить нового пользователя. Типичная запись в passwd выглядит примерно так:
chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash |
На каждого пользователя приходится одна строка, а поля разделяются запятыми. Поля: логин, зашифрованный пароль (в Slackware это “x” для любого пользователя, поскольку в системе используются теневые пароли), идентификатор пользователя, идентификатор группы, опциональные данные finger (через запятую), домашний каталог и командный процессор. Чтобы добавить нового пользователя вручную, добавьте в конце файла новую строку, заполнив её соответствующей информацией.
Добавляемая вами информация должна удовлетворять определённым требованиям, в противном случае у вашего нового пользователя будут проблемы со входом в систему. Сначала убедитесь, что в поле с паролем стоит x, и что и имя пользователя, и его ID являются уникальными. Назначьте пользователю группу: 100 (группа “users” в Slackware) или свою группу по умолчанию (используйте её номер, а не название). Назначьте пользователю домашний каталог (который вы создадите чуть позже) и командный процессор (помните, что действительные шеллы перечислены в файле /etc/shells).
Затем необходимо добавить запись в файл /etc/shadow, в котором хранятся зашифрованные пароли. Обычно запись в этом файле выглядит так:
chris:$1$w9bsw/N9$uwLr2bRER6YyBS.CAEp7R.:11055:0:99999:7::: |
И опять же каждому пользователю соответствует одна строка, поля в которой разделены запятыми. Поля (по порядку) - это логин; зашифрованный пароль; количество дней от начала эры UNIX (1 января 1970 года), когда был изменён пароль; количество дней, по истечении которых пароль должен быть изменён; количество дней до истечения срока действия пароля, когда пользователь начнёт получать уведомления; количество дней после истечения срока действия, когда учётная запись будет заблокирована; и зарезервированное поле.
Как видите, основная часть информации посвящена истечению срока действия учётной записи. Если вы не будете использовать эти данные, вам нужно только заполнить несколько полей специальными значениями. В противном случае вам придётся произвести ряд вычислений и принять определённое решение перед тем, как заполнить эти поля. Для нового пользователя поле пароля заполните каким-нибудь мусором. На данный момент вам не нужно беспокоиться о пароле, потому что вы измените его через минуту. Единственным символом, который нельзя использовать в поле пароля, является двоеточие. Также оставьте пустым поле “ количество дней от начала эры UNIX, когда был изменён пароль”. Введите 0, 99999 и 7 точно так же, как в представленном выше примере, а все остальные поля оставьте пустыми.
(Для тех, кто думает, что выше показан мой зашифрованный пароль, и верит, что он может вломиться в мою систему, вперёд и с песней. Если вы сможете взломать этот пароль, вы получите пароль к тестовой системе, находящейся за файерволом. Это настолько полезно... :) )
В стандартной системе Slackware все обычные пользователи являются членами группы “users”. Однако при желании вы можете создать новую группу или добавить нового пользователя в дополнительные группы. Для этого вам понадобится отредактировать файл /etc/group. Вот типичная запись из него:
cvs::102:chris,logan,david,root |
Поля: название группы, пароль группы, идентификатор группы и члены группы, разделённые запятыми. Создание группы - это просто добавление новой строки с уникальным идентификатором группы плюс перечисление всех пользователей, которых вы хотите сделать членами этой группы. Все пользователи, входящие в эту новую группу и уже работающие в системе, должны будут выйти и снова войти в систему, чтобы эти изменения вступили в силу.
На данном этапе хорошей идеей было бы использование команд pwck и grpck для проверки корректности сделанных вами изменений. Сначала используйте pwck -r и grpck -r: опция -r
не вносит изменения, а перечисляет изменения, которые вам было бы предложено внести, если бы команда была запущена без этой опции. Вы можете использовать этот вывод для принятия решения о том, нужно ли вам ещё изменять какие-либо файлы перед тем, как запустить pwck или grpck без опции -r
, или просто оставить свои изменения нетронутыми.
Теперь вам следует воспользоваться утилитой passwd для создания рабочего пароля для пользователя. Затем используйте команду mkdir для создания домашнего каталога пользователя в месте, указанном вами в файле /etc/passwd. И, наконец, используйте команду chown для изменения владельца только что созданного каталога для нового пользователя.
Под удалением пользователя подразумевается удаление всех существующих записей для этого пользователя. Удалите запись пользователя из файлов /etc/passwd и /etc/shadow, а также удалите его логин изо всех групп в файле /etc/group. При желании вы можете удалить домашний каталог пользователя, файл почтового спула и его запись в crontab (если таковые существуют).
Удаление групп выполняется аналогично: удалите запись группы в файле /etc/group.