Пакет sudo

На практиці часто виникає ситуація, коли для виконання своїх обов'язків деяким користувачам необхідно надати привілеї, які доступні звичайно тільки root'у. Існує кілька способів доступу до бюджету привілейованого користувача. Найпростіший з них - зареєструватися під іменем root. Але на жаль, вихід з власного бюджету і реєстрація в якості привілейованого користувача часто дуже незручні. Краще використовувати команду su. Будучи викликаною без аргументів, ця команда запросить вас ввести пароль привілейованого користувача, а потім запустить shell з відповідними правами. Привілеї цього інтерпретатора команд залишаються в силі до завершення його роботи.

З привілейованим користувальницьким доступом сполучені три проблеми: безмежні повноваження, відсутність обліку операцій, що виконуються, імовірність того, що під іменем root може працювати група користувачів. Оскільки повноваження привілейованого користувача розподілити не можна, то важко надати комусь можливість зняття резервних копій (що повинно робитися під ім’ям root), не даючи можливості вільної роботи в системі. Якщо ж бюджет root доступний групі користувачів, то ви і поняття не будете мати про того, хто їми користується і що робить.

Щоб вирішити ці проблеми, використовується програма sudo. Ця програма в якості аргументу приймає командний рядок, який підлягає виконанню з правами root. Команда sudo звертається до файлу /etc/sudoers, що містить список користувачів, що мають повноваження на її виконання, і перелік команд, які вони мають право виконувати на конкретній машині. Якщо команда, що пропонується, дозволена, sudo пропонує користувачеві ввести його власний пароль і виконує команду як root.

До спливання п'ятихвилинного періоду бездіяльності sudo можна виконувати інші sudo-команди, не вводячи пароля. Така міра - захист від тих користувачів з sudo-привілеями, які кидають свої термінали без нагляду.

Файл /etc/sudoers виглядає приблизно так:

# Host alias specification Host_Alias

HUB=houdini.rootgroup.com:\

REMOTE=merlin,kodiakthorn,spirit

Host_Alias MACHINES=kalkan,alpo,milkbones

Host_Alias SERVERS=houdini,merlin,kodiakthorn,spirit

# Command alias specification

Cmnd_Alias LPCS=/usr/etc/lpc,/usr/ucb/lprm

Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh

Cmnd_Alias SHUTDOWN=/etc/halt,/etc/shutdown

# User specification

Britt REMOTE=SHUTDOWN:ALL=LPCS

Robh ALL=ALL,!SHELLS

nieusma SERVERS=SHUTDOWN,/etc/reboot:\,HUB=ALL,!SHELLS

jill houdini.rootgroup.com=/etc/shutdown,MISC

markm HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt

billp ALL=/usr/local/bin/top:MACHINES=SHELLS

davehieb merlin=ALL:SERVERS=/etc/halt:\

kodiakthorn=ALL

В цьому прикладі користувачеві britt дозволено виконувати програми /etc/halt, /etc/shutdown на машинах merlin, kodiakthorn і spirit. robh може виконувати які завгодно програми, крім перерахованих в макрозмінній SHELLS, на всіх машинах.

Що можуть робити користувачі jill, markm, billp і davehieb і на яких машинах, ви розкажете самі, вивчивши документацію по пакету sudo. Також в документації перераховані деякі додаткові можливості, які з'явились в цій програмі, наприклад, можливість виконання програми, що вказана, не від root'а, а від іншого користувача.

Для модифікації файлу /etc/sudoers використовується програма visudo, яка дозволяє редагувати цей файл, перевіряючи синтаксис заданих змін. Зверніть увагу, що всі команди в цьому файлі задаються з абсолютними шляхами, щоб попередити можливість виконання користувальницьких програм з тими ж іменами з правами root.

Крім виконання вказаних команд, sudo веде файл реєстрації виконаних команд, осіб, що їх викликали, каталогів, з яких викликались програми і час їх виклику.

7.1.9 Моніторинг процесів

Іноді виникає ситуація, коли необхідно з під акаунта root керувати процесами, запуск яких був зроблен іншими користувачами. Ці процеси навантажують центральний процесор та виникає ситуація припинення даних процесів. Існує кілька способів перегляду інформації щодо процесів. Це наступні команди:

top – запуск інтерактивної програми моніторингу активності процесів системи (аналог диспетчеру задач у Windows);

ps – утілита виводу процесів у системі з фільтрацією за користувачем, терміналом або ін. Відмінність від top, це –відображення процесів, які знаходяться у призупиненому стані.

Утілита керуванням процесами є kill. Параметрами цієї утілити є тип сигналу та PID процесу. Тип сигналу задається або як константа або числовим значенням, яке відповідає відповідній константі. Для виводу списку усіх констант з їх значеннями необхідно виконати команду kill з ключем –l. Наприклад, для безапеляційної швидкої ліквідації процесу з атрибутом PID=2344необхідно виконати команду:

Наши рекомендации