Для чего используется учетная карточка?
А вот это - очень не простой вопрос.
Конечно, основное назначение учетной карточки - зарегистрировать юзера,
чтобы он мог войти в систему и поработать на этой машине.
Однако, существует некоторые нестандартные применения для этого механизма,
в которых используются скорее "побочные эффекты" регистрации пользователя.
Обычные юзеры
Псевдо-юзеры
Почтовые юзеры
"Гостевой вход"
Автоматический запуск коммуникационных программ
Когда обычный юзер заходит в систему (с физического терминала или по сети),
он должен сказать свое имя (Login Name) и пароль (Password). Соответствующая
программа сверяет эти данные с теми, что записаны в учетной карточке и, если
они сопадают, "пускает" юзера в систему. То есть запускается программа,
которая указана как Shell в учетной карточке. Юзер с помощью этой программы
может запускать другие. При этом ему можно создавать/удалять/писать/читать
файлы, которые находятся в его Home dir (которая тоже указана в учетной
карточке).
Часто бывает полезно ограничить некоторым программам (которые запускаются
автоматически - ftp-сервер, www-сервер и т.п.) доступ к файлам и директориям.
Например, вы создаете на своей машине WWW-сервер. Естественно, его
назначение - выдавать в сеть какие-то документы (файлы *.shtml), специально
предназначенные для публичного обозрения. В то же время, не хотелось бы,
чтобы он (из-за возможных ошибок или злонамеренных "закладок" в программе)
мог выдавать наружу другие файлы находящиеся в системе.
В Unix предусмотренно, что права на чтение каждого файла можно связать
с определенным пользователем. Юзер может читать файлы, для которых он
является "хозяином" или "владельцем" (на самом деле разграничение прав
несколько более сложное, но в данном объяснении это не важно). Все остальные
файлы можно сделать для него недоступными.
Таким образом, для решения задачи нужно
- зарегистрировать фиктивного пользователя - например www;
- все файлы, к которым должна иметь доступ программа WWW-сервера, объявить
"собственностью" юзера www (естественно, что ваши секретные файлы должны
быть недоступны этому самому www);
- обяснить системе, что когда запускается программа WWW-сервера, все
должно выглядеть так, как будто его запустил реальный юзер www.
Все остальное сделается автоматически средствами Unix.
Разумеется, при таком подходе никакого реального человека, который
скрывается под именем www может не быть.
Следовательно, в учетной карточке такого фиктивного юзера не нужен
реальный пароль (вместо пароля ставится какая-нибудь абракадабра, так,
чтобы никто не мог даже подобрать его. Точнее, ставится знак "*",
поскольку в настоящих шифрованных паролях такой знак никогда не встречается),
никакой General information, не нужна также Home dir (хотя, иногда
имеет смысл объявить его домашней директорией ту, где лежат его данные)
и Shell.
Особым случаем псевдо-юзера является юзер ftp. Дело в том, что у ftp-сервера
могут быть две задачи. Первая - дать возможность реальным пользователям этой
машины перекачивать свои файлы из этого компьютера (или, наоборот, "вкачивать")
по сети. Вторая - предоставить некую "свалку" файлов всем желающим (то, что
обычно называют "анонимный ftp"). В первом случае каждый реальный юзер
говорит серверу свое имя и пароль и получает доступ к файлам такой же, как
если бы он вошел в систему. Во втором случае, если вы не зарегистрированы
в качестве юзера на этой машине, вы можете сказать, что вы - юзер anonimous
или юзер ftp. В этом случае, программа ftp-сервер проверяет - зарегистрирован
ли в БД учетных карточек псевдо-юзер ftp (именно ftp, а не anonimous) и,
если такой юзер зарегистрирован, то пускает вас в домашнюю директорию
(Home dir) этого юзера, там и должна лежать "свалка" файлов для всех
желающих.
Таким образом, в учетной карточке псевдо-юзера ftp существенным являются
в основном поля Name и Home dir. Остальные, обычно, значения не имеют.
Таких псевдо-юзеров в любой системе существует несколько. Вы можете сами
убедиться, заглянув в /etc/passwd.
В последнее время получил большое распространение способ доставки почты
по протоколу POP. Суть его состоит в том, что почта для конкретного адресата
копится на "почтовом сервере" в его личном "почтовом ящике", а сам адресат
время от времени запускает на любой машине, имеющей доступ по сети к
"почтовому серверу", специальную программу (POP-клиент), которая
связывается с сервером и забирает все письма, накопившиеся в "почтовом ящике".
Если в качестве "почтового сервера" используется Unix-машина, то самым
простым способом обеспечить прием почты и поддержание "почтового ящика"
для конкретного человека - это зарегистрировать его как обычного юзера этой
машины. (Точнее, это единственный стандартный способ.) Кроме того, для
того, чтобы никто посторонний не мог получить доступ к "почтовому ящику",
при соединении с "почтовым сервером" используется процедура аналогичная
входу в систему обычного юзера - то есть POP-клиент должен предьявить
серверу имя и секретный пароль юзера. Причем, обычно, программа POP-сервер
ищет эти имя и пароль в той же базе учетных карточек.
Особенность этой ситуации состоит в том, что человек, который пользуется
этой Unix-машиной как "почтовым сервером", может больше никакого отношения
к ней не иметь. То есть ему нет необходимости заходить на эту машину как
ее пользователю, запускать программы, хранить файлы. Более того, возможно,
администратору и не хотелось бы, чтобы такой юзер имел доступ к чему-либо,
кроме своего "почтового ящика".
Следовательно, в учетной карточке такого юзера нет домашней директории,
или ставится какя-нибудь "левая" директория, одна на всех таких юзеров.
А, самое главное, не должно быть реальной программы Shell. Вместо нее
лучше всего подставить какую-нибудь программу, которя просто напечатает
сообщение типа: "Sorry, вам сюда нельзя" и завершит работу. В качестве
такой программы можно использовать /bin/date - она напечатает текущую дату
и завершится.
Кстати, если поле Shell в учетной карточке просто оставить пустым, то
система все равно впустит юзера и даст ему "исполнителя комманд" /bin/sh.
Поскольку, вместо Shell (программы, которая автоматически запускается
для вошедшего юзера) можно использовать любую программу, можно сделать
небольшую информационную систему для публичного просмотра. Для этого
регистрируется пользователь, например, guest (гость). В качестве Shell
у этого юзера должна быть программа, которая позволяет просмотреть
документы, предназначенные для публики (какя-нибудь BBS, www-browser или
другая, специально для этого написанная программа). Естественно, надо
принять меры предосторожности, чтобы эта программа не могла прочитать
другие файлы из вашего компьютера и не могла записать ничего лишнего
на диск.
Особенностью такого юзера является то, что у него должен быть
необычный Shell, домашней директории может и не быть (это зависит от той
информационной программы), и, главное, может не быть пароля (все равно,
если он есть, придется сообщить его всем желающим).
Если к компьютеру подкючен модем, он может оказывать различные
услуги через телефонные линии (BBS, прием/передачу e-mail, IP-доступ
и т.п.). Если один и тот же телефонный вход используется для различных
услуг, то возникает проблема - как обеспечить запуск различных
коммуникационных программ для разных клиентов.
Одно из решений заключается в следующем. Для каждой возможной услуги
регистрируется пользователь, у которого в качестве Shell указывается
соответствующая коммуникационная программа.
Например, можно зарегистрировать пользователей:
UUCPuser - для которого запускается программа uucico (из пакета uucp),
PPPuser - для которого запускается драйвер, для связи по протоколу PPP,
SLIPuser - для которого запускается драйвер, для связи по протоколу SLIP.
Теперь, если клиент, позвонивший на модем, введет в качестве Login
name PPPuser (например), то для него на этом конце модемной линии
включится драйвер PPP и он получит IP доступ по этому протоколу.
Кроме того, любой Unix, всегда запоминает время, когда юзер вошел в
систему и когда закончил работу. Поэтому, если каждому клиенту дать
отдельное имя (и, естественно, секретный пароль), то можно легко вести
статистику - сколько времени каждый клиент занимал ваш телефон.
Особенностью учетной карточки такого юзера, как и в предыдущем случае,
является нестандартный Shell. Может отсутствовать Home dir (это зависит
от коммуникационной программы, некоторые из них пытаются извлечь некоторые
настроечные данные из домашней директории юзера).
Иван Паскаль pascal@tsu.ru