Зачем распределять пользователей по группам?
В Solaris есть ряд предопределенных групп. Большинство из них
созданы для запуска системных процессов от имени этих групп. Одна из
групп – staff – предназначена для того, чтобы ее членами были все
обычные пользователи, которым разрешена интерактивная работа с системой
Solaris. Некоторые приложения (например, sendmail или СУБД Oracle)
требуют создания специфических групп с определенными именами. При
необходимости вы можете создать новую группу и назначить ее в качестве
главной или дополнительной группы тем пользователям, которым следует
делегировать некие одинаковые (для группы) права.
Группа staff часто является главной группой большинства пользователей.
При добавлении пользователя с помощью команды useradd пользователь
попадает в группу other, если явно не указано иное. Эта группа
имеет идентификатор 1.
Смысл разделения пользователей на группы обсуждался ранее в
лекции 3. При необходимости изменения учетной записи пользователя
следует воспользоваться программами управления этими записями. Они
описаны ниже в разделе "Программы управления учетными записями
пользователей".
Когда вы планируете распределить пользователей по группам, удобно
назначить им в качестве главной группы такую, которая бы соответствовала
их основной роли в системе. Например, те пользователи, чья
работа с системой будет ограничена получением почты из почтовых ящиков,
должны быть отнесены к группе pop3 или imap4. Удобно дать таким
группам имена, по которым вы сразу можете вспомнить, ради чего эта
учетная запись вообще появилась в системе.
Представьте – после четвертой чашки кофе ваш взгляд упирается
в файл /etc/passwd и в мозгу начинает неотвязно биться мысль: нет ли в
системе лишних пользователей? Может быть, завалялись какие-нибудь
устаревшие учетные записи и их можно вычистить? Открыв /etc/passwd,
вы видите несколько сотен пользователей, полтора года назад отнесенных
к группе pop3. Ага, догадываетесь вы, эти забирают почту с нашего сервера.
А вот эти, из группы oldlamer, что тут делают?
После того, как пользователям назначена главная группа, каждый из
них может быть добавлен в другие группы. Все группы, кроме главной, в
которых участвует пользователь, называются дополнительными для этого
пользователя. Для добавления пользователя в дополнительные группы
следует использовать программы управления учетными записями. Эти
программы изменяют файл /etc/group, так как именно этот файл хранит
информацию о дополнительных группах пользователей. С другой стороны, вы можете вручную исправить запись о группе в /etc/group, указав в
ее последнем поле через запятую тех пользователей, которых собираетесь
добавить в эту группу, вот так:
sys::3:root,bin,adm,skomorox
Концепция безопасности UNIX
Вся система безопасности UNIX изначально строилась на трех
китах: разделение всех пользователей по отношению к объекту на владельца
объекта, группу объекта и всех остальных, назначение им прав
доступа по отдельности и обязательное наличие у каждого объекта владельца
и группы.
В современных системах UNIX для большей гибкости прав доступа
введены дополнительные свойства объектов, такие, как флаги для файлов
и каталогов, списки управления доступом (ACL) для файлов и каталогов,
аутентификация и авторизация с использованием различных служб
аутентификации подобных TACACS и RADIUS, а также модули аутентификации
и авторизации (pluggable authentication modules – PAM). В этой
книге TACACS и RADIUS не рассматриваются, а технология и настройки
PAM обсуждаются в лекции 8 курса "Системное администрирование ОС Solaris 10".
Естественно, надежность усовершенствованной системы безопасности
снизилась, а сложность администрирования выросла, как и при
любом другом усложнении любой системы. Так что бесплатных пряников
и в печи UNIX по-прежнему не пекут: чем более гибко настраивается
система, тем внимательнее надо быть администратору при настройке.
Тем не менее, для начала познакомимся с классической концепцией
безопасности, так как все остальные дополнения представляют собой
лишь надстройку над ней.
Объект
Объектом в контексте разговора о безопасности мы называем файл,
каталог или процесс. Файл и каталог записаны на некий носитель, их
свойства хранятся на том же носителе. Процесс запущен в памяти системы,
его свойства возникают при запуске процесса, существуют вместе
с ним, пока он работает, и исчезают, как только процесс завершается.
Вообще говоря, одну и ту же программу можно запустить с совершенно
разными свойствами.
Разделение всех пользователей по отношению к объекту
У каждого объекта есть владелец. Это – один из пользователей данной
системы UNIX. Появление объектов, которыми владеют пользователи, не
зарегистрированные в данной системе, – это ошибка системного администратора.
Такое может произойти при разархивировании файла, созданного
в другой системе. Если вместе с файлом была сохранена информация
о его владельце, то легко может оказаться, что в другой системе
есть пользователь с таким идентификатором (UID), а в нашей – нет.
Обратите внимание: для системы важны не имена пользователей, а
их идентификаторы. Если в чужой системе есть пользователь ivan с UID,
равным 1000, а в нашей ivan имеет UID, равный 2001, то при переносе
файла с чужой системы к нам с сохранением информации о владельце
файла в нашей системе появится "бесхозный" файл, если у нас нет пользователя
с UID 1000, или принадлежащий тому пользователю, чей это
UID, если такой найдется.
Право владения объектом в UNIX передается по наследству от процесса
к процессу, а при создании файла или каталога его владельцем становится
тот пользователь, от чьего имени запущен процесс, создавший
файл или каталог.
Однако, в ряде случаев запускаемый процесс будет принадлежать не
тому, кто запустил процесс-родитель, а иному пользователю. Например,
при входе пользователя в систему он сообщает имя и пароль программе
login. Она работает от имени root (т.е. ее владельцем является пользователь
root). Но программа login запускает для пользователя командный
интерпретатор так, чтобы владельцем процесса командного интерпретатора
был сам входящий в систему пользователь.
Любой объект имеет не только владельца, но и группу. Иногда владельца
называют "хозяином", а группу – "группой владельца", "групповым
владельцем", "групповым хозяином" и т.п. Смысл этого понятия в
том, что каждому объекту в UNIX сопоставляется не только UID (user
identificator), который идентифицирует владельца объекта, но и GID
(group identificator), который идентифицирует группу пользователей,
имеющую особые права на объект.
Таким образом реализуется разделение всех пользователей по отношению
к объекту на владельца объекта, группу, имеющую особые права на
объект и всех остальных. Группу, обладающую особыми правами на объект,
мы будем называть группой объекта. Соответственно, мы будем говорить
о группе файла, группе каталога или группе процесса. При этом надо помнить,
что группа файла – это не группа, в которую входит файл или его
владелец. В общем случае это – произвольная группа, объединяющая произвольных
пользователей и имеющая особые права на этот объект.
Назначение прав доступа по отдельности
Владельцу файла, группе файла и всем остальным пользователям могут
быть по отдельности назначены разные права доступа к файлу. То же справедливо
и в отношении каталога. Так реализуется назначение прав доступа
к объекту в отдельности его владельцу, группе и "всем остальным".
Последних в документации и профессиональных разговорах иногда
называют world ("мир"), имея в виду "вообще всех остальных пользователей
этого компьютера". Этот термин происходит из далеких времен, когда
компьютеров было мало, а пользователей у одного компьютера – очень
много, и администратор мог гордо говорить о них – "мой мир".
Каждый объект имеет владельца и группу
Любой файл, каталог или процесс имеет владельца и группу. Это
означает, что файлу, каталогу и процессу обязательно сопоставлены два
идентификатора, которые называются UID (user ID) и GID (group ID)
соответственно. Администрировать систему легче, если все объекты
имеют UID и GID из числа представленных в /etc/passwd и /etc/group
соответственно. "Бесхозные" объекты вносят сумятицу в стройные ряды
прав доступа и делают права доступа к ним владельца и группы бессмысленными,
ведь никто из пользователей не может получить "чужое" право
доступа.
Структура файлов /etc/passwd, /etc/shadow, /etc/group
Файлы /etc/passwd и /etc/group в Solaris имеют такой же формат, как
и в других системах UNIX, а файл /etc/shadow одинаков для всех систем
ветви System V. Рассмотрим примеры файлов (для этого потребуется
посмотреть содержимое упомянутых файлов командой cat или командой more ):
Учетные записи пользователей
cat /etc/passwd
root:x:0:1:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
smmsp:x:25:25:SendMail Message Submission Program:/:
listen:x:37:4:Network Admin:/usr/net/nls:
nobody:x:60001:60001:Nobody:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x Nobody:/:
col:x:100:1::/home/col:/bin/sh
temp:x:101:1::/home/temp:/bin/sh
qaz:x:102:1::/home/qaz:/bin/sh
Termos:x:103:1::/home/Termos:/usr/bin/bash
Файл состоит из записей, каждая из которых описывает одного
пользователя и занимает одну строку. Поля записей разделяются двоеточиями.
Первое поле – имя пользователя в системе. Это имя пользователь
вводит для входа в систему. Имя в Solaris должно иметь длину от 2 до 8
символов и содержать только латинские буквы и цифры. Имя пользователя
в Solaris может содержать прописные латинские буквы, однако из
соображений совместимости с другими системами UNIX рекомендуется
использовать только строчные (маленькие) буквы.
Второе поле – признак наличия пароля. Пустое поле означает отсутствие
пароля. Для фактического отсутствия пароля у пользователя необходимо,
кроме того, чтобы второе поле в файле /etc/shadow в описании
этого пользователя имело значение NP.
Третье поле – идентификатор пользователя, UID.
Четвертое поле – идентификатор главной группы пользователя, GID.
Пятое поле (иногда его называют GECOS) – описание пользователя.
Обычно оно содержит полное имя пользователя (имя и фамилию) и координаты
для связи с ним – номер офиса, адрес, телефон или пейджер.
Шестое поле – домашний каталог пользователя. При интерактивном
входе в систему пользователь попадает именно в этот каталог сразу
после успешного входа. Кроме этого, некоторые сетевые службы (например,
ftpd) требуют, чтобы у каждого пользователя, пытающегося получить
доступ к сетевой службе, был "честный", т.е. на самом деле существующий
и доступный для пользователя домашний каталог.
Седьмое поле – командный процессор, который будет запущен для
пользователя при интерактивном входе в систему. Некоторые сетевые
службы (например, ftpd) требуют, чтобы у каждого пользователя, пытающегося
получить доступ к сетевой службе, был существующий в системе
на самом деле командный процессор. Файл /etc/shells описывает
доступные в системе командные процессоры, которые следует назначать
пользователям. Сразу после установки системы файл /etc/shells не
существует. Системный администратор должен создать его вручную, если он
требуется для каких-то программ в системе, например, для ftpd.
Относительно содержания поля GECOS следует сделать несколько
замечаний.
Поле GECOS часто называют полем комментария, и это верно: в нем
следует записывать контактную информацию о пользователе. Системному
администратору ничего не скажет строка в файле протокола, которая свидетельствуюет
о проблеме, вызванной работой пользователя ikonst34. Кто это?
Иван Константинович из планового отдела или Илья Константинов из технического?
Или это Иконников Станислав из филиала 34? Чтобы не мучаться
ассоциациями, навеянными именем пользователя, а точно знать, кто скрывается
за лаконичным username, следует заполнять поле комментария.
Каждый элемент этого поля (например, полное имя, номер комнаты
в офисе, контактный телефон) принято отделять от других запятой, но это
необязательное требование. В настоящее время, к сожалению, не существует
строго определенного правила заполнения поля комментария. Хорошим
стилем является указание в этом поле следующей информации:
полные фамилия, имя и (если это необходимо для однозначной идентификации) отчество пользователя или, если это учетная запись предопределенного псевдопользователя типа bin, полное название приложения, использующего эту запись;
номер комнаты и ее местоположение, или контактное лицо, ответственное за запуск приложения, использующего запись;
рабочий телефон;
другая контактная информация (пейджер, факс, мобильный телефон и т.п.).
Не всегда требуется указывать всю эту информацию. На деле достаточно
иметь ровно столько сведений, сколько требуется системному администратору
для однозначной идентификации владельца учетной записи.
Пожалуйста, только имейте в виду – не одному-единственному конкретному
системному администратору, а любому администратору, которому придется
управлять созданной вами системой. Вдруг нынешний системный
администратор уволится или уедет в отпуск? Сможет ли его преемник или
заместитель быстро разобраться в записях в /etc/passwd? Делайте записи в
поле комментария полезными сведениями, а не отписками.
Например, можно ожидать нечто вроде следующих записей в /etc/passwd:
root:*:0:0:Root – Michael Kruglov, room 601, 89119119111:/root:/bin/bash
ftp:*:23:1:FTP Admin, Andrei Nezvanyi, 9733333:/home/ftp:/bin/bash
apache:*:404:40:Web Master, Elena Osatanenko,1001010:/usr/local/httpd:/bin/sh
Последнее, что следует сказать о поле GECOS: почему оно так называется.
В свое время компания General Electric владела компьютером, операционной
системой которого была GECOS (General Electric Comprehensive
Operating System). Компьютеры под управлением UNIX использовались
для подготовки задач печати для этого компьютера. Изначальным назначением
поля комментария было хранение идентификационной информации
для задач, которые были предназначены для системы GECOS.
cat /etc/shadow
root::6445::::::
daemon:NP:6445::::::
bin:NP:6445::::::
sys:NP:6445::::::
adm:NP:6445::::::
lp:NP:6445::::::
uucp:NP:6445::::::
nuucp:NP:6445::::::
smmsp:NP:6445::::::
listen:*LK*:::::::
nobody:NP:6445::::::
noaccess:NP:6445::::::
nobody4:NP:6445::::::
col:9NvfZSaIQgcQk:12435::::::
temp:*LK*:::::::
qaz:v.srD227fHRx2:12448::::::
Termos:o3HzHXFopdwbU:::::::
Этот файл тоже описывает пользователей. В нем хранятся зашифрованные
пароли пользователей. Формат файла таков:
первое поле – имя пользователя;
второе поле – зашифрованный пароль, *LK* означает, что учетная запись заблокирована (locked), а NP – что пароль отсутствует (no password);
третье поле – число дней между 1 января 1970 года и датой последнего изменения пароля;
четвертое поле – минимальное количество дней, которое должно пройти от одной смены пароля до другой;
пятое поле – максимальное количество дней, которое пароль считается действительным; по истечении этого количества дней система попросит ввести новый пароль, так как старый утратит силу;
шестое поле – количество дней, за которое система предупредит пользователя о необходимости смены пароля;
седьмое поле – количество дней, которое пользователь может не работать в системе и считаться активным; по истечении этого количества дней учетная запись автоматически блокируется;
восьмое поле – дата, до которой учетная запись считается действительной; после этой даты пользователь не сможет войти в систему;
девятое поле зарезервировано и сейчас не используется.
Данный формат /etc/shadow характерен как для Solaris, так и для
других подобных System V систем UNIX, например, для Linux.
В /etc/shadow обязательно присутствуют только первые три поля в
каждой записи, остальные могут отсутствовать – все или часть из них.
Рекомендуется не вносить исправления в /etc/shadow вручную, а делать
это с помощью программ smc, usermod, useradd, passwd. Однако, в одном
случае – если вы забыли пароль root – придется исправлять /etc/shadow в
текстовом редакторе.
Пользовательские файлы конфигурации
У каждого пользователя в домашнем каталоге есть несколько файлов
конфигурации. Обычно присутствуют файлы конфигурации командного
процессора. Если в системе используется несколько командных процессоров, имеет смысл сделать такие файлы конфигурации для каждого
из них; о разных файлах конфигурации командных процессоров см.
лекцию 11. Кроме них, могут быть файлы конфигурации графической
среды (.Xsession и другие), файлы конфигурации почтовой системы (.elm,
.forward и другие), файлы с историей команд (.history, .bash_history) и
прочие. Их объединяет то, что их имена практически всегда начинаются
с символа "." (точка). Можно увидеть их в списке файлов каталога, если
дать команду
ls -a
Пользовательские файлы конфигураций создаются заранее системным администратором. Стандартные пользовательские файлы конфигураций по умолчанию поставляются вместе с операционной системой и в
Solaris располагаются в /etc/skel (от слова skeleton – скелет, т.е. основа).
При создании нового пользователя они автоматически копируются из
каталога /etc/skel в домашний каталог нового пользователя. При
создании нового пользователя или модификации существующей учетной
записи можно указать другой каталог с файлами конфигурации, чтобы
копировать не файлы по умолчанию, а другие файлы. Их предварительно
следует создать и модифицировать в соответствии с желаемыми настройками
для новых пользователей.
Модификация файлов в каталоге /etc/skel повлияет только на
настройки новых пользователей, которые будут созданы после модификации
этих файлов.
Мы будем далее называть /etc/skel каталогом базовых пользовательских
файлов конфигурации. После того, как пользователь войдет
в систему, он может изменить настройки, сделанные для него в файлах
конфигурации, или добавить новые, если системный администратор не
запретил ему запись в файлы конфигурации.
Группы пользователей
Группы, определенные в системе, перечислены в файле /etc/group.
В системе могут быть определены и другие группы, если для аутентификации
и авторизации помимо файлов /etc/passwd и /etc/group используются
и другие источники (например, каталог LDAP – см. лекцию 8 курса "Системное администрирование ОС Solaris 10").
cat /etc/group
root::0:root
other::1:
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
staff::10:
daemon::12:root,daemon
sysadmin::14:
smmsp::25:smmsp
nobody::60001:
noaccess::60002:
nogroup::65534:
Первое поле – имя группы.
Второе поле – зашифрованный пароль; это устаревшее поле – в настоящее время нет команды, которая бы позволила установить пароль на группу,
и обычно нет необходимости это делать. Если все же такая необходимость
появится, то можно установить требуемый пароль какому-нибудь пользователю с помощью программы passwd, а затем копировать поле пароля
из /etc/shadow в /etc/group. Пароль группы используется в Solaris только
программой newgrp. Эта программа требуется для изменения эффективного
группового идентификатора пользователя в ходе его интерактивной работы.
Если группа, которой соответствует новый групповой идентификатор,
имеет пароль, то программа newgrp его запросит.
Третье поле – идентификатор группы (GID). Этот идентификатор
должен быть уникальным в пределах системы, а в случае использования
общих файлов групп и паролей – в пределах всей сети организации.
Номера от 0 до 99 и от 60001 до 60002 зарезервированы для системных
групп. Создавайте свои группы с идентификаторами от 100 до 60000
включительно.
Четвертое поле – список пользователей через запятую; для этих
пользователей данная группа будет являться дополнительной. В Solaris
принято по умолчанию, что один пользователь может принадлежать не
более чем к 15 дополнительным группам.
Программы управления учетными записями пользователей
Для управления учетными записями следует использовать программу smc или users-admin при работе в графическом режиме или программы useradd, usermod, userdel, groupadd, groupmod, groupdel в текстовом режиме
или в окне терминала.
Solaris Management Console
В системах Solaris 9 (до мая 2002 года) для управления учетными
записями пользователей было возможно применять программу admintool
(рис 5.1). В системах Solaris 8 и более ранних программа admintool
также использовалась для управления пакетами ПО. Сейчас программа
admintool считается устаревшей и в состав системы не входит. Вместо
нее следует пользоваться Solaris Management Console (SMC) или иной
программой, обычно являющейся инструментом графической среды.
Этот инструмент называется /usr/bin/users-admin. В графической среде
GNOME его можно вызвать из меню "Администрирование->Пользователи и группы" (рис 5.2).
Коротко опишем, как именно можно управлять пользователем в smc
(рис 5.2).
Выбрав из списка одного пользователя (рис 5.3), можно установить
любые из свойств, перечисленных выше, при рассмотрении формата
файлов /etc/passwd, /etc/shadow и /etc/group. Если же вы хотите добавить
пользователя, следует воспользоваться кнопкой "Add user with Wizard"
(рис 5.3).
(рис 5.1) Окно устаревшей программы admintoolЛюбая программа типа smc для работы со свойствами учетной
записи пользователя в графическом режиме все равно вызывает простые
системные программы с интерфейсом командной строки для выполнения
любых операций с этими свойствами. В Solaris для создания
новой учетной записи пользователя (добавления пользователя в систему)
используется программа useradd, для модификации учетной записи пользователя
– usermod, для удаления учетной записи – userdel.

(рис 5.3) Вызов users-admin(рис 5.2) Окно Solaris Management Console
(рис 5.4) Управление учетными записями с помощью Solaris Management Console (smc)
useradd
Для добавления нового пользователя следует выполнить команду useradd:
При добавлении пользователя с помощью команды useradd пользователь
попадает в группу other, если явно не указано иное. Эта группа
имеет идентификатор 1.
При добавлении пользователя в Solaris происходит добавление соответствующей
строки в файлы /etc/passwd, /etc/shadow и /etc/user_attr.
Первые два файла нам уже знакомы. Последний служит для записи дополнительных
атрибутов пользователя. Он используется только в Solaris, в
других системах UNIX такого файла нет. К дополнительным атрибутам
относятся административные права, данные этому пользователю, перечень
ролей, назначенных пользователю, и указание на то, является ли
эта учетная запись пользователя информацией о реальном пользователе
или информацией о роли. Для более детального понимания ролей следует
изучить лекцию 9 курса "Системное администрирование ОС Solaris 10", для получения детальной
информации – /etc/user_attr – man по user_attr.
По умолчанию useradd добавляет учетную запись пользователя в
файлы /etc/passwd и /etc/shadow. Кроме этого, при указании ключа –G
запись о пользователе помещается в /etc/group в строку тех групп, которые
указываются в качестве дополнительных для него. С помощью ключа –m
можно указать, что для пользователя следует создать домашний каталог.
Новые учетные записи пользователей остаются блокированными до
тех пор, пока пользователю не будет назначен пароль с помощью программы passwd.
Имя пользователя или роли не может быть длиннее 8 символов, и
должно содержать только латинские символы, цифры, точку, знак
подчеркивания и дефис. Точка является допустимым символом не для всех
систем UNIX, поэтому ее не рекомендуется использовать в Solaris в
целях совместимости, хотя это требование не является жестким. Первый
символ имени должен быть буквой, по крайней мере один символ в имени
должен быть буквой нижнего регистра.
Следующие ключи изменяют значения свойств учетной записи пользователя,
которые задаются по умолчанию в отсутствие этих ключей:
-b base_dirкаталог, в котором должен быть создан домашний каталог пользователя;
не требуется указывать, если используется ключ –d ;
-c commentполе GECOS общей информации о пользователе; как минимум,
следует указать полное имя пользователя;
-d dirдомашний каталог пользователя; по умолчанию создается в
каталоге /home и носит то же имя, что и пользователь (для
пользователя lena создается домашний каталог /home/lena );
-Dпоказать значения по умолчанию для группы, системного
каталога для домашних каталогов, каталога базовых пользовательских
файлов конфигурации, командного процессора и ряда
других свойств.
Значения по умолчанию, принятые в системе, перечислены в
таблице 5.1.
Значения свойств учетной записи пользователя по умолчанию
| группа |
other (GID =1) |
| каталог с домашними каталогами пользователей |
/home |
| командный процессор |
/bin/sh |
| профиль |
не назначается |
| роль |
не назначается |
-e expireдата истечения срока действия учетной записи; формат даты
определен, как рассказано в man 3C getdate; по умолчанию не
задано, после наступления этой даты пользователь не сможет
войти в систему; используется для создания учетных записей
временных сотрудников или гостей;
-f inactiveмаксимальное число дней, в течение которых пользователь
может не входить в систему; по истечении этого срока учетная
запись блокируется; удачное решение для забывчивых системных
администраторов, которые не удаляют учетные записи при
увольнении сотрудника, позволяет бороться с накоплением
"мертвых душ в системе";
-g groupглавная группа пользователя, по умолчанию – other; подробности настройки групп по умолчанию см. в man useradd ;
-k skel_dirкаталог с базовыми пользовательскими файлами конфигураций; указанный каталог должен существовать, копии всех
содержащихся в нем файлов будут помещены в домашний каталог нового пользователя. По умолчанию – /etc/skel ;
-mтребует создать домашний каталог нового пользователя; если
каталог уже есть, у главной группы пользователя должно быть
право на чтение, запись и поиск в этом каталоге (права доступа
к файлам и каталогам обсуждаются в лекции 7);
-oразрешить пользователю иметь uid, совпадающий с uid существующего
пользователя; может использоваться для дублирования
учетной записи root. Это может понадобиться для того,
чтобы от имени пользователя root входить в систему только в
экстренных случаях, а обычно пользоваться другой учетной
записью. Во FreeBSD для этого по умолчанию предоставляется
учетная запись toor (root наоборот). Это может быть удобно,
например, для назначения администратору командного процессора,
отличного от /bin/sh, например, /usr/local/bin/bash.
Назначить такой командный процессор пользователю root
нельзя, т.к. его командный процессор должен работать даже
тогда, когда доступна только файловая система /, а /usr даже не
смонтирована;
-s shellполное имя файла, который будет назначен пользователю в
качестве командного процессора при входе в систему; файл
должен существовать;
-u uidявное указание значения UID.
Ряд ключей, служащих для управления ролями, обсуждается в лекции 13 курса "Системное администрирование ОС Solaris 10".
Для изменения свойств пользователя следует запускать программу usermod. Ее синтаксис предполагает явное задание изменяемого свойства,
а не интерактивного взаимодействия. При запуске без ключей только с
указанием имени пользователя, чью учетную запись мы желаем изменить,
программа usermod выдает сообщение об ошибке и краткую подсказку
по использованию:
usermod ivan
UX: usermod: ERROR: Invalid syntax.
usage: usermod -u uid [-o] | -g group | -G group[[,group]...] |
-d dir [-m] | -s shell | -c comment |
-l new_logname | -f inactive | -e expire
-A authorization [, authorization ...] |
-P profile [, profile ...] | -R role [, role ...]
login
Для удаления пользователя используйте userdel.
Для добавления группы следует использовать groupadd, для удаления
– groupdel ; для изменения учетной записи группы – groupmod.
Упражнения
Добавьте учетную запись пользователя lover с помощью useradd. В какую группу попал пользователь lover? Изменился ли файл /etc/group? Объясните, почему.
Удалите учетную запись lover с помощью admintool.
Добавьте пользователя hardworker в группу staff с помощью admintool. Удалось ли добавить пользователя с таким именем? Если нет, выясните причину и, если потребуется, измените вызвавшее проблему условие.
Измените главную группу этого пользователя на other, но сохраните его в качестве члена группы staff. Пришлось ли внести какие-то изменения в файл /etc/group?
Изучите содержимое файла /etc/shadow. Установите новый пароль
какому-нибудь пользователю. Изменилось ли содержимое /etc/shadow? А
файла /etc/passwd?
Зачем распределять пользователей по группам?
В Solaris есть ряд предопределенных групп. Большинство из них
созданы для запуска системных процессов от имени этих групп. Одна из
групп – staff – предназначена для того, чтобы ее членами были все
обычные пользователи, которым разрешена интерактивная работа с системой
Solaris. Некоторые приложения (например, sendmail или СУБД Oracle)
требуют создания специфических групп с определенными именами. При
необходимости вы можете создать новую группу и назначить ее в качестве
главной или дополнительной группы тем пользователям, которым следует
делегировать некие одинаковые (для группы) права.
Группа staff часто является главной группой большинства пользователей.
При добавлении пользователя с помощью команды useradd пользователь
попадает в группу other, если явно не указано иное. Эта группа
имеет идентификатор 1.
Смысл разделения пользователей на группы обсуждался ранее в
лекции 3. При необходимости изменения учетной записи пользователя
следует воспользоваться программами управления этими записями. Они
описаны ниже в разделе "Программы управления учетными записями
пользователей".
Когда вы планируете распределить пользователей по группам, удобно
назначить им в качестве главной группы такую, которая бы соответствовала
их основной роли в системе. Например, те пользователи, чья
работа с системой будет ограничена получением почты из почтовых ящиков,
должны быть отнесены к группе pop3 или imap4. Удобно дать таким
группам имена, по которым вы сразу можете вспомнить, ради чего эта
учетная запись вообще появилась в системе.
Представьте – после четвертой чашки кофе ваш взгляд упирается
в файл /etc/passwd и в мозгу начинает неотвязно биться мысль: нет ли в
системе лишних пользователей? Может быть, завалялись какие-нибудь
устаревшие учетные записи и их можно вычистить? Открыв /etc/passwd,
вы видите несколько сотен пользователей, полтора года назад отнесенных
к группе pop3. Ага, догадываетесь вы, эти забирают почту с нашего сервера.
А вот эти, из группы oldlamer, что тут делают?
После того, как пользователям назначена главная группа, каждый из
них может быть добавлен в другие группы. Все группы, кроме главной, в
которых участвует пользователь, называются дополнительными для этого
пользователя. Для добавления пользователя в дополнительные группы
следует использовать программы управления учетными записями. Эти
программы изменяют файл /etc/group, так как именно этот файл хранит
информацию о дополнительных группах пользователей. С другой стороны, вы можете вручную исправить запись о группе в /etc/group, указав в
ее последнем поле через запятую тех пользователей, которых собираетесь
добавить в эту группу, вот так:
sys::3:root,bin,adm,skomorox
Концепция безопасности UNIX
Вся система безопасности UNIX изначально строилась на трех
китах: разделение всех пользователей по отношению к объекту на владельца
объекта, группу объекта и всех остальных, назначение им прав
доступа по отдельности и обязательное наличие у каждого объекта владельца
и группы.
В современных системах UNIX для большей гибкости прав доступа
введены дополнительные свойства объектов, такие, как флаги для файлов
и каталогов, списки управления доступом (ACL) для файлов и каталогов,
аутентификация и авторизация с использованием различных служб
аутентификации подобных TACACS и RADIUS, а также модули аутентификации
и авторизации (pluggable authentication modules – PAM). В этой
книге TACACS и RADIUS не рассматриваются, а технология и настройки
PAM обсуждаются в лекции 8 курса "Системное администрирование ОС Solaris 10".
Естественно, надежность усовершенствованной системы безопасности
снизилась, а сложность администрирования выросла, как и при
любом другом усложнении любой системы. Так что бесплатных пряников
и в печи UNIX по-прежнему не пекут: чем более гибко настраивается
система, тем внимательнее надо быть администратору при настройке.
Тем не менее, для начала познакомимся с классической концепцией
безопасности, так как все остальные дополнения представляют собой
лишь надстройку над ней.
Объект
Объектом в контексте разговора о безопасности мы называем файл,
каталог или процесс. Файл и каталог записаны на некий носитель, их
свойства хранятся на том же носителе. Процесс запущен в памяти системы,
его свойства возникают при запуске процесса, существуют вместе
с ним, пока он работает, и исчезают, как только процесс завершается.
Вообще говоря, одну и ту же программу можно запустить с совершенно
разными свойствами.
Разделение всех пользователей по отношению к объекту
У каждого объекта есть владелец. Это – один из пользователей данной
системы UNIX. Появление объектов, которыми владеют пользователи, не
зарегистрированные в данной системе, – это ошибка системного администратора.
Такое может произойти при разархивировании файла, созданного
в другой системе. Если вместе с файлом была сохранена информация
о его владельце, то легко может оказаться, что в другой системе
есть пользователь с таким идентификатором (UID), а в нашей – нет.
Обратите внимание: для системы важны не имена пользователей, а
их идентификаторы. Если в чужой системе есть пользователь ivan с UID,
равным 1000, а в нашей ivan имеет UID, равный 2001, то при переносе
файла с чужой системы к нам с сохранением информации о владельце
файла в нашей системе появится "бесхозный" файл, если у нас нет пользователя
с UID 1000, или принадлежащий тому пользователю, чей это
UID, если такой найдется.
Право владения объектом в UNIX передается по наследству от процесса
к процессу, а при создании файла или каталога его владельцем становится
тот пользователь, от чьего имени запущен процесс, создавший
файл или каталог.
Однако, в ряде случаев запускаемый процесс будет принадлежать не
тому, кто запустил процесс-родитель, а иному пользователю. Например,
при входе пользователя в систему он сообщает имя и пароль программе
login. Она работает от имени root (т.е. ее владельцем является пользователь
root). Но программа login запускает для пользователя командный
интерпретатор так, чтобы владельцем процесса командного интерпретатора
был сам входящий в систему пользователь.
Любой объект имеет не только владельца, но и группу. Иногда владельца
называют "хозяином", а группу – "группой владельца", "групповым
владельцем", "групповым хозяином" и т.п. Смысл этого понятия в
том, что каждому объекту в UNIX сопоставляется не только UID (user
identificator), который идентифицирует владельца объекта, но и GID
(group identificator), который идентифицирует группу пользователей,
имеющую особые права на объект.
Таким образом реализуется разделение всех пользователей по отношению
к объекту на владельца объекта, группу, имеющую особые права на
объект и всех остальных. Группу, обладающую особыми правами на объект,
мы будем называть группой объекта. Соответственно, мы будем говорить
о группе файла, группе каталога или группе процесса. При этом надо помнить,
что группа файла – это не группа, в которую входит файл или его
владелец. В общем случае это – произвольная группа, объединяющая произвольных
пользователей и имеющая особые права на этот объект.
Назначение прав доступа по отдельности
Владельцу файла, группе файла и всем остальным пользователям могут
быть по отдельности назначены разные права доступа к файлу. То же справедливо
и в отношении каталога. Так реализуется назначение прав доступа
к объекту в отдельности его владельцу, группе и "всем остальным".
Последних в документации и профессиональных разговорах иногда
называют world ("мир"), имея в виду "вообще всех остальных пользователей
этого компьютера". Этот термин происходит из далеких времен, когда
компьютеров было мало, а пользователей у одного компьютера – очень
много, и администратор мог гордо говорить о них – "мой мир".
Каждый объект имеет владельца и группу
Любой файл, каталог или процесс имеет владельца и группу. Это
означает, что файлу, каталогу и процессу обязательно сопоставлены два
идентификатора, которые называются UID (user ID) и GID (group ID)
соответственно. Администрировать систему легче, если все объекты
имеют UID и GID из числа представленных в /etc/passwd и /etc/group
соответственно. "Бесхозные" объекты вносят сумятицу в стройные ряды
прав доступа и делают права доступа к ним владельца и группы бессмысленными,
ведь никто из пользователей не может получить "чужое" право
доступа.
Структура файлов /etc/passwd, /etc/shadow, /etc/group
Файлы /etc/passwd и /etc/group в Solaris имеют такой же формат, как
и в других системах UNIX, а файл /etc/shadow одинаков для всех систем
ветви System V. Рассмотрим примеры файлов (для этого потребуется
посмотреть содержимое упомянутых файлов командой cat или командой more ):
Учетные записи пользователей
cat /etc/passwd
root:x:0:1:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
smmsp:x:25:25:SendMail Message Submission Program:/:
listen:x:37:4:Network Admin:/usr/net/nls:
nobody:x:60001:60001:Nobody:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x Nobody:/:
col:x:100:1::/home/col:/bin/sh
temp:x:101:1::/home/temp:/bin/sh
qaz:x:102:1::/home/qaz:/bin/sh
Termos:x:103:1::/home/Termos:/usr/bin/bash
Файл состоит из записей, каждая из которых описывает одного
пользователя и занимает одну строку. Поля записей разделяются двоеточиями.
Первое поле – имя пользователя в системе. Это имя пользователь
вводит для входа в систему. Имя в Solaris должно иметь длину от 2 до 8
символов и содержать только латинские буквы и цифры. Имя пользователя
в Solaris может содержать прописные латинские буквы, однако из
соображений совместимости с другими системами UNIX рекомендуется
использовать только строчные (маленькие) буквы.
Второе поле – признак наличия пароля. Пустое поле означает отсутствие
пароля. Для фактического отсутствия пароля у пользователя необходимо,
кроме того, чтобы второе поле в файле /etc/shadow в описании
этого пользователя имело значение NP.
Третье поле – идентификатор пользователя, UID.
Четвертое поле – идентификатор главной группы пользователя, GID.
Пятое поле (иногда его называют GECOS) – описание пользователя.
Обычно оно содержит полное имя пользователя (имя и фамилию) и координаты
для связи с ним – номер офиса, адрес, телефон или пейджер.
Шестое поле – домашний каталог пользователя. При интерактивном
входе в систему пользователь попадает именно в этот каталог сразу
после успешного входа. Кроме этого, некоторые сетевые службы (например,
ftpd) требуют, чтобы у каждого пользователя, пытающегося получить
доступ к сетевой службе, был "честный", т.е. на самом деле существующий
и доступный для пользователя домашний каталог.
Седьмое поле – командный процессор, который будет запущен для
пользователя при интерактивном входе в систему. Некоторые сетевые
службы (например, ftpd) требуют, чтобы у каждого пользователя, пытающегося
получить доступ к сетевой службе, был существующий в системе
на самом деле командный процессор. Файл /etc/shells описывает
доступные в системе командные процессоры, которые следует назначать
пользователям. Сразу после установки системы файл /etc/shells не
существует. Системный администратор должен создать его вручную, если он
требуется для каких-то программ в системе, например, для ftpd.
Относительно содержания поля GECOS следует сделать несколько
замечаний.
Поле GECOS часто называют полем комментария, и это верно: в нем
следует записывать контактную информацию о пользователе. Системному
администратору ничего не скажет строка в файле протокола, которая свидетельствуюет
о проблеме, вызванной работой пользователя ikonst34. Кто это?
Иван Константинович из планового отдела или Илья Константинов из технического?
Или это Иконников Станислав из филиала 34? Чтобы не мучаться
ассоциациями, навеянными именем пользователя, а точно знать, кто скрывается
за лаконичным username, следует заполнять поле комментария.
Каждый элемент этого поля (например, полное имя, номер комнаты
в офисе, контактный телефон) принято отделять от других запятой, но это
необязательное требование. В настоящее время, к сожалению, не существует
строго определенного правила заполнения поля комментария. Хорошим
стилем является указание в этом поле следующей информации:
полные фамилия, имя и (если это необходимо для однозначной идентификации) отчество пользователя или, если это учетная запись предопределенного псевдопользователя типа bin, полное название приложения, использующего эту запись;
номер комнаты и ее местоположение, или контактное лицо, ответственное за запуск приложения, использующего запись;
рабочий телефон;
другая контактная информация (пейджер, факс, мобильный телефон и т.п.).
Не всегда требуется указывать всю эту информацию. На деле достаточно
иметь ровно столько сведений, сколько требуется системному администратору
для однозначной идентификации владельца учетной записи.
Пожалуйста, только имейте в виду – не одному-единственному конкретному
системному администратору, а любому администратору, которому придется
управлять созданной вами системой. Вдруг нынешний системный
администратор уволится или уедет в отпуск? Сможет ли его преемник или
заместитель быстро разобраться в записях в /etc/passwd? Делайте записи в
поле комментария полезными сведениями, а не отписками.
Например, можно ожидать нечто вроде следующих записей в /etc/passwd:
root:*:0:0:Root – Michael Kruglov, room 601, 89119119111:/root:/bin/bash
ftp:*:23:1:FTP Admin, Andrei Nezvanyi, 9733333:/home/ftp:/bin/bash
apache:*:404:40:Web Master, Elena Osatanenko,1001010:/usr/local/httpd:/bin/sh
Последнее, что следует сказать о поле GECOS: почему оно так называется.
В свое время компания General Electric владела компьютером, операционной
системой которого была GECOS (General Electric Comprehensive
Operating System). Компьютеры под управлением UNIX использовались
для подготовки задач печати для этого компьютера. Изначальным назначением
поля комментария было хранение идентификационной информации
для задач, которые были предназначены для системы GECOS.
cat /etc/shadow
root::6445::::::
daemon:NP:6445::::::
bin:NP:6445::::::
sys:NP:6445::::::
adm:NP:6445::::::
lp:NP:6445::::::
uucp:NP:6445::::::
nuucp:NP:6445::::::
smmsp:NP:6445::::::
listen:*LK*:::::::
nobody:NP:6445::::::
noaccess:NP:6445::::::
nobody4:NP:6445::::::
col:9NvfZSaIQgcQk:12435::::::
temp:*LK*:::::::
qaz:v.srD227fHRx2:12448::::::
Termos:o3HzHXFopdwbU:::::::
Этот файл тоже описывает пользователей. В нем хранятся зашифрованные
пароли пользователей. Формат файла таков:
первое поле – имя пользователя;
второе поле – зашифрованный пароль, *LK* означает, что учетная запись заблокирована (locked), а NP – что пароль отсутствует (no password);
третье поле – число дней между 1 января 1970 года и датой последнего изменения пароля;
четвертое поле – минимальное количество дней, которое должно пройти от одной смены пароля до другой;
пятое поле – максимальное количество дней, которое пароль считается действительным; по истечении этого количества дней система попросит ввести новый пароль, так как старый утратит силу;
шестое поле – количество дней, за которое система предупредит пользователя о необходимости смены пароля;
седьмое поле – количество дней, которое пользователь может не работать в системе и считаться активным; по истечении этого количества дней учетная запись автоматически блокируется;
восьмое поле – дата, до которой учетная запись считается действительной; после этой даты пользователь не сможет войти в систему;
девятое поле зарезервировано и сейчас не используется.
Данный формат /etc/shadow характерен как для Solaris, так и для
других подобных System V систем UNIX, например, для Linux.
В /etc/shadow обязательно присутствуют только первые три поля в
каждой записи, остальные могут отсутствовать – все или часть из них.
Рекомендуется не вносить исправления в /etc/shadow вручную, а делать
это с помощью программ smc, usermod, useradd, passwd. Однако, в одном
случае – если вы забыли пароль root – придется исправлять /etc/shadow в
текстовом редакторе.
Пользовательские файлы конфигурации
У каждого пользователя в домашнем каталоге есть несколько файлов
конфигурации. Обычно присутствуют файлы конфигурации командного
процессора. Если в системе используется несколько командных процессоров, имеет смысл сделать такие файлы конфигурации для каждого
из них; о разных файлах конфигурации командных процессоров см.
лекцию 11. Кроме них, могут быть файлы конфигурации графической
среды (.Xsession и другие), файлы конфигурации почтовой системы (.elm,
.forward и другие), файлы с историей команд (.history, .bash_history) и
прочие. Их объединяет то, что их имена практически всегда начинаются
с символа "." (точка). Можно увидеть их в списке файлов каталога, если
дать команду
ls -a
Пользовательские файлы конфигураций создаются заранее системным администратором. Стандартные пользовательские файлы конфигураций по умолчанию поставляются вместе с операционной системой и в
Solaris располагаются в /etc/skel (от слова skeleton – скелет, т.е. основа).
При создании нового пользователя они автоматически копируются из
каталога /etc/skel в домашний каталог нового пользователя. При
создании нового пользователя или модификации существующей учетной
записи можно указать другой каталог с файлами конфигурации, чтобы
копировать не файлы по умолчанию, а другие файлы. Их предварительно
следует создать и модифицировать в соответствии с желаемыми настройками
для новых пользователей.
Модификация файлов в каталоге /etc/skel повлияет только на
настройки новых пользователей, которые будут созданы после модификации
этих файлов.
Мы будем далее называть /etc/skel каталогом базовых пользовательских
файлов конфигурации. После того, как пользователь войдет
в систему, он может изменить настройки, сделанные для него в файлах
конфигурации, или добавить новые, если системный администратор не
запретил ему запись в файлы конфигурации.
Группы пользователей
Группы, определенные в системе, перечислены в файле /etc/group.
В системе могут быть определены и другие группы, если для аутентификации
и авторизации помимо файлов /etc/passwd и /etc/group используются
и другие источники (например, каталог LDAP – см. лекцию 8 курса "Системное администрирование ОС Solaris 10").
cat /etc/group
root::0:root
other::1:
bin::2:root,bin,daemon
sys::3:root,bin,sys,adm
adm::4:root,adm,daemon
uucp::5:root,uucp
mail::6:root
tty::7:root,adm
lp::8:root,lp,adm
nuucp::9:root,nuucp
staff::10:
daemon::12:root,daemon
sysadmin::14:
smmsp::25:smmsp
nobody::60001:
noaccess::60002:
nogroup::65534:
Первое поле – имя группы.
Второе поле – зашифрованный пароль; это устаревшее поле – в настоящее время нет команды, которая бы позволила установить пароль на группу,
и обычно нет необходимости это делать. Если все же такая необходимость
появится, то можно установить требуемый пароль какому-нибудь пользователю с помощью программы passwd, а затем копировать поле пароля
из /etc/shadow в /etc/group. Пароль группы используется в Solaris только
программой newgrp. Эта программа требуется для изменения эффективного
группового идентификатора пользователя в ходе его интерактивной работы.
Если группа, которой соответствует новый групповой идентификатор,
имеет пароль, то программа newgrp его запросит.
Третье поле – идентификатор группы (GID). Этот идентификатор
должен быть уникальным в пределах системы, а в случае использования
общих файлов групп и паролей – в пределах всей сети организации.
Номера от 0 до 99 и от 60001 до 60002 зарезервированы для системных
групп. Создавайте свои группы с идентификаторами от 100 до 60000
включительно.
Четвертое поле – список пользователей через запятую; для этих
пользователей данная группа будет являться дополнительной. В Solaris
принято по умолчанию, что один пользователь может принадлежать не
более чем к 15 дополнительным группам.
Программы управления учетными записями пользователей
Для управления учетными записями следует использовать программу smc или users-admin при работе в графическом режиме или программы useradd, usermod, userdel, groupadd, groupmod, groupdel в текстовом режиме
или в окне терминала.
Solaris Management Console
В системах Solaris 9 (до мая 2002 года) для управления учетными
записями пользователей было возможно применять программу admintool
(рис 5.1). В системах Solaris 8 и более ранних программа admintool
также использовалась для управления пакетами ПО. Сейчас программа
admintool считается устаревшей и в состав системы не входит. Вместо
нее следует пользоваться Solaris Management Console (SMC) или иной
программой, обычно являющейся инструментом графической среды.
Этот инструмент называется /usr/bin/users-admin. В графической среде
GNOME его можно вызвать из меню "Администрирование->Пользователи и группы" (рис 5.2).
Коротко опишем, как именно можно управлять пользователем в smc
(рис 5.2).
Выбрав из списка одного пользователя (рис 5.3), можно установить
любые из свойств, перечисленных выше, при рассмотрении формата
файлов /etc/passwd, /etc/shadow и /etc/group. Если же вы хотите добавить
пользователя, следует воспользоваться кнопкой "Add user with Wizard"
(рис 5.3).
(рис 5.1) Окно устаревшей программы admintoolЛюбая программа типа smc для работы со свойствами учетной
записи пользователя в графическом режиме все равно вызывает простые
системные программы с интерфейсом командной строки для выполнения
любых операций с этими свойствами. В Solaris для создания
новой учетной записи пользователя (добавления пользователя в систему)
используется программа useradd, для модификации учетной записи пользователя
– usermod, для удаления учетной записи – userdel.

(рис 5.3) Вызов users-admin(рис 5.2) Окно Solaris Management Console
(рис 5.4) Управление учетными записями с помощью Solaris Management Console (smc)
useradd
Для добавления нового пользователя следует выполнить команду useradd:
При добавлении пользователя с помощью команды useradd пользователь
попадает в группу other, если явно не указано иное. Эта группа
имеет идентификатор 1.
При добавлении пользователя в Solaris происходит добавление соответствующей
строки в файлы /etc/passwd, /etc/shadow и /etc/user_attr.
Первые два файла нам уже знакомы. Последний служит для записи дополнительных
атрибутов пользователя. Он используется только в Solaris, в
других системах UNIX такого файла нет. К дополнительным атрибутам
относятся административные права, данные этому пользователю, перечень
ролей, назначенных пользователю, и указание на то, является ли
эта учетная запись пользователя информацией о реальном пользователе
или информацией о роли. Для более детального понимания ролей следует
изучить лекцию 9 курса "Системное администрирование ОС Solaris 10", для получения детальной
информации – /etc/user_attr – man по user_attr.
По умолчанию useradd добавляет учетную запись пользователя в
файлы /etc/passwd и /etc/shadow. Кроме этого, при указании ключа –G
запись о пользователе помещается в /etc/group в строку тех групп, которые
указываются в качестве дополнительных для него. С помощью ключа –m
можно указать, что для пользователя следует создать домашний каталог.
Новые учетные записи пользователей остаются блокированными до
тех пор, пока пользователю не будет назначен пароль с помощью программы passwd.
Имя пользователя или роли не может быть длиннее 8 символов, и
должно содержать только латинские символы, цифры, точку, знак
подчеркивания и дефис. Точка является допустимым символом не для всех
систем UNIX, поэтому ее не рекомендуется использовать в Solaris в
целях совместимости, хотя это требование не является жестким. Первый
символ имени должен быть буквой, по крайней мере один символ в имени
должен быть буквой нижнего регистра.
Следующие ключи изменяют значения свойств учетной записи пользователя,
которые задаются по умолчанию в отсутствие этих ключей:
-b base_dirкаталог, в котором должен быть создан домашний каталог пользователя;
не требуется указывать, если используется ключ –d ;
-c commentполе GECOS общей информации о пользователе; как минимум,
следует указать полное имя пользователя;
-d dirдомашний каталог пользователя; по умолчанию создается в
каталоге /home и носит то же имя, что и пользователь (для
пользователя lena создается домашний каталог /home/lena );
-Dпоказать значения по умолчанию для группы, системного
каталога для домашних каталогов, каталога базовых пользовательских
файлов конфигурации, командного процессора и ряда
других свойств.
Значения по умолчанию, принятые в системе, перечислены в
таблице 5.1.
Значения свойств учетной записи пользователя по умолчанию
| группа |
other (GID =1) |
| каталог с домашними каталогами пользователей |
/home |
| командный процессор |
/bin/sh |
| профиль |
не назначается |
| роль |
не назначается |
-e expireдата истечения срока действия учетной записи; формат даты
определен, как рассказано в man 3C getdate; по умолчанию не
задано, после наступления этой даты пользователь не сможет
войти в систему; используется для создания учетных записей
временных сотрудников или гостей;
-f inactiveмаксимальное число дней, в течение которых пользователь
может не входить в систему; по истечении этого срока учетная
запись блокируется; удачное решение для забывчивых системных
администраторов, которые не удаляют учетные записи при
увольнении сотрудника, позволяет бороться с накоплением
"мертвых душ в системе";
-g groupглавная группа пользователя, по умолчанию – other; подробности настройки групп по умолчанию см. в man useradd ;
-k skel_dirкаталог с базовыми пользовательскими файлами конфигураций; указанный каталог должен существовать, копии всех
содержащихся в нем файлов будут помещены в домашний каталог нового пользователя. По умолчанию – /etc/skel ;
-mтребует создать домашний каталог нового пользователя; если
каталог уже есть, у главной группы пользователя должно быть
право на чтение, запись и поиск в этом каталоге (права доступа
к файлам и каталогам обсуждаются в лекции 7);
-oразрешить пользователю иметь uid, совпадающий с uid существующего
пользователя; может использоваться для дублирования
учетной записи root. Это может понадобиться для того,
чтобы от имени пользователя root входить в систему только в
экстренных случаях, а обычно пользоваться другой учетной
записью. Во FreeBSD для этого по умолчанию предоставляется
учетная запись toor (root наоборот). Это может быть удобно,
например, для назначения администратору командного процессора,
отличного от /bin/sh, например, /usr/local/bin/bash.
Назначить такой командный процессор пользователю root
нельзя, т.к. его командный процессор должен работать даже
тогда, когда доступна только файловая система /, а /usr даже не
смонтирована;
-s shellполное имя файла, который будет назначен пользователю в
качестве командного процессора при входе в систему; файл
должен существовать;
-u uidявное указание значения UID.
Ряд ключей, служащих для управления ролями, обсуждается в лекции 13 курса "Системное администрирование ОС Solaris 10".
Для изменения свойств пользователя следует запускать программу usermod. Ее синтаксис предполагает явное задание изменяемого свойства,
а не интерактивного взаимодействия. При запуске без ключей только с
указанием имени пользователя, чью учетную запись мы желаем изменить,
программа usermod выдает сообщение об ошибке и краткую подсказку
по использованию:
usermod ivan
UX: usermod: ERROR: Invalid syntax.
usage: usermod -u uid [-o] | -g group | -G group[[,group]...] |
-d dir [-m] | -s shell | -c comment |
-l new_logname | -f inactive | -e expire
-A authorization [, authorization ...] |
-P profile [, profile ...] | -R role [, role ...]
login
Для удаления пользователя используйте userdel.
Для добавления группы следует использовать groupadd, для удаления
– groupdel ; для изменения учетной записи группы – groupmod.
Упражнения
Добавьте учетную запись пользователя lover с помощью useradd. В какую группу попал пользователь lover? Изменился ли файл /etc/group? Объясните, почему.
Удалите учетную запись lover с помощью admintool.
Добавьте пользователя hardworker в группу staff с помощью admintool. Удалось ли добавить пользователя с таким именем? Если нет, выясните причину и, если потребуется, измените вызвавшее проблему условие.
Измените главную группу этого пользователя на other, но сохраните его в качестве члена группы staff. Пришлось ли внести какие-то изменения в файл /etc/group?
Изучите содержимое файла /etc/shadow. Установите новый пароль
какому-нибудь пользователю. Изменилось ли содержимое /etc/shadow? А
файла /etc/passwd?