Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Периодически запускаемые процессы




Fi

Fi

Fi

Сценарий, запускаемый на каждом из уровней, должен завершить все текущие процессы и запустить другие, соответствующие новому уровню. Например, администратор в целях безопасной отладки системы с помощью команды telinit 1 переходит из многопользовательского сетевого режима 3 на однопользовательский уровень 1. При этом все службы, «заведующие» многопользовательским сетевым режимом, должны завершиться (точнее – на уровне 1 никаких процессов кроме системных, init и /bin/sh не должно быть, т. е. при переходе на 1-й уровень никакие процессы и сервисы не стартуют).

В каталоге /etc/rc.d имеются директории с названиями rc0.d, rc1.d, rc2.d, rc3.d, rc5.d, rc6.d, где цифрами обозначены уровни выполнения. Все элементы каталогов rc#.d – символические ссылки. Сами сценарии находятся в каталоге /etc/init.d. Их имена начинаются буквами K (kill) и S (start). При входе на данный уровень запускаются сценарии на букву S, а при выходе с уровня – сценарии на букву K. Числа, следующие за буквой K или S, определяют порядок исполнения сценария.

При возникновении необходимости отключения на каком–либо уровне определенных служб необходимо удалить пару символических ссылок: одну на S, а другую на K (в RedHat это делает специальная утилита chkconfig). Если за запуск службы отвечает отдельный файл, его следует удалить или снять признак исполняемости. Если это делает фрагмент сценария, его можно закомментировать.

Все стартовые сценарии служб, которыми может воспользоваться система, принято хранить в каталоге /etc/rc.d/init.d. Эти сценарии используются для запуска или останова различных служб. Запустить или остановить службу можно, просто вызвав соответствующий сценарий с параметром start или stop. Часто ту же самую задачу выполняет и специальная утилита service, которая проверяет, есть ли указанный стартовый сценарий, и запускает его.

Из строчки с initdefault процесс init «узнает», что уровень выполнения по умолчанию – третий (многопользовательский консольный), и выполняет все строки из inittab, в поле «уровень исполнения» которых есть уровни 3. В частности, запускается сценарий rc.M из строки «rc:…». Метод запуска wait, поэтому процесс init ждет, пока не выполнится вышеуказанный сценарий, а потом продолжает разбор inittab.

Уровни 0 и 6 – специальные. Они соответствуют останову и перезагрузке системы. В сущности, это удобные упрощения для действий, обратных загрузке на базовый уровень: все службы останавливаются, диски размонтируются. Соответствующие каталоги rc0.d и rc6.d будут состоять почти сплошь из ссылок вида K *, но как минимум один сценарий, killall, будет запущен с параметром start. Этот сценарий остановит все процессы, которые не были остановлены K-сценариями: программы пользователей, демоны, запущенные администратором вручную, и т. п. Строки остановки служб в сценарии выглядят так:

# Stop the Apache web server:

if [ -x /etc/rc.d/rc.httpd ]; then

/etc/rc.d/rc.httpd stop

 

# Shut down the SSH server:

if [ -x /etc/rc.d/rc.sshd ]; then

/etc/rc.d/rc.sshd stop

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

Переход с уровня на уровень выполняется по команде init N, где N – номер уровня. Иногда для этого используют команду telinit N, которая является символической ссылкой на init. Узнать текущий уровень выполнения можно с помощью команды runlevel.

Отключение неиспользуемых служб в текущем сеансе производится администратором с помощью команды

<service> stop,

где <service> – имя службы. Для полного исключения запуска ненужных служб в дальнейшем необходимо использовать утилиту chkconfig с соответствующими параметрами.

В дистрибутиве Slackware необходимо снять флаг исполнения с соответствующего файла в каталоге /etc/rc.d/ или закомментировать строки запуска в файлах типа rc.M для демонов, не имеющих собственных сценариев запуска. Также не следует забывать про файл /etc/rc.d/rc.local.

Некоторые сетевые демоны запускаются посредством супердемона inetd (xinetd). Демоны, запускаемые из inetd, могут быть отключены путём комментирования соответствующих строк в файле /etc/inetd.conf.

Например, служба SSH запускается своим собственным скриптом /etc/rc.d/rc.sshd. Такую службу можно отключить, просто лишая этот файл права на исполнение:

chmod –x /etc/rc.d/rc.sshd

 

За запуск в определённое время, а также за периодический запуск пользовательских процессов отвечают две службы: cron и at (они могут иметь свойственные демонам имена crond и atd).

Демон crond запускается во время начальной загрузки системы и остается в активном состоянии до ее выключения (если администратор его принудительно не завершит). Эта относительно простая программа-демон, как и другие демоны, проводит свободное время в состоянии «спячки», ежеминутно «просыпаясь» для чтения файлов заданий. Если задание на данную минуту имеется, демон «вырезает» из соответствующей строки запланированную команду/программу или последовательность команд/программ с параметрами либо без них и передает всё это для исполнения командному интерпретатору. Затем он снова «засыпает».

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

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

–l – вывести содержимое файла заданий;

–e – отредактировать файл с заданиями;

–r – удалить файл с заданиями.

Каждое задание в файле заданий представляет собой текстовую строку (как обычно, строка, начинающаяся символом #,является комментарием и демоном не исполняется), в которой записано пять временных отметок, определяющих время и/или периодичность исполнения команды: минуты, часы, дни месяца, порядковые номера месяца, дни недели и сама команда/последовательность команд либо программа/последовательность программ с параметрами или без них. Итого в строке шесть полей, разделенных пробелами:

минуты часы день месяц день_недели команда,

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

Временные параметры задаются числами, которые должны соответствовать своему диапазону:

минуты – от 0 до 59

часы – от 0 до 23

день – от 1 до 31

месяц – от 1 до 12

день_недели – от 0 до 6 (0 – воскресенье)

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

 

* * * * * каждую минуту
  * * * * через 10 минут после начала каждого часа
*/6 * * * * через каждые 10 минут
    * * * каждый день в 12:20
  9, 21   * * в 9:15 и в 21:15 каждый седьмой день месяца
    8-12   * в 21:30 с восьмого по двенадцатое апреля
    * *   по воскресеньям в 00:10

 

Файлы заданий хранятся в каталогах /var/spool/cron/tabs. Каталог содержит по одному файлу на каждого из пользователей (если использование планировщика заданий им не запрещено) в случае, если пользователь создал задание. Эти файлы не появляются автоматически при регистрации нового пользователя. Они создаются при первом обращении пользователя к службе crond.

Имя crontab -файла совпадает с учетным именем пользователя. Поэтому задание, найденное, например, в файле ivanov, позволяет демону передать команду на исполнение соответствующему экземпляру оболочки. По имени файла производится поиск строки в файле /etc/passwd, из неё выбираются UID, GID и всё необходимое для создания процесса. При выполнении задания демон crond не делает отметки в crontab -файле, поэтому невыполненные задания с истекшим сроком повторно не выполняются. Демон не удаляет из файлов выполненные задания, он только читает файл заданий, и имеющиеся в нем строки при определенных обстоятельствах могут служить доказательством противоправного деяния.

В каталоге /etc должен существовать файл cron.deny, в котором построчно перечисляются учетные имена пользователей, которым пользование планировщиком cron запрещено. По умолчанию в нем перечислены имена псевдопользователей, случайным обладателем которых может стать злоумышленник. Для того чтобы разрешить отдельным пользователям планирование заданий, администратор должен создать в этом же каталоге другой файл cron.allow, в который построчно можно записать нужные учетные имена.

Если файл cron.deny существует, а файл cron.allow не создан, право запуска crontab имеют все пользователи, кроме тех, кому это явно не разрешено (в файле cron.deny). Вопреки правилу информационной безопасности «должно быть запрещено все, что явно не разрешено», записи в «разрешительный» файл имеют приоритет. Так, если один и тот же пользователь по невнимательности администратора оказался записан в оба файла, разрешение на команду crontab ему будет обеспечено. Парадоксальное решение – чтобы запретить всем пользователям (включая администратора!) запуск планировщика задач, необходимо в указанном каталоге создать пустой файл cron.allow. Если ни одного из двух указанных файлов не существует, пользоваться планировщиком заданий может только администратор.

Учитывая несомненную опасность доступа обычных пользователей к этим файлам, не вызывают сомнения запрещения их доступа к каталогам /var/spool/cron и /var/spool/cron/tabs. Право читать и редактировать эти файлы «вручную» имеет только администратор. Для того чтобы пользователи имели кратковременное право на запись в эти файлы, утилита crontab имеет установленный бит SUID.

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

Разновидностью неинтерактивного однократного запуска команд является формирование из них задания и постановка его на выполнение в определённое время. Реализуется это при помощи команды at. Формат команды выглядит так:




Поделиться с друзьями:


Дата добавления: 2015-03-31; Просмотров: 405; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.