Как администрировать юзеров и регулировать доступ к файлам?
Для этого есть специальные утилиты, например, adduser. Но эти
утилиты слишком умные: например, копируют стандартные инициализационные
файлы в домашнюю директорию пользователя, а я считаю, что сам могу решить,
что надо копировать, а что - нет.
Базовый файл - /etc/master.passwd, из него получаются
/etc/passwd (общедоступный список пользователей), /etc/spwd.db
(база пользователей) и /etc/pwd.db (база паролей). Для добавления и
удаления юзеров, а также для изменения некоторых параметров можно использовать
команду vipw (как следует из ее названия, она запускает редактор
vi или другой, если установлена переменная окружения EDITOR).
Но я предпочитаю deco, а затем даю команду pwd_mkdb
master.passwd. (Внимание - это можно делать только если гарантируется,
/etc/что никто другой не будет редактировать файл в это время! vipw
блокирует запуск другого экземпляра этой (но не другой) программы
администрирования юзеров.)
В файле master.passwd на каждого юзера отведено по одной строке. Каждая строка состоит из полей:
Имя пользователя задействовано во множестве мест, в т.ч. в терминальном
входе (при работе на машине с Unix как на рабочей станции), в почтовом обмене
(как имя отправителя и получателя), а также в доступе по FTP и Samba. Во всех
случаях используется один и тот же пароль.
Пароль шифруется алгоритмом, который не позволяет расшифровать обратно,
а при входе в систему сравниваются зашифрованный пароль из базы паролей и
свежезашифрованный введенный пользователем пароль. Сменить пароль можно
командой passwd имя_юзера; если дать просто команду passwd,
это относится к тому имени, под которым сейчас работаем; обычный юзер
(не супервизор) должен сначала ввести старый пароль, и если система сочтет
его пароль недостаточно секретным (слишком короткий, содержит только строчные
буквы), то не примет его. Пароль надо вводить дважды, причем вслепую -
обычные меры безопасности, принятые нынче во всех системах.
Пустой пароль при шифрации превращается в пустую строку, так что
если надо убрать пароль, нужно стереть его ручками (ввод пустого пароля
рассматривается как отказ от изменений). Никакой пароль не превращается
в звездочку "*", это используется как запрет входить под таким именем.
Отсутствие пароля (пустой пароль) приводит к отказу некоторых осторожных
сервисов работать с этим пользователем.
UID идентифицирует права пользователя на файлы и процессы (а не имя!).
Таким образом, второй account с тем же UID будет лишь alias для первого (т.е.
оба account'а будут иметь идентичные права). /* Переводите с английского сами,
я не могу. */ Этот UID будет присвоен всем файлам и директориям, созданным
юзером. Изменить UID файла может только супервизор (пользователь с UID=0).
GID также будет присвоен всем файлам и директориям, созданным юзером.
Юзер может входить в несколько групп, если это прописано в /etc/group.
Со следующими тремя полями я не разбирался.
Комментарий используется в строке "From:" в письмах, отправляемых
командой mail, сообщается командой finger.
Домашняя директория становится текущей и записывается в переменную HOME
при терминальном входе, в ней лежат настроечные файлы ко многим программам.
Также является корневой при подключении по Samba ресурса homes.
Shell - для терминальных пользователей как правило /bin/sh,
/bin/csh или /bin/bash. Для почтового обмена по UUCP -
/usr/libexec/uucp/uucico. Для тех, кому надо предоставить только
специфический доступ (например, POP3 и Samba) ставится /usr/bin/passwd
и единственной возможностью при входе терминалом или по Telnet для них будет
смена пароля. Для пользователей, которые никогда не будут работать (т.н.
псевдопользователей) ставится несуществующий /none или безобидный
/bin/false.
Если shell, указанный пользователю, не прописан в файле
/etc/shells, то многие сервисы (например, ftpd и pcnfsd)
будут рассматривать такого пользователя как нежелательного.