Команды контроля пользователей

Иногда администрирование пользователей требует выполнения расследования, поскольку, среди прочего, машина иногда оказывается перегруженной, защита - нарушенной, либо запрашивается статистическая информация. Для таких случаев 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, которая не удаляет файлы (по крайней мере сразу). Команда помещает файл во временную область, в которой удаляются файлы предопределенного срока давности.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: