Операционные системы - статьи

Как администрировать юзеров и регулировать доступ к файлам?


Для этого есть специальные утилиты, например, adduser. Но эти

утилиты слишком умные: например, копируют стандартные инициализационные

файлы в домашнюю директорию пользователя, а я считаю, что сам могу решить,

что надо копировать, а что - нет.

Базовый файл - /etc/master.passwd, из него получаются

/etc/passwd (общедоступный список пользователей), /etc/spwd.db

(база пользователей) и /etc/pwd.db (база паролей). Для добавления и

удаления юзеров, а также для изменения некоторых параметров можно использовать

команду vipw (как следует из ее названия, она запускает редактор

vi или другой, если установлена переменная окружения EDITOR).

Но я предпочитаю deco, а затем даю команду pwd_mkdb

master.passwd. (Внимание - это можно делать только если гарантируется,

/etc/что никто другой не будет редактировать файл в это время! vipw



блокирует запуск другого экземпляра этой (но не другой) программы

администрирования юзеров.)

В файле master.passwd на каждого юзера отведено по одной строке. Каждая строка состоит из полей:

  • имя пользователя (вводится на приглашение login:)

  • закодированный пароль

  • UID (User IDenteficator), число

  • GID (Group IDenteficator), число

  • User's general classification (в 2.0 не использовалось, в 2.2.2 вроде уже задействовано).

  • Password change time (у меня в этом поле всегда ноль)

  • Account expiration time

  • комментарий; обычно - полное имя пользователя

  • home (домашняя директория)

  • shell (программа, запускаемая при входе с терминала)

    Имя пользователя задействовано во множестве мест, в т.ч. в терминальном

    входе (при работе на машине с 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)

    будут рассматривать такого пользователя как нежелательного.


    Содержание раздела