Что дальше
Что дальше
В этой главе рассмотрен ряд полезных задач системного администрирования, связанных с пользователями, расписаниями и журналами.
Тема следующей главы - конфигурирование и работа с двумя наиболее популярными периферийными устройствами ПК - принтерами и модемами.
Мы рассмотрим конфигурирование принтеров PostScript и PCL, затем изучим принципы работы систем спулинга печати Linux/Unix.
Изучим конфигурирование модемов и программу minicom, предназначенную для тестирования и обеспечения работы мрдемов.
Что происходит при загрузке?
Что происходит при загрузке?
Цикл загрузки в действительности проще, чем можно судить по выводимым сообщениям. Он состоит из двух основных этапов.
Запуск программы init, который происходит после загрузки ядра и инициализации всех устройств. Программа init управляет запуском всех нужных программ во время загрузки системы, в том числе важных системных демонов.
Что заносится в журнал
Что заносится в журнал
Очень важно понимать различия между журналами системы Linux. Существует два основных типа журналов: системные журналы и журналы приложений. В этом параграфе мы рассматриваем системные журналы, поскольку они есть в любой системе. Что касается журналов приложений, то каждое приложение (программа) может иметь (или не иметь) свой журнал, зависящий от конфигурации этой программы.
В системные журналы, как правило, записываются сообщения и предупреждения ядра системы, в том числе о загрузке модулей, данные от демона sendmail, отслеживающего сообщения, обрабатываемые системой, а также сообщения об успешных или неудачных попытках входа в систему.
Записи в системные журналы заносятся демоном syslogd, запускаемым при загрузке системы. Демон получает сообщения восьми уровней серьезности от различных процессов - ядра, системы электронной почты, пользовательских программ, конфигурированных на использование syslogd, а также аутентификационных программ, наподобие программы входа в систему.
Перечислим уровни серьезности сообщений в порядке возрастания:
info (информационные);
notiсе (извещения);
warning (предупреждения);
err (сообщения об ошибках);
crit (критические);
alert (предостережения);
emerg (аварийные).
По этим уровням, записанным в файле /etc/syslog. conf, демон syslogd определяет, в какие журналы заносить те или иные сведения. Файл
/etc/
syslog. conf содержит множество записей - по одной на строку по два поля, разделенных пробелами, в каждой. Левое поле содержит список источников и уровней сообщений, правое - файл журнала, в который они заносятся.
Пары источник-уровень в левом поле перечисляются через точку с запятой. Источники указаны по именам — например, mail (электронная почта), kern (ядро системы), user (программы пользователей) или auth (аутентификационные программы). Примеры пар источник-уровень:
* . info: все информационные сообщения;
kern. emerg: аварийные сообщения от ядра.
Рассмотрим файл
/ etc / sys log
.
conf,
входящий в дистрибутив Linux Red Hat 7.1.
# Запись всех сообщений ядра" на 'консоль.
# Не записывать больше, чтобы не засорять экран.
# kern.* /dev/console .
# Записывать все (кроме почты) уровня info и выше.
# Не записывать частных аутентификационных рообщений!
*.info;mail.none;news.none;authpriv.none /var/log/messages
# Ограниченный доступ к файлу authpriv.
authpriv.* /var/log/secure
# Запись всех почтовых сообщений в одном месте.
mail.* /var/log/maillog
# Аварийные сообщения рассылаются всем и записываются
# на другой машине.
*. emerg *
# Запись сообщений об ошибках электронной почты и новостей уровня err
# и выше в отдельном файле.
uucp,news.crit /var/log/spooler
# Запись сообщений о загрузке также в файл bopt.log
loca17.* /var/log/boot.log
Первая важная строка этого файла:
*.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 указывает, что процесс должен заново считать конфигурационные данные без завершения работы.
Добавление пользователя в группу
Добавление пользователя в группу
К сожалению, не существует программ, обеспечивающих простую процедуру включения пользователя в группу. Проще всего это делается редактированием файла /etc/group, каждая строка которого является определением группы.
groupname::password:groupid:userlist
Элементы этой строки следующие.
password - зашифрованный пароль группы. (Поскольку пароль для доступа к группам не применяется, обычно здесь нет никакой записи.)
groupid - уникальный идентификационный номер группы.
userlist - список пользователей группы, перечисленных через запятую.
Например, если в группу groupl с идентификационным номером 505 входят пользователи userl,user2 и user3, то строка этой группы в файле /etc/group будет следующей.
groupl::505:userl,user2,user3
Чтобы ввести в группу нового пользователя, откройте файл /etc/group в привычном текстовом редакторе и добавьте этого пользователя в конец строки соответствующей группы, отделив его имя от остальных пользователей запятой.
Общее администрирование системы
Общее администрирование системы
Управление пользователями
Управление группами
Запуск системы
Составление расписания заданий в Crond
Управление системными журналами
В этой главе рассмотрены некоторые основные задачи администрирования, необходимые для поддержании системы Linux в рабочем состоянии.
Одна из важнейших задач в Linux - будь-то сервер сети или домашний компьютер, совместно используемый членами семьи - управление пользователями. Последнее включает ряд задач - от смены пароля в учетной записи пользователя до контроля того, чтобы исходный каталог каждого пользователя соответствовал правилам, определенным администратором системы при создании его учетной записи.
Даже в относительно простых системах доступ к ресурсам предоставляется и отдельным пользователям, и группам пользователей. Группа - это некоторое количество пользователей, объединенных по определенному организационному принципу и обозначенных общим именем. Linux обладает средствами объединения пользователей в группы и.регулирования доступа к системным ресурсам для этих групп.
Еще одно средство администрирования - очень важное с точки зрения эффективного использования Linux - автоматизация выполнения заданий, запускаемых вручную либо по расписанию. Реализованный в Linux принцип рабочих уровней обеспечивает эффективный механизм определения того, что и в какой момент должно происходить при запуске системы (как и при ее выключении). Программа Сгоп из Unix - механизм составления расписания запуска заданий, а также регулярного (ежедневного, еженедельного, ежемесячного или ежегодного) выполнения определенных операций.
Наконец, в Linux реализованы сложные средства регистрации, позволяющие знать все, что происходит в системе. Естественно, эти средства требуют регулярного обслуживания. Файл регистрационного журнала с записями за целый год слишком велик, чтобы можно было эффективно использовать его для локализации текущих проблем.
Использование файла re. local
Использование файла re. local
Единственная роль файла re. local в Linux Red Hat 7.1 - установка формы командной строки.
#!/bin/sh
# Этот сценарий выполняется *последним* из инициаяизационных сценариев.
# Здесь можно поместить собственные инициализационные программы,
# чтобы не заниматься полновесным системным программированием.
if [
-f
/etc/redhat-release ]; then R=$(cat /etc/redhat-release)
arch=$(uname -m)
a="a"
case "_$arch" in
_a*) a="an";;
_i*) a="an";; esac
NUMPROC=`egrep -с "`срu[0-9]+ " /proc/stat" if ["$NUMPROC" -gt "1" ]; then
SMP="$NUMPROC-processor "
if ["$NUMPROC" = "8" -o "$NUMPROC" = "11" ]; then
a="an" else
a="a"
fi fi
# Это будет записываться поверх файла /etc/issue при каждой
# загрузке. Следовательно, все изменения файла /etc/issue должны
# записываться здесь, чтобы не потеряться при загрузке, echo "" > /etc/issue
echo "$R" » /etc/issue
echo "Kernel $(uname -r) on $a $SMP$(uname -m) " » /etc/issue
cp -f /etc/issue /etc/issue.net echo » /etc/issue fi
touch /var/lock/subsys/local
У страха глаза велики: на самом деле все не так сложно. Выполняется следующая последовательность операций.
Указывается аппаратная архитектура -1386 (Intel) или ахр (Alpha).
Указывается число процессоров (CPU) в вашем компьютере.
В файл /etc/issue записывается содержимое строки входа в систему. Оно будет выводиться в каждой строке консоли.
Поскольку файл re.local- это стандартный сценарий оболочки, в него можно записывать все, что разрешено для такого сценария, в том числе команды установки переменных среды и запуска программ. Например, в одной из управляемых мною систем файл re. local запускает демон базы данных командой
#
/usr/local/Minerva/bin/msqld &
Файл re. local можно использовать для запуска любых программ при загрузке системы. Например, чтобы получать электронную почту после загрузки какой-либо машины сети, добавьте в файл rс. local этой машины команду
#
/bin/mail -s "Я загрузилась — машина такая-то" username@some
.domain
Теперь при каждой загрузке этой машины будет отправляться сообщение электронной почты по адресу username@some. domain со строкой в поле темы: "Я загрузилась— машина такая-то".
Изменение параметров по умолчанию команды 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
Как работает crond
Как работает crond
Принцип работы демона crond на удивление прост. После запуска (как правило, при загрузке системы) демон просыпается каждую минуту и проверяет, не запланирован ли запуск в эту минуту каких-либо программ. Если такие программы находятся, демон запускает их и отправляет по электронной почте сообщения пользователям, запланировавшим запуск.
Поскольку crond ежеминутно проверяет даты модификации конфигурационных файлов, изменения в расписании не остаются незамеченными, и нет необходимости перезагружать систему.
Непосредственное редактирование файла crontab
Непосредственное редактирование файла crontab
Команда crontab позволяет избежать многоступенчатой операции с созданием отдельного файла. Если ввести команду crontab с флажком -е, можно редактировать файл crontab непосредственно.
По умолчанию по команде crontab с флажком -е файл crontab загружается в редактор vi. Редактор vi - мощный, хотя и сложный инструмент, популярный среди опытных пользователей Unix. Тот, кто предпочитает другой редактор, например xedit, может установить соответствующее значение переменной среды EDITOR.
$ export EDITOR=xedit
После этого ввод команды
$ crontab -е
приводит к открытию файла crontab в указанном редакторе (рис. 17.1).
Поле command
Поле command
Поле
command
(команда) отделено от полей
времени-даты
одним или несколькими пробелами и простирается до конца строки. Команды обрабатываются оболочкой /bin/sh.
Например, следующая запись в файле crontab предусматривает ежедневный запуск программы /usr/local/bin/backupB 1.00 пополуночи.
0 1 * * * /usr/local/bin/backup
Некоторым командам (например, mail) требуется ввод информации с устройства стандартного ввода. Это указывается при помощи знака процента (%). Первый такой знак обозначает начало стандартного ввода, каждый последующий — смену строки.
Таким образом, следующая запись в файле crontab:
30 14 * * fri /bin/mail -s "TGIF" armand@landegg.еdu%Слава
->богу, уже пятница%%Я.
предписывает отправлять сообщение электронной почты:
Слава богу, уже пятница Я по адресу armand@landegg. edu каждую пятницу в 2.10 пополудни.
Примеры времени-даты
Примеры времени-даты
Рассмотрим несколько примеров заполнения полей времени-даты.
0 1 Запуск задания ежедневно в 1.00 пополуночи
30 14 *
*
0 Запуск задания по воскресеньям в 2.30 пополудни
Запуск задания в первый полдень каждого месяца
0.12 * 1. mоn Запуск задания в полдень каждого понедельника января каждого года
0 12 2 feb * Запуск задания в полдень второго февраля каждого года
Программа 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 можно указать запуск собственных программ при загрузке системы.
Просмотр файла crontab
Просмотр файла crontab
Для просмотра содержимого файла crontab введите команду crontab с флажком -1.
$ crontab -1
# НЕ РЕДАКТИРУЙТЕ ЭТОТ ФАЙЛ - редактируйте главный файл, затем переус-
# танавливайте. (/tmp/crontab.555 lnstalled on Mon Jul 13 00:07:05 2001)
# (Cron verslon - $ld: crontab.c,v 2.13 1994/01/17 03:20:37 vlxle Exp $) 0 1 * * * /usr/local/bln/backup
30 14 * * frl /bln/mall -s "TGlF" armand@landegg.ес1и%Слава богу, уже пятница%%Я
Обратите внимание на строки комментариев, начинающиеся с символа "#". Корневой пользователь может просматривать файлы crontab остальных пользователей.
#
crontab -u username -1
Расписание заданий в crond
Расписание заданий в crond
Одно из важных достоинств многопользовательской операционной системы серверного класса, каковой является Linux, - возможность автоматизации многих процессов. Если использовать Linux как сервер электронной почты, Web- или FTP-сервер, то ему придется отвечать автоматически на все поступающие запросы. Кроме того, отдельные пользователи, как и администратор системы, могут составлять расписания для автоматического запуска заданий.
Автоматический запуск выполняется демоном crond. Это стандартный демон, устанавливаемый при каждой загрузке системы.
Редактирование файла crontab
Редактирование файла crontab
Файл crontab редактируется командой crontab -e. Возможны два подхода: создание нового файла со всеми записями, которые должны входить в файл crontab, с последующей его записью на диск под этим именем по команде crontab; или непосредственное редактирование файла по команде crontab -e.
Редактирование файла crontab в редакторе xedit
Рис. 17.1. Редактирование файла crontab в редакторе xedit
Подобно тому, как обычный пользователь может редактировать собственный файл crontab, корневой пользователь может редактировать файлы crontab остальных пользователей. Для этого используется команда
$ crontab -u user-name -e
Ротация журналов
Ротация журналов
Чтобы не забивать журналы бесполезной информацией, ограничивая объем разумными пределами, необходимо регулярно проводить ротацию. Регулярная очистка журналов от устаревшей информации позволяет сэкономить место на диске.
Простейшая стратегия ротации журналов состоит в их удалении при запуске демона 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.
Смена пароля
Смена пароля
Для смены пароля применяется команда 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
Changing password for test (current) UNIX password: New UNIX password:
BAD PASSWORD: it does not contain enough DIFFERENT characters New UNIX password:
BAD PASSWORD: it is too short New UNIX password:
BAD PASSWORD: is too simple
passwd: Authentication token manipulation error
Смена пароля для test (текущий) пароль UNIX: Новый пароль UNIX:
НЕВЕРНЫЙ ПАРОЛЬ: недостаточное число РАЗЛИЧНЫХ символов Новый пароль UNIX: НЕВЕРНЫЙ ПАРОЛЬ: слишком короток Новый пароль UNIX: НЕВЕРНЫЙ ПАРОЛЬ: слишком прост passwd: Ошибка при попытке изменения аутентификационного признака
Предупреждение
Если в ранних версиях Red Hat Linux игнорировать предупреждение BAD PASSWORD, то можно использовать в качестве пароля слово из словаря. Начиная с версии Red Hat Linux 7.1, эта возможность доступна только для корневых пользователей.
Корневой пользователь может поменять пароль любого другого пользователя, указав его имя как параметр программы passwd. Нужно лишь дважды ввести новый парблъ.
# passwd test
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
Новый пароль UNIX:
Повторить ввод пароля UNIX:
passwd: Изменение всех аутентификационных признаков выполнено успешно
Составление расписания заданий
Составление расписания заданий
Составление расписания - задача несложная. Расписание размещается в отдельном файле crontab. В каждой строке файла помещается задание, которое должно быть запущено в определенное время.
Рассмотрим формат записей файла crontab.
time-date command
Часть time-date (время-дата) состоит из пяти числовых полей, разделенных пробелами и определяющих время запуска задания. Это следующие поля (слева направо).
Часы. Допустимые значения: 0-23.
День месяца. Допустимые значения: 0—31.
Месяц. Допустимые значения: 0—12. Месяц можно указать тремя первыми буквами его (английского) названия.
День недели. Допустимые значения: 0—7, где 0 и 7 - воскресенье.
Для удобства заполнения указанных полей введены следующие правила.
Интервалы можно задавать с шагом больше единицы. Например, чтобы указать каждый второй час, начиная с полуночи, следует установить интервал 0—23 с шагом 2 через косую черту: 0-23/2.
ЗвеЗдочка (*) указывает полный интервал значений поля - от минимального до максимального. Например, в поле дня месяца звездочка означает интервал 0—31, в поле дня недели - 0—7.
День недели или месяц можно указать первыми тремя буквами его (английского) названия.
Создание группы
Создание группы
Новая группа создается командой groupadd (в некоторых дистрибутивах - addgroup). Чтобы создать группу, введите эту команду с именем создаваемой группы в качестве аргумента.
# /usr/sbin/groupadd
groupname
Созданной группе присваивается идентификационный номер, равный минимальному значению, которое больше 500 и больше значений идентификационных номеров остальных групп. Некоторые другие дистрибутивы Linux по умолчанию включают новых пользователей в группу (100).
Можно присвоить создаваемой группе идентификационный номер по своему усмотрению, введя команду с флажком -д.
# groupadd -g 503
groupname
В файле /-etc/group должна появиться следующая запись:
groupname:
:503: означающая пустую группу с идентификационным номером 503.
Примечание
Если вы забыли номер требуемой группы, его можно найти
в
списке идентификационных номеров существующих групп, хранящемся в файле /etc/group.
Создание учетной записи пользователя
Создание учетной записи пользователя
Для создания учетной записи пользователя в Linux применяется команда useradd (обычно в каталоге /usr/sbin/, в некоторых системах именуемая adduser). Версия команды useradd из комплекта Linux Red Hat 7.1 - в высшей степени сложный инструмент, превращающий создание учетной записи в исключительно простую операцию. Начнем с простейших примеров, чтобы затем
перейти к рассмотрению более сложных ситуаций. Простейший способ создания учетной записи пользователя - с параметрами, устанавливаемыми по умолчанию. Например, чтобы создать учетную запись для пользователя testuserl, достаточно ввести
# /usr/sbin/useradd testuserl
По этой команде выполняется следующая последовательность операций создания учетной записи.
Присвоение пользователю идентификатора. В 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
Удаление файла crontab
Удаление файла crontab
Чтобы удалить содержимое своего файла crontab, пользователь должен ввести команду crontab с флажком -r.
$ crontab -r
Корневой пользователь может удалять файлы crontab остальных пользователей.
# crontab -u user-name -r
Удаление группы
Удаление группы
Удаление группы происходит по команде groupdel. Это совсем простая команда без каких-либо флажков. Единственный параметр - имя удаляемой группы.
# /usr/sbin/groupdel
groupname
При всей простоте команды процесс удаления группы связан с некоторыми тонкостями.
Если для некоторого пользователя группа первична (то есть, именно она указана как группа этого пользователя в файле паролей), ее нельзя удалить.
Первая проблема решается точно так же, как и при удалении учетной записи. Сначала записывается идентификационный номер группы (его можно найти в файле /etc/group), затем, после удаления группы, при помощи команды find меняется принадлежность всех файлов этой группы.
#
find / -type f -gid 503 -print -exec chgrp
newgroupname
{} \;
По этой команде находятся все файлы, принадлежавшие группе с идентификационным номером 503, и при помощи команды chgrp передаются группе newgroupname.
Удаление учетной записи пользователя
Удаление учетной записи пользователя
Удаление учетной записи пользователя - процесс, обратный ее созданию. Удаление производится командой 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 для его удаления.
Предупреждение
Следует быть очень осторожным при вводе описанной команды. Поскольку она запускается корневым пользователем, ошибка в указании идентификатора пользователя может привести к утере важных данных. Не следует применять эту команду без крайней надобности.
Управление группами
Управление группами
Управление группами (объединениями пользователей) ничуть не сложнее управления пользователями. В Linux предусмотрены команды для автоматизации создания и модификации групп, аналогичные тем, которые применяются для управления пользователями.
Примечание
В разных системах работа этих команд может отличаться от описанного. Если у вас ус-тановлел Linux не с диска Red Hat, прилагаемого к книге, то сначала изучите документацию.
Управление пользователями
Управление пользователями
В гл. 15 мы говорили об управлении пользователями, когда рассматривали панель управления Linux Red Hat 7.1. Однако панель управления входит не во все дистрибутивы Linux, так что для полного освоения задач администрирования следует научиться работать без нее.
Управление системными журналами
Управление системными журналами
Одно из достоинств Llnux (и всех разновидностей Unlx) - наличие стандартизированного механизма регистрации активности всех демонов и запускаемых программ. Данные, записываемые в регистрационные журналы, можно использовать для поиска неисправностей в системе (будь-то нарушение безопасности или предупреждение о возможном отказе оборудования) либо отслеживания ее загрузки.
Например, в приведенном далее фрагменте файла главного системного журнала Llnux Red Hat 7.1 (/var/ log/messages) представлены многочисленные записи, сделанные в течение двух минут работы системы.
May 9 11:32:58 laptop71 network: Shuttlng down devlce eth0: succeeded
May 9 11:33:00 laptop71 network: Brlnglng up devlce eth0: succeeded
May 9 11:33:00 laptop71 kernel:.eth0: fllpped to lObaseT
May 9 1>:33:01 laptop71 xlnetd[3511]: Exltlng...
May 9 11:33:02 laptop71 xlnetd: xlnetd shutdown succeeded
May 9 11:33:04 laptop71 xlnetd[5598]: chargen dlsabled, removlng
May 9 11:33:04 laptop71 xlnetd[5598]: ftp dlsabled, removlng
May 9 11:33:04 laptop71 xlnetd[5598]: tlme dlsabled, removlng
May 9 11:33:04 laptop71 xlnetd[5598]: tlme dlsabled, removlng
May 9 11:33:04 laptop71 xlnetd[5598]: telnet dlsabled, removlng
May 9 11:33:04 laptop71 xlnetd[5598]: talk dlsabled, removlng
May 9 11:33:04 laptop71 xlnetd[5598]: rsync dlsabled, removlng
May 9 11:33:04 laptop71 xlnetd[5598]: shell dlsabled, removlng
May 9 11:33:04 laptop71 xinetd[5598] login disabled, removing
May 9 11:33:04 laptop71 xinetd[5598] exec disabled, removing
May 9 11;33:04 laptop71 xinetd[5598] ntalk disabled, removing
May 9 11:33:04 laptop71 xinetd[5598] linuxconf disabled, removing
May .9 11:33:04 laptop71 xinetd[5598] finger disabled, removing
May 9 11:33:04 laptop71 xinetd[5598] echo-udp. disabled, removing
May 9 11:33:04 laptop71 xinetd[5598] echo disabled, removing
May 9 11:33:04 laptop71 xinetd[5598] daytime-udp disabled, removing
May 9 11:33:04 laptop71 xinetd[5598] daytime disabled, removing
May 9 11:33:04 laptop71 xinetd[5598] chargen-udp disabled, removing
May 9 11:33:04 laptop71 xinetd[5598] xinetd Version 2.1.8.9prel4 >
smarted with
May .9 11:33:04 laptop71 xinetd[5598]: libwrap
May 9 11:33:04 laptop71 xinetd[5598]: options compiled in.
May 9 11:33:04 laptop71 xinetd[5598]: Started working: 0 available
service
May 9 11:33:05 laptop71 xinetd: xinetd startup succeeded
May 9 11:33:21 laptop71 kernel: ethO: flipped to lObaseT .
May 9 11:33:38 laptop71 kernel: smb_trans2_reguest: result=-104,
setting invalid May 9 11:33:39 laptop71 kernel: smb_retry: successful, new pid=2190,
generation=8
О чем можно узнать из этого файла? Программа network информирует вас о том, что сетевой интерфейс ethO был выключен и перезапущен в сети типа lObaseT, что xinetd отключил ряд сервисов перед перезапуском, и что имела место передача файла smb (Samba) с РГО равным 2190.
Установка исходного каталога по умолчанию
Установка исходного каталога по умолчанию
В параграфе
"Создание учетной записи пользователя"
упоминались скелетные каталоги. По умолчанию каждому пользователю назначается исходный каталог (обычно в каталоге /home). При создании учетной записи пользователя, создается и соответствующий исходный каталог, в который копируется некоторый стандартный набор файлов из каталога /etc/skel, служащего скелетным каталогом для создаваемых исходных каталогов пользователей.
Чтобы добавить новый файл к записываемым в создаваемый каталог, поместите этот файл в каталог /etc/skel под тем именем, под которым он должен появиться в исходных каталогах пользователей.
Выключение системы
Выключение системы
С загрузкой системы связано и ее выключение. В 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 все пользователи могут использовать эту комбинацию клавиш для перезагрузки, однако при многопользовательской работе есть опасность утери данных всеми работающими пользователями в случае перезагрузки компьютера одним из них.
Запись из файла
Запись из файла
Для записи содержимого файла crontab из другого файла необходимо создать этот другой файл (в привычном текстовом редакторе) со всеми записями, из которых должен состоять файл crontab. Это могут быть, к примеру, следующие две записи.
0 1 * * * /usr/local/bin/backup
30 14 * * fri /bin/mail -s "TGIF" armand@landegg.edu%Cловa
->богу, уже пятница%%Я.
Созданному файлу следует присвоить подходящее имя, например сron jobs. После того, как указанный файл создан, его содержимое необходимо записать в файл crontab командой
$ crontab cronjobs
Содержимое файла cronjobs полностью заменит содержимое файла crontab данного пользователя. Используя этот метод, любой пользователь может редактировать свой файл crontab. Корневой пользователь обладает особым правом редактировать файлы crontab остальных
пользователей. Редактирование чужого файла указывается флажком -и. Например, по команде
# crontab -u
username
cronjobs
файл cronj obs записывается как файл crontab пользователя username.
Запуск системы
Запуск системы
Есть процесс, который остается тайной для многих пользователей Unix (но не для администраторов систем). Это последовательность загрузки системы, когда по экрану пробегают таинственные сообщения.
Примечание
Сообщения, выводимые при запуске, записываются в файл системного журнала /var/log/ messages. Файлы журналов (регистрационные) рассмотрены далее в главе.