ГЛАВА 17. ОБЩЕЕ АДМИНИСТРИРОВАНИЕ СИСТЕМЫ

1. Глава 17. Общее администрирование системы

 

Глава 17. Общее администрирование системы

  • Управление группами
  • Запуск системы
  • Составление расписания заданий в Crond
  • Управление системными журналами

В этой главе рассмотрены некоторые основные задачи администрирования, необходимые для поддержании системы Linux в рабочем состоянии.

Одна из важнейших задач в Linux - будь-то сервер сети или домашний компьютер, совместно используемый членами семьи - управление пользователями. Последнее включает ряд задач - от смены пароля в учетной записи пользователя до контроля того, чтобы исходный каталог каждого пользователя соответствовал правилам, определенным администратором системы при создании его учетной записи.

Даже в относительно простых системах доступ к ресурсам предоставляется и отдельным пользователям, и группам пользователей. Группа - это некоторое количество пользователей, объединенных по определенному организационному принципу и обозначенных общим именем. Linux обладает средствами объединения пользователей в группы и.регулирования доступа к системным ресурсам для этих групп.

Еще одно средство администрирования - очень важное с точки зрения эффективного использования Linux - автоматизация выполнения заданий, запускаемых вручную либо по расписанию. Реализованный в Linux принцип рабочих уровней обеспечивает эффективный механизм определения того, что и в какой момент должно происходить при запуске системы (как и при ее выключении). Программа Сгоп из Unix - механизм составления расписания запуска заданий, а также регулярного (ежедневного, еженедельного, ежемесячного или ежегодного) выполнения определенных операций.

Наконец, в Linux реализованы сложные средства регистрации, позволяющие знать все, что происходит в системе. Естественно, эти средства требуют регулярного обслуживания. Файл регистрационного журнала с записями за целый год слишком велик, чтобы можно было эффективно использовать его для локализации текущих проблем.

 

2. Управление пользователями

 

Управление пользователями

В гл. 15 мы говорили об управлении пользователями, когда рассматривали панель управления Linux Red Hat 7.1. Однако панель управления входит не во все дистрибутивы Linux, так что для полного освоения задач администрирования следует научиться работать без нее.

 

3. Создание учетной записи пользователя

 

Создание учетной записи пользователя

Для создания учетной записи пользователя в Linux применяется команда useradd (обычно в каталоге /usr/sbin/, в некоторых системах именуемая adduser). Версия команды useradd из комплекта Linux Red Hat 7.1 - в высшей степени сложный инструмент, превращающий создание учетной записи в исключительно простую операцию. Начнем с простейших примеров, чтобы затем

перейти к рассмотрению более сложных ситуаций. Простейший способ создания учетной записи пользователя - с параметрами, устанавливаемыми по умолчанию. Например, чтобы создать учетную запись для пользователя testuserl, достаточно ввести

# /usr/sbin/useradd testuserl

По этой команде выполняется следующая последовательность операций создания учетной записи.

  • Создание записи в файле /etc/passwd без указания пароля. В Linux Red Hat 7.1 пользователь не может воспользоваться своей учетной записью, пока не определен пароль.-
  • Присвоение пользователю идентификатора. В Linux Red Hat 7.1 в качестве идентификатора пользователя по умолчанию выбирается минимальное число, которое больше 500 и больше идентификаторов всех существующих пользователей.
  • Включение пользователя в определенную группу. В Linux Red Hat 7.1 это означает создание группы, в которую будет включен один конкретный пользователь.
  • Создание исходного каталога для данного пользователя (в большинстве систем Linux - каталог /home/testuserl) и копирование в него содержимого скелетного каталога /etc/skel. Подробнее скелетные каталоги рассмотрены далее в параграфе "Установка исходного каталога по умолчанию".

Примечание

В Red Hat Linux 7.1 опции по умолчанию для создания учетной записи нового пользователя специфицированы в конфигурационных файлах /etc /login, defs и /etc/default/useradd.

При создании учетной записи по команде useradd задача предоставления пароля пользователю остается за администратором системы. Метод присвоения пароля рассмотрен далее в параграфе "Смена пароля".

Что произойдет, если поменять схему предоставления пользователю идентификатора? Представьте организацию, в которой идентификаторы пользователей в Linux Red Hat присваиваются по индивидуальным идентификационным номерам сотрудников. В этом случае придется указывать идентификатор в команде создания учетной записи, для чего служит флажок -и.

# useradd -и 10001 testuserl

По этой команде создается учетная запись пользователя testuserl с идентификационным номером 10001.

Что нужно сделать, чтобы добавить нового пользователя в определенную группу? Как добавить нового пользователя в группу (например, users) а не создавать для него отдельную группу? Для этого существует флажок -g.

# useradd -g users testuserl

Предположим, пользователь testuserl должен быть включен не только в группу users. но и в группы groupl и group2. Эту операцию можно отложить до более удобного времени (до изучения операций, рассмотренных в параграфе, посвященном управлению группами). Однако и это можно сделать, если при создании учетной записи указать в команде useradd флажок -G.

# useradd -g users -G groupl,group2 testuserl

Наконец, Чтобы определить пользователю другой исходный каталог, укажите в команде флажок -d.

# useradd -d /other/home/directory testuserl

 

4. Изменение параметров по умолчанию команды useradd

 

Изменение параметров по умолчанию команды useradd

Иногда требуется изменить значения некоторых параметров, устанавливаемые по умолчанию в команде useradd. Например, может понадобиться установить исходные каталоги пользователей в каталоге /users, а не /home, или добавить новых пользователей в группу users автоматически, не создавая для каждого собственную группу.

Для установки новых значений параметров по умолчанию можно воспользоваться все той же командой useradd с флажком -D и несколькими дополнительными флажками. Флажок -D указывает, что команда вводится не для создания учетной записи пользователя, а для изменения установок по умолчанию.

Флажок -D используется в сочетании с несколькими дополнительными флажками. Рассмотрим применение флажков -b и -g для переустановки, соответственно, исходного каталога и группы по умолчанию.

Команда определения исходного каталога по умолчанию в каталоге /users следующая:

# useradd -D -b /users

Чтобы установить по умолчанию группу users для новых пользователей, введите команду

# useradd -D -g users

Обе команды можно объединить в одну.

# useradd -D -Ь /users -g users

 

5. Смена пароля

 

Смена пароля

Для смены пароля применяется команда passwd. Любой пользователь может поменять свой пароль, введя эту команду в командной строке. Система потребует ввести старый пароль, затем -дважды новый (для подтверждения).

$ passwd

Changing password for test

(current) UNIX password: New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully

Смена пароля для test (текущий) пароль UNIX: Новый пароль UNIX: Повторить ввод пароля UNIX: passwd: Изменение всех аутентификационных признаков выполнено успешно

Во многих версиях Linux команда passwd проверяет, не слишком ли пароль короток, прост, напоминает имя пользователя или прежний пароль. Если пароль не удовлетворяет какому-либо из условий, выводится сообщение об ошибке наподобие следующего.

$ passwd

BAD PASSWORD: it does not contain enough DIFFERENT characters New UNIX password:

Смена пароля для test (текущий) пароль UNIX: Новый пароль UNIX:

НЕВЕРНЫЙ ПАРОЛЬ: недостаточное число РАЗЛИЧНЫХ символов Новый пароль UNIX: НЕВЕРНЫЙ ПАРОЛЬ: слишком короток Новый пароль UNIX: НЕВЕРНЫЙ ПАРОЛЬ: слишком прост passwd: Ошибка при попытке изменения аутентификационного признака

Предупреждение

Если в ранних версиях Red Hat Linux игнорировать предупреждение BAD PASSWORD, то можно использовать в качестве пароля слово из словаря. Начиная с версии Red Hat Linux 7.1, эта возможность доступна только для корневых пользователей.

Корневой пользователь может поменять пароль любого другого пользователя, указав его имя как параметр программы passwd. Нужно лишь дважды ввести новый парблъ.

passwd: all authentication tokens updated successfully

Новый пароль UNIX:

Повторить ввод пароля UNIX:

passwd: Изменение всех аутентификационных признаков выполнено успешно

 

6. Установка исходного каталога по умолчанию

 

Установка исходного каталога по умолчанию

В параграфе "Создание учетной записи пользователя" упоминались скелетные каталоги. По умолчанию каждому пользователю назначается исходный каталог (обычно в каталоге /home). При создании учетной записи пользователя, создается и соответствующий исходный каталог, в который копируется некоторый стандартный набор файлов из каталога /etc/skel, служащего скелетным каталогом для создаваемых исходных каталогов пользователей.

Чтобы добавить новый файл к записываемым в создаваемый каталог, поместите этот файл в каталог /etc/skel под тем именем, под которым он должен появиться в исходных каталогах пользователей.

 

7. Удаление учетной записи пользователя

 

Удаление учетной записи пользователя

Удаление учетной записи пользователя - процесс, обратный ее созданию. Удаление производится командой userdel. К счастью, по сравнению с командой useradd, ее применение гораздо проще. Чтобы удалить учетную запись с удалением соответствующих записей из системных файлов (например, из файла /etc/passwd), введите команду с именем пользователя в качестве аргумента.

# /usr/sbin/userdel username

При таком удалении учетной записи не удаляются файлы пользователя. Для одновременного удаления исходного каталога необходимо установить флажок -r.

# /usr/sbin/userdel -r username

Остается еще один вопрос: что делать, если у пользователя остались файлы в других каталогах системы? Здесь поможет команда find. Прежде чем удалять учетную запись, запишите идентификатор пользователя, чтобы затем указать его в команде find.

# fitad / -type f -uid 503 -print -exec rm {} \;

Разобьем эту команду на составляющие.

  • Косая (/) указывает, что поиск ведется по всей структуре каталогов, начиная с верхнего уровня.
  • Параметр -type f указывает, что ведется поиск только файлов.
  • Параметр-uid 503 указывает, что ведется поиск только файлов, принадлежащих пользователю с идентификационным номером 503 (это значение следует заменить идентификационным номером реального пользователя).
  • Параметр -print указывает на необходимость вывода имен файлов по мере их обнаружения для отслеживания выполнения команды.
  • Параметр -exec rm {} \ указывает, что при обнаружении каждого файла должна выполняться команда rm для его удаления.

Предупреждение

Следует быть очень осторожным при вводе описанной команды. Поскольку она запускается корневым пользователем, ошибка в указании идентификатора пользователя может привести к утере важных данных. Не следует применять эту команду без крайней надобности.

 

8. Управление группами

 

Управление группами

Управление группами (объединениями пользователей) ничуть не сложнее управления пользователями. В Linux предусмотрены команды для автоматизации создания и модификации групп, аналогичные тем, которые применяются для управления пользователями.

Примечание

В разных системах работа этих команд может отличаться от описанного. Если у вас ус-тановлел Linux не с диска Red Hat, прилагаемого к книге, то сначала изучите документацию.

 

9. Создание группы

 

Создание группы

Новая группа создается командой groupadd (в некоторых дистрибутивах - addgroup). Чтобы создать группу, введите эту команду с именем создаваемой группы в качестве аргумента.

# /usr/sbin/groupadd groupname

Созданной группе присваивается идентификационный номер, равный минимальному значению, которое больше 500 и больше значений идентификационных номеров остальных групп. Некоторые другие дистрибутивы Linux по умолчанию включают новых пользователей в группу (100).

Можно присвоить создаваемой группе идентификационный номер по своему усмотрению, введя команду с флажком -д.

# groupadd -g 503 groupname

В файле /-etc/group должна появиться следующая запись:

groupname: :503: означающая пустую группу с идентификационным номером 503.

Примечание

Если вы забыли номер требуемой группы, его можно найти в списке идентификационных номеров существующих групп, хранящемся в файле /etc/group.

 

10. Добавление пользователя в группу

 

Добавление пользователя в группу

К сожалению, не существует программ, обеспечивающих простую процедуру включения пользователя в группу. Проще всего это делается редактированием файла /etc/group, каждая строка которого является определением группы.

groupname::password:groupid:userlist Элементы этой строки следующие.

  • groupname — имя группы.
  • password - зашифрованный пароль группы. (Поскольку пароль для доступа к группам не применяется, обычно здесь нет никакой записи.)
  • groupid - уникальный идентификационный номер группы.
  • userlist - список пользователей группы, перечисленных через запятую.

Например, если в группу groupl с идентификационным номером 505 входят пользователи userl,user2 и user3, то строка этой группы в файле /etc/group будет следующей.

groupl::505:userl,user2,user3

Чтобы ввести в группу нового пользователя, откройте файл /etc/group в привычном текстовом редакторе и добавьте этого пользователя в конец строки соответствующей группы, отделив его имя от остальных пользователей запятой.

 

11. Удаление группы

 

Удаление группы

Удаление группы происходит по команде groupdel. Это совсем простая команда без каких-либо флажков. Единственный параметр - имя удаляемой группы.

# /usr/sbin/groupdel groupname

При всей простоте команды процесс удаления группы связан с некоторыми тонкостями.

  1. Файлы, принадлежавшие удаленной группе, не удаляются и не передаются другой группе.
  2. Если для некоторого пользователя группа первична (то есть, именно она указана как группа этого пользователя в файле паролей), ее нельзя удалить.

Первая проблема решается точно так же, как и при удалении учетной записи. Сначала записывается идентификационный номер группы (его можно найти в файле /etc/group), затем, после удаления группы, при помощи команды find меняется принадлежность всех файлов этой группы.

# find / -type f -gid 503 -print -exec chgrp newgroupname {} \;

По этой команде находятся все файлы, принадлежавшие группе с идентификационным номером 503, и при помощи команды chgrp передаются группе newgroupname.

 

12. Запуск системы

 

Запуск системы

Есть процесс, который остается тайной для многих пользователей Unix (но не для администраторов систем). Это последовательность загрузки системы, когда по экрану пробегают таинственные сообщения.

Примечание

Сообщения, выводимые при запуске, записываются в файл системного журнала /var/log/ messages. Файлы журналов (регистрационные) рассмотрены далее в главе.

 

13. Что происходит при загрузке?

 

Что происходит при загрузке?

Цикл загрузки в действительности проще, чем можно судить по выводимым сообщениям. Он состоит из двух основных этапов.

  1. Загрузка ядра с выводом сообщений об инициализации каждого драйвера устройства.
  2. Запуск программы init, который происходит после загрузки ядра и инициализации всех устройств. Программа init управляет запуском всех нужных программ во время загрузки системы, в том числе важных системных демонов.

 

14. Программа init

 

Программа init

В этом параграфе подробно рассмотрена программа init, поскольку именно с ней связана возможность определения программ, запускаемых во время загрузки системы. Задача программы init - запуск новых процессов и повторный запуск завершившихся. Прекрасным примером может служить набор процессов, обеспечивающих в Linux виртуальные консоли-входа в систему. В большинстве версий Linux шесть таких консолей загружаются при загрузке системы. После выхода из окна консоли соответствующий процесс завершается, и программа init запускает новый. В системе постоянно доступны шесть консольных окон.

Правила, по которым действует программа init, записаны в файле /etc/inittab. В Linux Red Hat 7.1 этот файл выглядит следующим образом.

#

# inittab В этом файле описана установка процессом INIT

# системы на определенном рабочем уровне. #

# Автор: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>

# Модифицировано для Linux Red Hat Марком Юингом

# (Marc Ewing) и Донни Барнсом (Dormie Barnes)

# Рабочий уровень по умолчанию. Рабочие уровни Linux Red Hat:

# 0 - останов (Не следует применять)

# 1 - Однопользовательский режим

# 2 - Многопользовательский, без NFS (Аналогичен уровню 3, но без сети)

# 3 - Полный многопользовательский режим

# 4 - не используется

# 5 - X11

# 6 - перезагрузка (Не следует применять) #

id:3:initdefault:

# Инициализация системы.

si::sysinit:/etc/re.d/rc.sysinit

10:0:wait:/etc/rc.d/rc 0

11:l:wait:/etc/re.d/rc 1

12:2rwait:/etc/re.d/rc 2

13:3:wait:/etc/re.d/rc 3

14:4:wait:/etc/re.d/rc 4

15:5:wait:/etc/re.d/rc 5

16 : 6 rwait: /etc/зге .d/rc 6

# Программы, запускаемые на всех уровнях, ud::once:/sbin/update

# Нажатие CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# Когда источник бесперебойного питания сообщает об отключении

# питания, до окончательного прекращения питания остается

# несколько минут.

# Планируем выключение системы через 2 минуты.

# Конечно, предполагается, что питание, в том числе источник

# бесперебойного питания, установлены и работают нормально.

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# Если питание восстановлено до выключения системы, отменить выключение. pr:12345:powerokwait:/sbin/shutdown -с "Power Restored; Shutdown Cancelled"

# Запуск gettys на стандартных рабочих уровнях 1:2345:respawn:/sbin/mingetty ttyl

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

# Запуск xdm на рабочем уровне 5

# xdm представляет отдельную службу

х:5:respawn:/usr/bin/X11/xdm -nodaemon

Необязательно писать такой файл самостоятельно, но важно понимать то, что в нем написано.

В Linux реализована система рабочих уровней (run levels). Рабочий уровень - это число, соответствующее текущему состоянию системы. Для разных рабочих уровней\пределены процессы, которые программа init должна запускать и поддерживать в рабочем состоянии. В первой записи файла init tab указан рабочий уровень, устанавливаемый по умолчанию во время загрузки системы. В предыдущем примере это уровень 3, соответствующий многопользовательскому консольному режиму.

Во втором поле каждой из последующих записей указано, для каких рабочих уровней эта запись действительна (поля разделены двоеточиями). Таким образом, для уровня 3 действительны следуг ющие строки:

13:3:wait:/etc/rc.d/rc 3

1:2345:respawn: /sbin/mingetty ttyl

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

Последние шесть строк указывают установку шести виртуальных консолей Linux, по первой стартует сценарий запуска /etc/rc.d/rc 3. Это приводит к запуску всех сценариев, записанных в каталоге /etc/re.d/rc3 .d. Эти сценарии представляют программы, запускаемые при инициализации системы - sendmail, службы PCMCIA, демон принтера и crond. Они определяют поведение системы по умолчанию и, как правило, не редактируются.

Примечание

Рабочие уровни и их сценарии очень сильно различаются в разных дистрибутивах Linux. Многопользовательский консольный режим часто ассоциируется с уровнем, отличным от 3. Кроме того, может быть другим и каталог, хранящий необходимые для этого режима сценарии.

Обратите внимание: последний сценарий, запускаемый файлом rc3.d - S991ocal. По существу, это ссылка на файл /etc/re. d/rc. local, в котором можно указать запуск любых программ в процессе загрузки системы.

В каждой системе Linux может быть своя структура файла /etc/inittab и каталога /etc/ re. d. Однако во всех системах в файле /etc/re. d/rc. local можно указать запуск собственных программ при загрузке системы.

 

15. Использование файла re. local

 

Использование файла re. local

Единственная роль файла re. local в Linux Red Hat 7.1 - установка формы командной строки.

if [ -f /etc/redhat-release ]; then R=$(cat /etc/redhat-release)

touch /var/lock/subsys/local

У страха глаза велики: на самом деле все не так сложно. Выполняется следующая последовательность операций.

  1. Указывается система Linux Red Hat.
  2. Указывается аппаратная архитектура -1386 (Intel) или ахр (Alpha).
  3. Указывается число процессоров (CPU) в вашем компьютере.
  4. В файл /etc/issue записывается содержимое строки входа в систему. Оно будет выводиться в каждой строке консоли.

Поскольку файл re.local- это стандартный сценарий оболочки, в него можно записывать все, что разрешено для такого сценария, в том числе команды установки переменных среды и запуска программ. Например, в одной из управляемых мною систем файл re. local запускает демон базы данных командой

# /usr/local/Minerva/bin/msqld &

Файл re. local можно использовать для запуска любых программ при загрузке системы. Например, чтобы получать электронную почту после загрузки какой-либо машины сети, добавьте в файл rс. local этой машины команду

# /bin/mail -s "Я загрузилась — машина такая-то" username@some .domain

Теперь при каждой загрузке этой машины будет отправляться сообщение электронной почты по адресу username@some. domain со строкой в поле темы: "Я загрузилась— машина такая-то".

 

16. Выключение системы

 

Выключение системы

С загрузкой системы связано и ее выключение. В Linux, как и в других многозадачных операционных системах, важно, чтобы выключение системы проходило без повреждения данных на жестких дисках. Обычно выключение происходит по команде shutdown, введенной корневым пользователем.

# shutdown -h now

Аргумент now указывает, что система должна быть выключена немедленно, флажок -h - что после выключения должен произойти останов системы. После вывода сообщения System Halted система остановлена) можно выключать питание компьютера.

Аналогичный процесс - перезагрузка системы командой reboot, при которой после выключе-ния системы происходит ее загрузка. Перезагрузка производится нажатием клавиш Ctrl+Alt+Delete, если только вы не заблокировали эту возможность в упоминавшемся выше файле /etc/ ini ttab.

Примечание

Полезно заблокировать возможность перезагрузки по Ctrl+Alt+Delete в файле /etc/inittab. По умолчанию в Red Hat Linux 7.1 все пользователи могут использовать эту комбинацию клавиш для перезагрузки, однако при многопользовательской работе есть опасность утери данных всеми работающими пользователями в случае перезагрузки компьютера одним из них.

 

17. Расписание заданий в crond

 

Расписание заданий в crond

Одно из важных достоинств многопользовательской операционной системы серверного класса, каковой является Linux, - возможность автоматизации многих процессов. Если использовать Linux как сервер электронной почты, Web- или FTP-сервер, то ему придется отвечать автоматически на все поступающие запросы. Кроме того, отдельные пользователи, как и администратор системы, могут составлять расписания для автоматического запуска заданий.

Автоматический запуск выполняется демоном crond. Это стандартный демон, устанавливаемый при каждой загрузке системы.

 

18. Как работает crond

 

Как работает crond

Принцип работы демона crond на удивление прост. После запуска (как правило, при загрузке системы) демон просыпается каждую минуту и проверяет, не запланирован ли запуск в эту минуту каких-либо программ. Если такие программы находятся, демон запускает их и отправляет по электронной почте сообщения пользователям, запланировавшим запуск.

Поскольку crond ежеминутно проверяет даты модификации конфигурационных файлов, изменения в расписании не остаются незамеченными, и нет необходимости перезагружать систему.

 

19. Составление расписания заданий

 

Составление расписания заданий

Составление расписания - задача несложная. Расписание размещается в отдельном файле crontab. В каждой строке файла помещается задание, которое должно быть запущено в определенное время.

Рассмотрим формат записей файла crontab.

time-date command

Часть time-date (время-дата) состоит из пяти числовых полей, разделенных пробелами и определяющих время запуска задания. Это следующие поля (слева направо).

  • Минуты. Допустимые значения: 0-59.
  • Часы. Допустимые значения: 0-23.
  • День месяца. Допустимые значения: 0—31.
  • Месяц. Допустимые значения: 0—12. Месяц можно указать тремя первыми буквами его (английского) названия.
  • День недели. Допустимые значения: 0—7, где 0 и 7 - воскресенье.

Для удобства заполнения указанных полей введены следующие правила.

  • Можно указывать значения в виде численных интервалов. К примеру, интервал 1—3 в поле часов означает 1.00, 2.00 и 3.00 пополуночи, 2—4 в поле дня недели- вторник, среду или четверг.
  • Интервалы можно задавать с шагом больше единицы. Например, чтобы указать каждый второй час, начиная с полуночи, следует установить интервал 0—23 с шагом 2 через косую черту: 0-23/2.
  • ЗвеЗдочка (*) указывает полный интервал значений поля - от минимального до максимального. Например, в поле дня месяца звездочка означает интервал 0—31, в поле дня недели - 0—7.
  • День недели или месяц можно указать первыми тремя буквами его (английского) названия.

Примеры времени-даты

Рассмотрим несколько примеров заполнения полей времени-даты.

0 1 Запуск задания ежедневно в 1.00 пополуночи

30 14 * * 0 Запуск задания по воскресеньям в 2.30 пополудни

Запуск задания в первый полдень каждого месяца

0.12 * 1. mоn Запуск задания в полдень каждого понедельника января каждого года

0 12 2 feb * Запуск задания в полдень второго февраля каждого года

Поле command

Поле command (команда) отделено от полей времени-даты одним или несколькими пробелами и простирается до конца строки. Команды обрабатываются оболочкой /bin/sh.

Например, следующая запись в файле crontab предусматривает ежедневный запуск программы /usr/local/bin/backupB 1.00 пополуночи.

0 1 * * * /usr/local/bin/backup

Некоторым командам (например, mail) требуется ввод информации с устройства стандартного ввода. Это указывается при помощи знака процента (%). Первый такой знак обозначает начало стандартного ввода, каждый последующий — смену строки.

Таким образом, следующая запись в файле crontab:

->богу, уже пятница%%Я.

предписывает отправлять сообщение электронной почты:

Слава богу, уже пятница Я по адресу armand@landegg. edu каждую пятницу в 2.10 пополудни.

Редактирование файла crontab

Файл crontab редактируется командой crontab -e. Возможны два подхода: создание нового файла со всеми записями, которые должны входить в файл crontab, с последующей его записью на диск под этим именем по команде crontab; или непосредственное редактирование файла по команде crontab -e.

Запись из файла

Для записи содержимого файла crontab из другого файла необходимо создать этот другой файл (в привычном текстовом редакторе) со всеми записями, из которых должен состоять файл crontab. Это могут быть, к примеру, следующие две записи.

->богу, уже пятница%%Я.

Созданному файлу следует присвоить подходящее имя, например сron jobs. После того, как указанный файл создан, его содержимое необходимо записать в файл crontab командой

$ crontab cronjobs

Содержимое файла cronjobs полностью заменит содержимое файла crontab данного пользователя. Используя этот метод, любой пользователь может редактировать свой файл crontab. Корневой пользователь обладает особым правом редактировать файлы crontab остальных

пользователей. Редактирование чужого файла указывается флажком -и. Например, по команде

# crontab -u username cronjobs

файл cronj obs записывается как файл crontab пользователя username.

Непосредственное редактирование файла crontab

Команда crontab позволяет избежать многоступенчатой операции с созданием отдельного файла. Если ввести команду crontab с флажком -е, можно редактировать файл crontab непосредственно.

По умолчанию по команде crontab с флажком -е файл crontab загружается в редактор vi. Редактор vi - мощный, хотя и сложный инструмент, популярный среди опытных пользователей Unix. Тот, кто предпочитает другой редактор, например xedit, может установить соответствующее значение переменной среды EDITOR.

$ export EDITOR=xedit

После этого ввод команды

$ crontab -е

приводит к открытию файла crontab в указанном редакторе (рис. 17.1).


Рис. 17.1. Редактирование файла crontab в редакторе xedit

Подобно тому, как обычный пользователь может редактировать собственный файл crontab, корневой пользователь может редактировать файлы crontab остальных пользователей. Для этого используется команда

$ crontab -u user-name -e

Просмотр файла crontab

Для просмотра содержимого файла crontab введите команду crontab с флажком -1.

$ crontab -1

30 14 * * frl /bln/mall -s "TGlF" armand@landegg.ес1и%Слава богу, уже пятница%%Я

Обратите внимание на строки комментариев, начинающиеся с символа "#". Корневой пользователь может просматривать файлы crontab остальных пользователей.

# crontab -u username -1

Удаление файла crontab

Чтобы удалить содержимое своего файла crontab, пользователь должен ввести команду crontab с флажком -r.

$ crontab -r

Корневой пользователь может удалять файлы crontab остальных пользователей.

# crontab -u user-name -r

 

17.1.gif

Изображение: 

20. Управление системными журналами

 

Управление системными журналами

Одно из достоинств Llnux (и всех разновидностей Unlx) - наличие стандартизированного механизма регистрации активности всех демонов и запускаемых программ. Данные, записываемые в регистрационные журналы, можно использовать для поиска неисправностей в системе (будь-то нарушение безопасности или предупреждение о возможном отказе оборудования) либо отслеживания ее загрузки.

Например, в приведенном далее фрагменте файла главного системного журнала Llnux Red Hat 7.1 (/var/ log/messages) представлены многочисленные записи, сделанные в течение двух минут работы системы.

May .9 11:33:04 laptop71 xinetd[5598]: libwrap

May 9 11:33:04 laptop71 xinetd[5598]: options compiled in.

May 9 11:33:05 laptop71 xinetd: xinetd startup succeeded

May 9 11:33:21 laptop71 kernel: ethO: flipped to lObaseT .

generation=8

О чем можно узнать из этого файла? Программа network информирует вас о том, что сетевой интерфейс ethO был выключен и перезапущен в сети типа lObaseT, что xinetd отключил ряд сервисов перед перезапуском, и что имела место передача файла smb (Samba) с РГО равным 2190.

 

21. Что заносится в журнал

 

Что заносится в журнал

Очень важно понимать различия между журналами системы Linux. Существует два основных типа журналов: системные журналы и журналы приложений. В этом параграфе мы рассматриваем системные журналы, поскольку они есть в любой системе. Что касается журналов приложений, то каждое приложение (программа) может иметь (или не иметь) свой журнал, зависящий от конфигурации этой программы.

В системные журналы, как правило, записываются сообщения и предупреждения ядра системы, в том числе о загрузке модулей, данные от демона sendmail, отслеживающего сообщения, обрабатываемые системой, а также сообщения об успешных или неудачных попытках входа в систему.

Записи в системные журналы заносятся демоном syslogd, запускаемым при загрузке системы. Демон получает сообщения восьми уровней серьезности от различных процессов - ядра, системы электронной почты, пользовательских программ, конфигурированных на использование syslogd, а также аутентификационных программ, наподобие программы входа в систему.

Перечислим уровни серьезности сообщений в порядке возрастания:

  • debug (отладочные);
  • info (информационные);
  • notiсе (извещения);
  • warning (предупреждения);
  • err (сообщения об ошибках);
  • crit (критические);
  • alert (предостережения);
  • emerg (аварийные).

По этим уровням, записанным в файле /etc/syslog. conf, демон syslogd определяет, в какие журналы заносить те или иные сведения. Файл /etc/ syslog. conf содержит множество записей - по одной на строку по два поля, разделенных пробелами, в каждой. Левое поле содержит список источников и уровней сообщений, правое - файл журнала, в который они заносятся.

Пары источник-уровень в левом поле перечисляются через точку с запятой. Источники указаны по именам — например, mail (электронная почта), kern (ядро системы), user (программы пользователей) или auth (аутентификационные программы). Примеры пар источник-уровень:

  • mail. err: сообщения об ошибках, генерируемые демоном электронной почты;
  • * . info: все информационные сообщения;
  • kern. emerg: аварийные сообщения от ядра.

Рассмотрим файл / etc / sys log . conf, входящий в дистрибутив Linux Red Hat 7.1.

*.info;mail.none,news.none;authpriv.none /var/log/messages

В ней указана запись всех информационных сообщений, кроме сообщений от программ электронной почты, групп новостей и аутентификационных программ (обозначенных составляющими

mail .none;news .none; authpriv.none), в файл /var/log/messages. Далее следует строка

authpriv.* /var/log/secure

предписывающая запись всех аутентификационных сообщений в файл /var / log /secure.

В следующей строке указано помещать все сообщения от программ электронной почты в файл/var/log/maillog.

mail.* /var/log/maillog

Наконец, строка

uucp,news.crit /var/log/spooler

указывает, что определенные сообщения, связанные с работой программ электронной почты и новостей, записываются в файл /var /log/spooler.

Вероятно, вы обратили внимание, что сообщения распределяются по разным файлам. Это делается для ограничения объемов журналов, а также для частичной классификации сообщений. Если сваливать в один файл сообщения от всех источников и всех уровней серьезности, разобраться в этом файле будет невозможно.

Стратегию ведения регистрационных журналов можно поменять, изменив файл /etc/syslog. conf и заставив демон syslogd загрузить новые конфигурационные данные командой

# kill -HUP `cat /var/run/syslogd.pid"

Обратите внимание на применение обратных кавычек, указывающих, что стандартный вывод заключенной в них команды используется как аргумент команды kill -HUP. Флажок -HUP команды kill указывает, что процесс должен заново считать конфигурационные данные без завершения работы.

 

22. Ротация журналов

 

Ротация журналов

Чтобы не забивать журналы бесполезной информацией, ограничивая объем разумными пределами, необходимо регулярно проводить ротацию. Регулярная очистка журналов от устаревшей информации позволяет сэкономить место на диске.

Простейшая стратегия ротации журналов состоит в их удалении при запуске демона syslogd и создании новых, чистых журналов. Например, ввод следующих команд

# rm /var/log/messages

# kill -HUP `cat /var/run/syalogd.pid

приводит к удалению файла /var/ log/messages и созданию нового при перезапуске sys logd. Подобная стратегия хорошо работает только в однопользовательских и домашних системах, где нет большой надобности в хранении старых журналов. Что касается многопользовательских серверов, то здесь историческая информация имеет особую ценность, особенно при отслеживании возможных нарушений безопасности. В этом случае удобна иная стратегия ротации - сохранение одного поколения журналов, при котором при запуске syslogd журналы не удаляются, а переименовываются.

# mv /var/log/messages /var/log/messages.1

# kill -HUP `cat /var/run/syslogd.pid"

Если требуется сохранить два поколения журналов, то журналам первого поколения присваиваются имена журналов второго, а текущие журналы переименовываются в журналы первого поколения.

# mv /var/log/messages.1 /var/log/messages.2

# mv /var/log/messages /var/log/messages.1

# kill -HUP ` cat /var/run/syslogd.pid'

Эту процедуру следует автоматизировать, выполняя ее, к примеру, еженедельно в установленное время. Для этого надо написать сценарий процедуры ротации. На сервере Linux Red Hat 7.1 при сохранении одного поколения журналов сценарий будет выглядеть примерно так:

#!/bin/sh

mv /var/log/messages /var/log/messages.1

mv /var/log/secure /var/log/secure. 1

mv /var/log/maillog /var/log/maillog.1

mv /var/log/spooler /var/log/spooler.1 kill -HUP ` cat /var/run/syslogd.pid'

Файл сценария (например, /usr/local/bin/newlogs) создается в текстовом редакторе, затем преобразуется в выполняемый файл.

# chmod 755 /usr/local/bin/newlogs

Далее, требуется внести соответствующую запись в файл crontab, воспользовавшись одним из двух методов, описанных ранее. Запись для запуска сценария каждое воскресное утро в 12.01 имеет следующий вид:

1 12 * * sun /usr/local/bin/newlogs

Примечание

В Red Hat Linux 7.1 ротационный процесс автоматизирован с помощью файла /etc/logro-tate. conf. Первые две команды этого файла выполняют ротацию журналов каждую неделю с использованием четырех недельных журналов. Например, вы можете располагать пятью журналами: /var/log/messages И С /var/log/messages . 1 ПО /var/log/messages . 4.

 

23. Что дальше

 

Что дальше

В этой главе рассмотрен ряд полезных задач системного администрирования, связанных с пользователями, расписаниями и журналами.

Тема следующей главы - конфигурирование и работа с двумя наиболее популярными периферийными устройствами ПК - принтерами и модемами.

Мы рассмотрим конфигурирование принтеров PostScript и PCL, затем изучим принципы работы систем спулинга печати Linux/Unix.

Изучим конфигурирование модемов и программу minicom, предназначенную для тестирования и обеспечения работы мрдемов.