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