Библиотека сайта rus-linux.net
Управление пользователями
р Добавление новых пользователей
р Команды обслуживания пользователей
р Команды контроля пользователей
р Команды ограничения пользователей
р Анонимный FTP
Администрирование пользователей требует навыков практически в каждой области управления системами. Чем бы вы не занимались - "чисткой" переполненных дисков, обнаружением узких мест в производительности системы, ответом на вопросы или добавлением новых пользователей, - ваша работа будет связана с пользователями. Пользователи подобны футбольным болельщикам, реагирующими на то, как вы справляетесь с обязанностями судьи. Если вас не замечают, значит вы работаете хорошо. В суматохе дел легко забывается, что изучение тайн системы происходит только благодаря тому, что пользователи косвенно оплачивают это.
В данной главе рассматриваются операции, относящиеся к администрированию пользователей. Сюда входит добавление, удаление, модификация, перемещение, отслеживание, проверка и ограничение функций пользователей. Следующий раздел посвящен специальным идентификаторам и средам управления ими.
Добавление новых пользователей
Вполне логично, что администрирование начинается с добавления пользователей к новой системе. Для выполнения этой задачи существуют разные методы. Каждый метод связан с вводом информации в файл паролей /etc/group. Заслуживают внимания также файл /etc/passwd и разные другие, как, например, файлы запуска оболочки системы и системный файл почтовых псевдонимов.
Файл паролей
Формат файла /etc/passwd в большинстве разновидностей UNIX постоянен. Он содержит записи, поля в которых разделены двоеточиями:
user-name :p5wd:uid:giv:uid comments: directory: shell
В некоторых системах, типа BSD, формат записей несколько отличается:
username:pswd:uid:gid:user class:pswd change:acct expiration:uid comments:directory:shell
username - это то, что пользователь вводит после приглашения UNIX login:. Обычно это поле содержит восемь или меньше алфавитно-числовых символов, при этом символы алфавита находятся в нижнем регистре. Эта последовательность должна быть уникальной. Двоеточия не допускаются, так как они используются для разграничения полей. Для лучшей совместимости это поле не должно содержать точек не должно и начинаться с тире или знака плюс.
Поле pswd содержит пароль и может иметь множество различных форм. Оно может быть пустым, указывая, что для входа в систему пароль не нужен. Поле может содержать до 13 символов, представляющих зашифрованную строку пароля пользователя. В позиции поля может находиться символ, не попадающий в набор {./0-9 A-Z д-s}. К примеру, в этот диапазон не показывает символ "*". Это значит, что бюджет для данного пользователя существует, но вход в систему невозможен.
Кроме того, в системах IRIX и HP-UX поле пароля может содержать запятую, после которой следуют один или два символа.
Порядок символов следующий: ./0-9 A-Z а-z. Символ "." эквивалентен числу ноль, a "z" - числу 63. Обычно для ссылок на символы используются их числовые значения. Символы указывают количество недель действия пароля и число недель, которое должно пройти перед тем, как будет возможна смена пароля, соответственно. Если первое число равно нулю (точка), пользователь должен сменить пароль при следующей попытке входа в систему. Если второе число больше первого, пароль может сменить только суперпользователь, что часто вызывает недовольство пользователей, озабоченных проблемами защиты.
СОВЕТ Если система не имеет встроенной проверки паролей, выбранных пользователями, помочь в этом может утилита Alec Muffefts Crack. |
uid, или идентификатор пользователя, - это просто уникальное число, назначенное для данного пользователя. Обычно это положительное число до 65535, хотя некоторые системы могут обрабатывать числа двойной точности, применять которые не рекомендуется. Если это число не уникально, все имена пользователей с одинаковым идентификатором представляются принадлежащими одному пользователю (обычно с первым именем). Некоторые идентификаторы зарезервированы:
0: Суперпользователь (привилегированный пользователь)
I-10: Демоны и псевдопользователи
11-99: Системные, зарезервированные и "famous" (важные) пользователи
100+: Обычные пользователи
60001: "nobody" (иногда 32000 или 65534)
60002: "noaccess" (иногда 32001)
gid (от group ID) - числовой стандартный групповой идентификатор пользователя. Это число соответствует записи в файле /etc/group. Этот файл будет рассмотрен ниже.
Поле uid comments традиционно называют GECOS или GCOS. Оно служит источником информации для операционной системы. Чтобы общая команда finger правильно отображала эту информацию, поле должно содержать настоящее имя пользователя, код компании или офиса, номер телефона офиса, домашний телефон, разделенные запятыми. Могут быть указаны не все данные, тогда для сохранения синтаксиса GECOS нужно применять заполнители. Например, запись Homer Userр,800-IAM-HOME позволит вывести подлинное имя пользователя и его домашний телефон. Настоящее имя пользователя также выводится почтовой программой в заголовке почтовых сообщений.
Поле directory обычно называется собственным каталогом (home directory) пользователя или исходным рабочим каталогом. Этот каталог предоставляется пользователю после входа в систему, но перед выполнением его персональных файлов запуска.
Поле shell (оболочка) определяет интерпретатор команд или программу, предоставляемую пользователю после входа в систему. Среди множества оболочек можно выделить: sh (Bourne), ksh (Kom), csh (С), tcsh (тип TENEX/ TOPS-20 оболочки С), bash (Bourne Again). По умолчанию принимается оболочка Bourne. Заметьте, что это поле не обязательно содержит название оболочки. Оно может указывать программу, которая блокирует имя пользователя и запускает приложение, захватывающее канал связи. Чтобы значение этого поля было допустимым, в некоторых системах требуется присутствие этой записи в проверочном файле оболочки.
Поле class не используется, но предназначено для определения класса атрибутов пользователя для данного имени пользователя.
Поле pswd change определяет время смены пароля. Это число секунд, которые пройдут со знаменательного момента 1 января 1970 года, 00:00. Если значение не указано, вынужденной смены пароля не происходит.
Поле aссt expiration представляет число секунд, прошедших с этого же момента до прекращения действия бюджета. Если поле пусто, срок действия бюджета не ограничен.
Кроме того, если установлена и работает NIS (Network Information Service - информационная служба сети)/УР (Yellow Pages - желтые страницы), файл пароля может содержать другие типы записей. К дополнительным полям относятся:
+ должны быть включены все записи YP
+username включить явное имя пользователя из YP
-username исключить явное имя пользователя из YP
+@netgroup включить все имена пользователей из YP для указанной группы
-@netgroup исключить все имена пользователей из YP для указанной группы
Обычно, когда поля uid, gid, uid comments, directory и shell содержат данные, они вытесняют значения, которые для них пересылают YP. Имейте в виду, что эти записи обрабатываются по порядку, при этом на происходящее оказывает влияние первая запись, а не последняя, если они противоречат друг другу. Например:
root:х:0:0:Superuser:/:
daemon:*:1:5::/:/sbin/sh bin:*:2:2::/usr/bin:/sbin/sh sys:*:3:3::/:
adm:*:4:4::/var/adm:/sbin/sh
uucp:* 5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico
lp:*:9 7::/var/spool/lp:/sbin/sh
nuucp:*:11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico
hpdb:* 27:1:ALLBASE:/:/sbin/sh
nobody *:-2:60001::/:
dave:x 100:10:Dave G,13,x3911,unlisted:/usrl/dave:/bin/tcsh
charlene:x:101:10:Charlene G,14,xl800,unlisted:/usrl/charlene:/bin/tcsh
john:x 102:60:John S,2,555-1234,xl400:/usr2/john:/bin/ksh
georgia:x:103:60:Georgia S,11,xl43,xl43:/usr2/georgia:/bin/csh
-steve::::: :
+@friends:::20:: :
+wayne::102:::/usr3/wayne:/bin/sh97
Имя пользователя sieve всегда исключается, даже если оно входит в группу friends. Каждый член группы friends по умолчанию помещается в группу 20. Включается имя пользователя wayne из YP. Все его поля, кроме gid и uid comments, перекрываются указанной информацией. Отметьте, что в этом примере буква х в поле pswd стоит вместо реального зашифрованного пароля. Символ * поля pswd обозначает псевдопользователей без права входа в систему. Дополнительные сведения о псевдопользователях содержатся в конце раздела "Добавление новых пользователей".
Теневой файл паролей
Поскольку файл /etc/passwd обычно общедоступен для чтения, на узлах с повышенными требованиями к защите, как правило, используется схема теневого пароля, доступная в большинстве операционных систем UNIX. Смысл в том, что зашифрованные пароли переадресуются другому файлу, который может содержать (либо нет) другую информацию. Эта схема используется потому, что при неудачном выборе пароля современные машины вполне могут его взломать. К неудачному выбору можно отнести любое слово из словаря, регистрационное имя, отсутствие пароля или любую информацию, включенную в поле uid comment. Схемы применения теневых файлов паролей в разных версиях UNIX имеют значительные отличия.
Например, в системах IRIX и Solaris существует файл /etc/shadow, генерируемый командой pwconv, которая имеет следующий формат:
user-name: pswd: lastchg :min :max: warn: inactive: expire: flag
username - это копия имени пользователя из файла /etc/passwd.
Поле pswd содержит либо зашифрованный пароль длиной в 13 символов, либо null-значение, указывающее, что для входа в систему пароль не нужен, либо строку, содержащую символ, не принадлежащий множеству {./0-9 A-Z a-z}. Если пароль содержит символ, не являющийся алфавитно-цифровым, для данного пользователя вход в систему невозможен. Обычно системные администраторы используют для записи в это поле символ * или *LK*.
Поле lastchg определяет число дней, прошедших с 1 января 1970 г., когда пароль последний раз изменялся. Поле min задает минимальное число дней, которое должно пройти от успешной смены пароля до другой смены.
Поле тах содержит максимальное число дней действия пароля.
Поле warn содержит число дней до истечения срока действия пароля, в течении которых пользователь будет получать об этом предупреждения.
Поле inactive определяет число дней, в течение которых пользователь может оставаться неактивным, после чего ему не будет отказано во входе в систему.
Поле expire указывает на абсолютное число дней. Если оно используется, то определяет срок, после которого имя пользователя не будет давать права на вход в систему. Поле flag в настоящее время не используется.
В системе HP-UX принята другая схема сокрытия файла пароля. Для каждого имени пользователя существует файл /tcb/files/auth/first letter/username, где first letter - начальная буква имени пользователя, а username - регистрационное имя пользователя. Например, для пользователя buster будет существовать файл /tcb/files/auth/b/buster. Этот файл содержит информацию, проявляющуюся как termcap. В последних версиях системы файл поддерживал до 32 возможных опций, имеющих отношение к защите данных пользователя. Список имен полей и их возможных значений содержится в странице руководства для утилиты prpwd(4). В общем случае файл содержит:
Имя пользователя и его идентификатор, скопированные из файла пароля.
Зашифрованный пароль, если он существует.
Имена:
- владельца бюджета;
- последнего бюджета, для которого был изменен пароль;
- терминала или хоста, для которого была предпринята последняя успешная или неудачная попытка входа.
Данные о времени, указывающие:
- число секунд, допустимое между успешными сменами пароля;
- когда заканчивается срок действия пароля (необходима смена пароля в следующем сеансе);
- когда пароль прекращает существование (только системный администратор может вновь раз решить вход в систему);
- когда в последний раз предпринималась попытка успешной или неудачной смены пароля;
- когда истекает срок действия бюджета (абсолютное смещение со времени смены пароля);
- Максимальный промежуток времени, допустимый между входами в систему;
- за какой промежуток времени до истечения срока действия пароля следует уведомить пользователя;
- время дня, когда для бюджета допускаются входы в систему;
- когда в последний раз предпринималась успешная или неудачная попытка входа в систему.
Флаги, определяющие:
- допустима ли для пользователя загрузка системы;
- выполняется ли проверка имени пользователя;
- может ли пользователь выбрать пароль бюджета, или должен использовать тот, что сгенерирован системой;
- может ли система сгенерировать пароль бюджета для пользователя;
- должен ли выбранный пароль подвергаться проверке на предмет легкости угадывания;
- может ли бюджет не иметь пароля (значение null);
- может ли пользователь генерировать символы для пароля "случайным образом";
- блокирован ли бюджет администратором.
Числа, указывающие:
- идентификатор проверки для бюджета;
- максимально возможную длину пароля;
- дополнительное случайное число, которое бюджет должен определить для пароля, если сие темный администратор переустановил пароль;
- счет неудавшихся входов в систему до следующего удачного;
- допустимое максимальное число последовательных неудачных попыток входа в систему, после которых бюджет блокируется.
В системах BSD применяется еще одна разновидность системы сокрытия пароля, использующая файлы /etc/master.passwd или /etc/spwd.db.
Файл групп
Файл /etc/group является частью общей схемы защиты UNIX: пользователь, группа и другие механизмы допуска к файлам. Шаблон записи с разделением полей двоеточиями имеет следующий вид:
group_name:раз sword:group_id:list
Поле group Jid содержит текстовое имя группы.
Поле password является заполнителем для зашифрованного пароля группы. Если его значение null, пароль не нужен.
Поле group_name содержит уникальное числовое значение группы.
Поле list содержит список с разделением запятыми пользователей, принадлежащих данной группе. Перечисление пользователей в группах, указанных для их имени в файле /etc/passwd, необязательно. Ниже следует пример файла /etc/group.
root 0:root
other :1:root,hpdb
bin: 2:root,bin
sys: 3:root,uucp
adm: 4;root,adm
daemon::5:root,daemon
mail 6:root
lp: :7 root,lp
tty: 10:
nuucp :ll:nuucp
users :20:root,dave,charlene,John,georgia,operator,steve,judy,wayne,jamie
nogroup:*:-2:
systech::110:dave,disdb,diskf,disjs,dispm,diskj
dba::201:oracle,John,kathy,pete
psdev:;202:ps001,ps002,psl01
hrdev::203:hrprw,hrpps,hrpsl,hrpla,consultl,consult3
fsdev::209:glpmk,glpsf,consult2
fsftp::222:glpmk,glpsf,glpjh
Если служба Network Information Service/Yellow Pages активна, этот файл, как и /etc/passwd, должен содержать записи, начинающиеся со знака минус или плюс. Это определяет исключение или включение (соответственно) информации о группах из NIS/YP.
Другие файлы
Третий тип файлов, касающийся администрирования пользователей, - файл почтовых псевдонимов системы. В зависимости от версии UNIX, его путь может быть: /etc/aliases, /usr/sbin/aliases или /ete/mail/aliases. Пользователи, которым требуется большая длина почтового адреса, чем восьмисимвольное имя пользователя, могут сами для себя создать псевдоним. Примером может служить псевдоним fred-flinstone. Вся почта, адресованная fred-flinstone, будет переадресовываться на хост-машину пользователя flinston. Кроме того, группа пользователей может дать запрос, чтобы для них был создан глобальный список почтовых отправлений, и здесь администратору придется удовлетворить их потребность. После модификации этого файла нужно выполнить программу newaliases, чтобы изменения вступили в силу.
Следует знать и о двух других файлах, затрагивающих управление доступом пользователей к системе. Эти файлы запуска оболочки системы вызываются до передачи управления персональным стартовым файлам пользователей. Операционная среда для пользователей настраивается посредством редактирования файла /etc/profile (для пользователей System V sh/ksh) или файла /etc/csh.login, /etc/logjn или /etc/stdlogin (для пользователей System V csh/tcsh). В этих файлах можно настраивать стандартные опции доступа, используемые пользователями при создании файлов. С помощью установки опции umask можно добавлять элементы к стандартному пути, чтобы включать локальные утилиты в /usr/local, добавлять удобные псевдонимы или переменные среды. Имеет смысл не загромождать эти файлы данными, поскольку опытные пользователи могут с их помощью настраивать собственную рабочую среду. Большинство систем предоставляют шаблон
или модель, помещаемую в собственный каталог пользователя. Администраторы системы HP-UX могут обнаружить их в каталоге /etc/skel. Ниже приводится пример файла profile для оболочки ksh:
# установить терминал:
if [ "$TERM" = "" ] then
eval ' tset -s -Q -m ':?hp' '
else
eval ' tset -s -Q ' fi
stty erase '^H" kill '^U" intr ^C" eof '^D"
stty hupcl ixon ixoff
tabs
# установить пути поиска:
PATH=$PATH:/usr/local/bin:$HOME/scripts.d/local:.
# установит среду оболочки:
set -u
trap "echo 'logout'" 0
# установить переменные среды:
export VISUAL=vi
# сохранить путь среды:
ENVPATH=$PATH
export ENVPATH
ORACLE_TERM=vt100
export ORACLE_TERM
# установить среду:
ENV=/usr/contrib/bin/oracle_fun
export ENV
# установить псевдонимы пользователей:
alias rm="rm -i" # - commonly practiced
Пользовательские опции почтовой службы BSD могут настраиваться глобально в файле запуска: /usr/ lib/Mail.rc, /usr/share/lib/mailx, /etc/mail.rc, /etc/mail/mail.rc или /etc/mail/Mail.rc, в зависимости от версии UNIX. Например, вставка записи set crt в файл запуска почтовой службы вызывает нумерацию страниц для сообщений, превышающих длину одной страницы. Если требуется сопровождать все почтовые отправления определенным типом строки заголовка, нужно вставить запись: ignore Message-Id. И снова, лучше делать содержимое файлов проще и позволить пользователям настраивать свою среду почтовых операций с помощью файла .mailrc.
Как видно из описания систем теневых паролей, функции защиты для разных операционных систем UNIX не очень стандартизированы. Поэтому для полного представления о других файлах, настройка которых влияет на вход пользователей в систему, следует прочитать первую man-страниц, посвященную входу в систему (login). Например, в системе HP-UX путем редактирования файла /etc/securety можно ограничить число терминалов, с которых возможен вход в систему с правами root. В системе IRIX файл /etc/default/login содержит много изменяемых опций, определяющих такие параметры, как допустимость null-паролей, сколько неудачных попыток входа в систему может быть предпринято перед разъединением линии и требуется ли регистрация всех входов в систему или только запись о сбоях этих операций. Именно этот файл позволяет ограничивать входы в систему с правами root.
Псевдопользователи
Для каждой версии UNIX существуют записи файла паролей для нескольких псевдопользователей. Эти записи не подлежат редактированию. Такие пользователи без права входа в систему располагают соответствующими процессами для каждого аспекта, связанного с принадлежностью системы. Ниже приводится список наиболее распространенных псевдопользователей:
daemon Используется серверными процессами системы
bin Владеет исполняемыми файлами пользователя
sys Владеет системными файлами
adm Владеет файлами бюджета
uucp Используется UUCP
lp Используется подсистемами 1р или lpd
nobody Используется NFS
Существуют и другие стандартные псевдопользователи, такие как audit, cron, mail, new и Usenet. Все они обслуживают связанные с ними процессы и файлы.
Команды обслуживания пользователей
Операции генерирования, модификации и удаления записей в файлах паролей и групп в значительной мере зависят от версии операционной системы. К основным методам относятся непосредственное редактирование файла паролей с помощью командной строки или применения утилиты с графическим интерфейсом для вставки записей. Благодаря применению шаблонов и поддержке манипуляций мышью, эти утилиты очень удобны для администрирования пользователей. Инструментарий системы IRIX располагает графическим средством User Manager, которое высоко ценят пользователи.
Система HP-UX располагает популярным средством администрирования SAM, которое работает в графическом и символьном режиме,
Ниже приведены некоторые утилиты командной строки и графические средства для определенных операционных систем:
HP-UX useradd, uscrdel и usermod, vipw или SAM
Solaris useradd, userdel и usermod или admintool
FreeBSD adduser и rmuser или vipw
OpenBSD adduser или vipw
IRIX User Manager (cpeople)
Linux vipw
Форматы инструкций командной строки имеют следующий вид:
useradd [-с uid comment} [-d dir} [-e expire} [-f inactive} [-g gid\ [-G gid[,gid,.. ] ]
[-m [ -k skel_dir} ] [-s shell} [-u uid [-0]] username
Кроме того, команда useradd может устанавливать стандартные значения для: base dir, expire, inactive, gid, skel_dir и shell
adduser [-batch username [gid, [gidр.. ] ] [uid comment} [password]] OR adduser
Команда adduser без параметров работает в интерактивном режиме. Она может также принимать другие стандартные опции, которые:
1. вызывают копирование информации файлов login или profile в собственные каталоги пользователей;
2. помещают новых пользователей в стандартную группу;
3. определяют начальные разделы home для новых пользователей;
4. выводят приглашающие сообщения для новых пользователей;
5. устанавливают стандартную оболочку для новых пользователей; и 6. выбирают новые идентификаторы пользователей из заранее определенной группы чисел.
userdel [-r] username
rmuser username
usermod t-c uid comment} [-d dir [-m] ] [~e expire} [-f Inactive} [-g gid} [-G gid[,gid\}
[-1 new username} [-s shell} [-u uid [-0] ] username
В каждой из приведенных выше команд:
username - регистрационное имя пользователя. Это единственный обязательный параметр любой команды.
uid comment - то, что будет храниться в поле ID comment (GECOS).
dir - начальный каталог пользователя.
expire - абсолютная дата, когда пользователь теряет право входа в систему.
inactive - число неактивных дней подряд, после которых имя пользователя блокируется.
gid - идентификатор или имя группы, которой принадлежит пользователь.
new_username - замена существующего имени пользователя.
shell - исходная оболочка для пользователя.
skell_dir - каталог, содержащий файлы для копирования во вновь созданный собственный каталог. uid - уникальный идентификатор пользователя.
-m - задает создание исходного каталога (add) или перемещения файлов текущего начального каталога в новый начальный каталог (mod).
-о - допускает успешное выполнение команды, даже если идентификатор пользователя не уникален.
-g - выбирает первичную группу для пользователя
-G - выбирает вторичные группы для пользователя.
-r - удаляет начальный каталог пользователя.
Если начальный каталог пользователя изменен, файлы прежнего начального каталога должны переместиться в новый каталог. Для перемещения каталога пользователя введите команду:
cd /old_dir; tar -cf - . I (cd /new_dir; tar ~xpf -)
Проверьте полученный результат и удалите old_dir (старый каталог). Если пользователь не вполне подготовлен, найдите за него записи old_dir в существующих файлах и замените их на new_dir (новый каталог). Для поиска всех таких записей в системе используется команда:
find /new_dir "exec grep -1 old_dir О \;
Для всех записей, найденных с помощью команды find, измените запись на new_dir или, если можно, измените абсолютное имя пути на более общую переменную $НОМЕ. Уделите особое внимание файлам запуска, содержащимся в начальном каталоге пользователя, поскольку ошибки в этом классе файлов наверняка быстро привлекут внимание пользователя.
К распространенным файлам запуска относятся:
.login Выполняется в оболочках csh и tcsh во время входа в систему.
.cshrc Выполняется оболочкой csh при порождении новых субоболочек.
-tcshrc Выполняется оболочкой tcsh при порождении новых субоболочек.
.profile Выполняется в оболочках sh и ksh во время входа в систему.
.kshrc Выполняется оболочкой ksh при вызове новых субоболочек.
.bashrc Выполняется оболочкой bash при вызове новых субоболочек.
.history Содержит список последних выполненных команд оболочки.
.rhosts Списки удаленных хостов/имен пользователей (host/usemame), пользующихся доверием. Утилиты riogin, rexec, rsh/remsh,... используют этот файл для разрешения входа в систему, доступа к файлам и выполнения команд без пароля.
.netrc Используется процессом автоматического входа в удаленную систему (auto-login) FTP.
.forward Позволяет почтовой службе перенаправлять почту другом адресам, файлам или процессорам.
.mailrc Файл запуска mail, допускающий установку опций отправителя или псевдонимов.
.ехгс Файл запуска ех или vi, допускающий установку определенных опций редактирования.
.xinitrc Файл запуска для среды Х Window.
.xsession Еще один файл запуска для среды Х Window.
-.default Еще один файл запуска для среды Х Window.
При удалении имен пользователей из файла пароля требуется выявить все принадлежащие им файлы и удалить их. И снова команда find помогает справиться с этой рутинной операцией:
find / -user username
Выполняется поиск всех файлов, принадлежащих пользователю с именем username. Для надежности перед удалением этих файлов можно выполнить резервное копирование. Поиск и удаление файлов в одной командной строке выполняется следующим образом:
find / -user username -exec rm {} \;
После удаления файлов пользователя username файл групп и файл(ы) почтовых псевдонимов должны модифицироваться, путем удаления из них имени этого пользователя. Для обновления базы данных псевдонимов следует выполнить команду newaliases.
Команды контроля пользователей
Иногда администрирование пользователей требует выполнения расследования, поскольку, среди прочего, машина иногда оказывается перегруженной, защита - нарушенной, либо запрашивается статистическая информация. Для таких случаев UNIX располагает средством сбора информации о пользователях вообще или об одном конкретном пользователе.
Первый класс команд выдает информацию о происходящем в настоящее время. Эти команды указывают, если кто-либо использует больше ресурсов, чем ему отведено. Кроме того, их можно применять для предупреждения потенциальных проблем производительности путем выявления потребности в увеличении ресурсов процессора, памяти или дисков, чтобы удовлетворять растущие нужды пользователей.
Команда uptime выводит текущее время, число дней работы машины, число вошедших в систему пользователей и среднюю загрузку системы в течение последних 1, 5 и 15 минут.
Это несколько туманное описание происходящего, но оно удобно при выполнении сравнений с предыдущими попытками и позволяет узнать, что какой-либо пользователь монополизирует ресурсы машины.
Команда w выводит информацию uptime и указывает имя текущего пользователя, какой порт терминала он использует, имя хоста, с которого он вошел в систему, время входа, как долго пользователи неактивны, общее время ЦПУ всех процессов, выполняемых с данного порта терминала (JCPU), время ЦПУ активного процесса, указываемое в следующем поле (PCPU) и какие команды в настоящее время выполняются. Время неактивности позволяет определить кандидатов на выход из системы.
Команда ps -ef (для System V) или ps -ax (для BSD) предоставляет массу информации обо всех процессах, выполняемых в системе. Обратите внимание на столбец time, где выводится обобщенное время выполнения перечисляемых процессов. Любое большое число вызывает подозрение в неконтролируемости процесса, особенно если идентификатор родового процесса - 1. Для снижения нагрузки системы можно применить команду kill -9 out_of_control_process_id. Если процедуру нельзя прекращать, для небольшого улучшения ситуации можно применить команду renice. Строка renice +10 offending_process_id позволит лучше удовлетворять запросы процессов других пользователей. Второй параметр (+10) соответствует шкале настройки от -20 до +20, где -20 определяет наибольшее количество квантов времени, а +20 - наименьшее.
Команда top генерирует вывод, подобный выводимому командой ps, но постоянно обновляемый. В частности, столбцы %сри и time позволяют вьювить пользователей, которые перегружают систему. Параметр size, указывающий размер процесса в страницах, позволяет идентифицировать пользователей, которые вызывают слишком частое повторение процесса подкачки из памяти на диск. Эта информация может подсказать, что для системы требуется больше памяти.
Команда fuser позволяет вьывить того, кто занимает ресурсы файла. Строка ftiser -u filename перечисляет всех пользователей и процессы, которые в данное время используют файл с указанным именем. Можно попросить пользователя перестать занимать ресурс, либо прекратить нежелательный процесс. Если перегружен ресурс файловой системы, а не одного файла, команда faser -cku filesystem_name позволит прекратить все задачи, управляющие чтением файлов. После выполнения команды можно отсоединить файловую систему командой unmount.
Команда [B]df совместно с du дает картину использования дискового пространства. Команда [B]df выводит сводку заполнения каждого диска. Для переполненных файловых систем команда du -s /filesystem/* выводит общую сумму использованных блоков для каждого каталога. Можно просматривать цепочку наиболее загруженных каталогов и выявлять файлы, которые можно перемещать, архивировать или удалять. Применение команды find с параметром size позволяет автоматизировать эту же операцию.
GlancePlus - это графическое средство диагностики производительности в реальном времени, предлагаемое компанией Hewlett-Packard для системы HP-UX. Оно может вызываться в графическом режиме с помощью команды gpm. Символьный компонент этой утилиты - Glance - вызывается командой glance. Комбинируя функции описанных выше утилит, системные администраторы могут анализировать системные ресурсы и избавляться от узких мест в производительности системы.
При первой инициализации программа GlancePlus отображает экран Global или Process Summary. Если график использования памяти дает большие всплески, нажмите клавишу F2, F3 или F4 для прекращения испытания и вызова детализирующих экранов, позволяющих идентифицировать соответствующие процессы и пользователей. Эти детализирующие экраны позволяют отслеживать многие ресурсы системы, такие как ЦПУ, память, область подкачки, ввод/вывод на диски, nfs, lan и т.п. Дальнейшая информация выводится в экранах Individual Process.
Программа пользуется популярностью за обилие предоставляемой информации и легкость в применении. GlancePlus и ее компонент Glance - ценные утилиты для устранения неполадок системы и рекомендуются для применения каждым, кому приходится этим заниматься.
Следующий набор утилит и процедур описывает историю операций пользователей. Во-первых, многие сетевые утилиты могут переводиться в режим вывода подробной информации. Например, команды fingerd, ftpd, tftpd и rshd принимают опцию -1 или -L, которая заставляет их соотносить информацию о соединении с системным log-файлом. Обычно добавление этих опций обрабатывается путем модификации операторов вызова этих программ в файле конфигурации /etc/inetd.conf и последующего перезапуска inetd посредством следующей команды: killall -HUP inetd. В дальнейшем файл может быть модифицирован совместно с подключаемым пакетом, называемом tcp_wrappers, созданным Wietse Venema. Пакет может управлять портом и служить активным ограничивающим демоном, в зависимости от того, как он сконфигурирован. В любом случае лучше иметь возможность определять и ограничивать потребление пользователями ресурсов сети.
Небольшие изменения в файле конфигурации syslog (обычно находящемся по адресу /etc/syslog/conf) могут вызывать дополнительную информацию. Например, можно вставить запись в последнюю строку файла конфигурации, если ее еще нет:
mail.debug /some_legal_directory/syslog
Затем утилита syslogd повторно считывает этот модифицированный файл, путем выполнения команды:
kill -HUP syslogd_process_id
Это вызывает размещение сообщений mail to, from и deferred в log-файле очереди почтовых сообщений, /some_legal_directory/syslog. Это способствует лучшему пониманию почтового графика и лучшему управлению почтой, а также удовлетворению потребностей пользователя.
Еще одно средство отображения истории операций - утилита last, выводящая информацию о том, какие пользователи входят в систему, с каких хостов и на какое время. Эта программа обычно используется совместно с acctcom или lastcomm. Acctcom и lastcomm фиксируют потребление ресурсов системы пользователями и порты tty. Они дают администраторам сведения о том, для чего используется система и сколько ресурсов ЦПУ и памяти потраченор на каждую задачу конкретного пользователя. Вывод показывает, когда система наиболее загружена и почему. Чтобы эти утилиты функционировали, нужно включить режим учета ресурсов системы и обеспечить пространство, достаточное для появления и роста файлов учета ресурсов. Для лучшего понимания работы функций учета, а также того, какие режимы должны быть включены и какие процессы должны выполняться, обратитесь к man-страницам для accton и sa (BSD), или acct и runacct (System V). Эти файлы данных можно в нерабочие часы преобразовывать в читаемые log-файлы, показывающие использование ресурсов дисков, ЦПУ, памяти, принтеров, статистику соединений и команд. И опять-таки, это способствует более легкому выявлению того, кто использует конкретные системные ресурсы. Процесс также позволяет выставлять счета клиентам за использование ресурсов.
Контроль пользователей также подразумевает их защиту от самих себя. В обязанности администратора входит коррекция устойчивости системы в целом и исправление созданных самими пользователями проблем в частности. Здесь особенно удобно применение утилиты find. В большинстве случаев пользователи не должны иметь каталогов с глобальным доступом для записи и, вероятно, с глобальным доступом для чтения, если нужно поддерживать какое-то подобие защиты. Команда
find /user_directory_home /( -perm -o=w -o -perm -o=r /) -type d
находит все каталоги с глобальным доступом для чтения или записи. Если таких каталогов обнаруживается много, нужно проверить стандартное значение umask, которое пользователи получают при входе в систему. Возможно значение 077 будет правильным. Файлы пользователей .rhosts и .netrc также не должны быть доступны для чтения или записи, иначе это будет на руку взломщикам. Команда
find / us er_di rectory_ home /( -name .rhosts -o -name .netrc \) \( -perm -o=r -o -perm -g=r \)
находит все файлы .rhosts и .netrc с глобальным доступом для чтения. В системе, особенно в каталогах пользователей, должно быть как можно меньше неизвестных программ UID (SUID), которые представляют угрозу для каждого пользователя и файла. Команда
find /-perm -u=s
генерирует список всех SUID-программ системы. Добавление в командную строку параметра -user root приводит к выводу всех SUID-файлов с привилегиями root, поэтому можно проверить, что все ли подобные файлы находятся там, где положено. Можно загрузить из сети подключаемый пакет COPS (автор-Dan Farmers) и сконфигурировать его так, чтобы выполнялись проверки, подобные рассмотренным, а также более интенсивные запросы, касающиеся защищенности.
Лучший способ защищать пользователей от их собственных ошибок - создавать по ночам резервные копии их файлов. В зависимости от объема сохраняемой информации, хорошим решением может быть сохранение инкрементного дампа каждую ночь и полного дампа еженедельно.
Другая стратегия состоит в том, чтобы предоставить пользователям альтернативную команду rm, которая не удаляет файлы (по крайней мере сразу). Команда помещает файл во временную область, в которой удаляются файлы предопределенного срока давности.
Команды ограничения пользователей
Применение квот на ресурсы диска призвано защищать систему от истощения ресурсов небольшим числом пользователей. Ограничение использования дискового пространства начинается с выполнения команды /quotaon /user_filesystem. Эта команда включает механизм дисковых квот пользователей, размещенных в файловой системе user_filesystem. В результате выполнения команды edquota определяется, какое пространство каждый пользователь может занимать. Общая форма этой команды имеет следующий вид:
edquota [-p prevlosly_ctefinedl_quota_username} username
Например, команда edquota charlene запускает сеанс редактирования, позволяющий установить (переустановить) "жесткие" (hard) и "буферные" (soft) квоты общего дискового пространства в килобайтах и общее число используемых индексных дескрипторов. Разница между "жесткими" и "буферными" значениями состоит в том, что жесткие ни в коем случае не могут быть превышены. При переходе буферного предела запускается таймер. Если использование дискового пространства опускается ниже этого предела, таймер сбрасывается. Когда таймер срабатывает, ситуация обрабатывается также, как и при превышении жесткого предела. Команда edquota -p charlene georgia не выводит редактор, но, вместо этого, дублирует квоту пользователя charlene для пользователя georgia.
Для вывода данных об использовании ресурсов диска пользователями служит команда quota -v username.., или requota /user_filesystem. Команда quota выдает отчет о расходе ресурсов и ограничениях для указанного пользователя (username). Если параметр -v опущен, выводятся данные только для указанных пользователей, перерасходовавших свои лимиты. Команда repquota выводит сводку всех пользователей, перечисленных в файле passwd для указанной файловой системы {user_filesy stem). Здесь также отображаются данные по использованию ресурсов диска и ограничениях. Ниже приводится пример команды quota и ее вывода.
quota -v jamie Disk quotas for jamie (uid 315):
Filesystem usage quota limit timeleft files quota limit timeleft /usri 26015 25600 30720 5.1 days 488 500 750
Пользователь jamie перерасходовала допустимое количество килобайт дискового пространства и имеет в запасе 5,1 дня, чтобы снизить этот показатель. Она может создать еще 12 файлов (если хватит дискового пространства) перед тем, как получит сигнал о перерасходе индексных дескрипторов.
Команда repquota отличается тем, что выводит перечень всех пользователей, для которых действуют квоты. Ниже приводится пример вывода этой команды:
Disk limits File limits
User used soft hard timeleft used soft hard timeleft
alyssa - 00417 25600 30720 0043 200 250
james - 12871 25600 30720 0149 200 250
wayne -+ 04635 25600 30720 1072 500 750 EXPIRED
rayna - 00002 25600 30720 0003 200 250
Steve - 11786 25600 30720 0155 200 250
judy - 00015 25600 30720 0013 200 250
jamie +- 26015 25600 30720 5.1 days 0488 500 750
holly -+ 11872 25600 30720 0200 200 250 6.0 days
kenny - 02737 25600 30720 0134 200 250
irene - 02704 25600 30720 0070 200 250
bert - 03070 25600 30720 0173 200 250
al - 00613 25600 30720 0021 200 250
connie -- 00558 25600 30720 0025 200 250
charlene - 00539 25600 30720 0016 200 250
dave +- 50226 50000 60000 EXPIRED 0430 500 750
mike -- 03853 25600 30720 0020 200 250
ann - 05308 25600 30720 0162 200 250
kirstin - 20672 25600 30720 0191 300 350
matthew - 00444 25600 30720 0012 200 250
John - 01303 25600 30720 0067 200 250
Из таблицы видно, что wayne и dave не смогли уложиться в ограничения и им отказано в пользовании системой. Пользователям jamie и holly придется снизить потребление ресурсов в указанный период, иначе им также будет отказано в доступе к системе. Вместо этого можно увеличить для них квоты.
Следует контролировать использование файлов входящей почты, как часть общего расхода ресурсов диска, поскольку обычно все пользователи обращаются к общему пространству почтового каталога. Здесь одна "свинья" может подрыть всю систему. Команда
ls -l /var/mail | awk '{if $5 > 500000) printf"%-8.8s - %ld\n", $3, $5}'
выводит список всех пользователей, для которых объем почтовых файлов превышает полмиллиона символов. Можно вежливо попросить такого пользователя снизить число сообщений, либо уменьшить занимаемое файлами пространство путем их сохранения и сжатия или архивирования и удаления.
Анонимный FTP
Обзор администрирования пользователей не будет полным, если не упомянуть использование очень
специфического, если не сказать незащищенного, бюджета пользователя. Этот последний раздел посвящен настройке бюджета анонимного FTP.
Во-первых, создайте для бюджета запись в файле passwd. Запись должна содержать уникальный идентификатор пользователя, идентификатор группы, соответствующий пользователю, недопустимый пароль и оболочку. Пример записи:
ftp:*:500:ftp:Anonymous ftp
user:/usr_ftp_home_directory/ftp:/bin/false
Во-вторых, создайте начальный каталог пользователя ftp.
mkdir /usr_ftp_home_directory/ftp
cd /usr_ftp_home_directory/ftp
mkdir bin etc [lib] [dev] pub
mkdir pub/incoming
chown -R root .
chgrp ftp . pub
chmod ugo+rx . pub [lib]
chmod ugo+x bin etc [dev]
chmod u+rwx,o+wx,+t pub/incoming
В-третьих, заполните каталоги необходимой информацией.
ср /bin or /sbin/ls bin
chmod ugo+x bin/Is
[ ср /usr/lib/libdi.so.* lib ]
[ chmod ugo+rx lib/libdi.so.* ]
[ Is -1 /dev/zero ]
[ mknod dev/zero с major* minor* ] - major/minor numbers are the comma
seperated entries directly left of the date in the ouput of the "Is" command.
[ chmod ugo+r dev/zero ]
[ create an etc/passwd file that includes root, daemon, and ftp whose
passwords are "*" ]
[ create an etc/group file that includes the root default group and the ftp group ]
Бюджет анонимного FTP создан. Убедитесь, что все настроено правильно, проверьте анонимный каталог ftp. Ftp не должен принадлежать ни один файл или каталог, поскольку возможна вставка файлов, играющих роль троянского коня. Подключитесь в качестве анонимного ftp и попытайтесь создать файл в текущем рабочем каталоге. Если вам это удалось, в безопасности системы - "дыра".
Резюме
Хоть это и кажется неблагодарной работой, но самое лучшее администрирование пользователей - это такое, которого не замечают. Вы должны отвечать на вопросы, но во всем остальном оставаться невидимым для пользователей. Пользуйтесь многообразием средств администрирования UNIX совместно с пакетами-надстройками для надзора, контроля и ограничения бюджета пользователей. Довольные пользователи не создают проблем, что дает администратору больше свободного времени для тщательного изучения остальных областей системы и позволяет сконцентрировать усилия на повышении производительности, а не на решении возникающих проблем.