А.М. Добровольський
6.08.2002
Linux - операційна система, що підтримує багатозадачність та роботу багатьох користувачів одночасно. Крім того, вона підтримує розмежування прав для кожного з зареєстрованих в ній користувачів. Для чого такі складнощі? Наприклад, щоб хтось, не дуже порядний, не мав можливості копирсатися та шкодити в чужих файлах на тій самій машині. Лише один користувач може все, ну майже все - наглядач за системою (root). Повинен же хтось мати можливість виправляти чужі помилки та слідкувати за загальним порядком у системі.
Наглядач, також, єдиний кому дозволено міняти всі загальносистемні налаштування та встановлювати і видаляти на машині програмні пакунки. Все це зручно і не зручно одночасно. Працювати кожен день з правами наглядача небезпечно, а отже і незручно. Реєструватися як наглядач щоб зробити якусь незначну правку налаштувань або встановити видалити один пакунок, теж швидко набридає. Що виходу немає? Звичайно ж є. Таким виходом стають команди su та sudo. su з параметром - (так, саме дефіс через пустий проміжок) робить вас наглядачем за системою, звичайно після введення відповідного паролю.
Проте не завжди наглядач є на місці і не всі дії потребують його присутності. Наприклад, безглуздо повідомляти всім користувачам пароль наглядача лише щоб вони мали можливість вимкнути машину після закінчення роботи. Можна пригадати ще багато мілких справ, виконання яких цілком можна дозволити самим користувачам. Тут на допомогу і приходить sudo. Ця програма дозволяє дати користувачам повноваження на виконання певних системних команд.
Перш за все, треба перевірити наявність в системі відповідного пакунка.
Це можна зробити командою:
rpm -q sudo
Коли система відповіла щось на зразок:
sudo-1.6.5p2-alt
пакунок встановлений і в системі є файл /etc/sudoers. Саме
з нього команда і бере відомості кому та що можна дозволити. У випадку
відсутності пакунку, його треба встановити рекомендованими у вашому
комплекті засобами. Отже, перейдемо до заповнення цього файла.
Рядки на зразок цього:
# sudoers file.
коментарі, що їх програма пропускає не звертаючи уваги. Таким чином
ви можете робити нотатки для себе, щоб потім розуміти для чого ви
все це писали.
Правити файл можна у visudo, але можна і будьяким іншим редактором, що не вносить зайвих форматуючих знаків у файл. Головне не порушувати форму запису файлу. Я правив свій у редакторі з mc і все працює.
Наступні рядки визначають для яких машин будуть діяти правила з файла.
Якщо ви не збираєтесь поширювати їх на декілька машин у мережі, можна
нічого тут не писати.
#
# Host alias specification
Наступні рядки відкривають розділ для визначення псевдонімів окремим
користувачам та об'єднання їх у групи. Створення груп не є обов'язковим
та спрощує керування правилами в подальшій діяльності. Роздавати повноваження
можно виключно цим групам, а користувачів в них міняти за потребами.
Думаю, що приклад нижче, дозволить вам правильно створити власні групи.
user1, user2 і т.ін. треба, звичайно, замінити на
реєстраційні імена реальних користувачів.
#
# User alias specification
#
User_Alias USER = user1, user2, user3, user4,
User_Alias ADMIN = user1
Наступний розділ визначає для яких команд буде діяти виклик посередництвом
sudo. Тут також можна назначати псевдоніми як для окремих
команд так і для їх груп. У прикладі створено дві групи. Перша, дозволяє
дати всім користувачам право вимикати та перезавантажувати систему.
Друга, об'єднує групу команд, що пов'язана з керуванням пакетами в
системі ALTLinux. Якщо всі команди групи не уміщаються на одному
рядку, використовують обернений слеш \, як
закінчення розірваного рядка, і продовження його з нового рядка без
додаткових символів на початку. Кількість пустих проміжків на початку
рядка продовження не має значення. Программа їх просто не помічає.
# Cmnd alias specification
#
Cmnd_Alias POWEROFF = /sbin/poweroff, /sbin/shutdown
Cmnd_Alias APT = /usr/bin/apt-get, /usr/bin/apt-cdrom,
/usr/sbin/synaptic, \
/usr/bin/apt-cache
Все, що ми робили до того, було підготовчою діяльністю. Зараз настав
час власне визначити повноваження кожної з груп користувачів на виконання
заданих груп команд. Це визначається рядками виду КОМУ ДЕ
= (БЕЗ ПАРОЛЮ) ЩО МОЖНА. У дужках після знаку дорівнює, можна дозволити
виконання певних команд без введення паролю користувача, що збирається
їх виконувати. Головна перевага sudo в тому, що вона дозволяє
користувачам виконання системних команд без знання паролю наглядача
за системою.
# Defaults specification
# User privilege specification
#
#root ALL=(ALL) ALL
USER ALL = POWEROFF
ADMIN ALL = APT
В моєму прикладі, всім треба знати пароль користувача від імені якого повинна бути виконана команда, щоб sudo дозволило її виконання. Якщо ви бажаєте виконувати щось без паролю, вставте у дужках відповідну вказівку для sudo. (Дивись man sudoers) Проте, на мій погляд, краще цього не робити. Свій власний пароль повинен пам'ятати кожен користувач. Виконання системних команд, що впливають на стан системи вцілому, дуже відповідальний момент. Так-так. Ви можете однією дією перетворити свою систему на неробочу. Пам'ятайте про це! І тому, необхідність введення паролю, дає шанс ще раз подумати до того як зробити.
Сподіваюся, цей текст допоможе вам зробити роботу у вашій системі GNU/Linux трохи зручнішою та безпечнішою. Ви можете використовувати відомості з публікаціі на свій власний розсуд. Ніяких гарантій автор не дає і не бере на себе ніякої відповідальність за його наслідки. Але на відомих мені системах від ALTLinux (Master 2.0, Junior X.X, Spring 2000) все працює бездоганно.
Треба також не забувати, що sudo ``пам'ятає'' введений вами пароль напротязі 5 хвилин. Враховуйте це у своїй діяльності і нехай вам щастить.
Всі права на текст публікаціі належать А.М. Добровольському (С)2002. Текст може бути поширеним на умовах ліцензіі FDL ``Ліцензіі GNU на відкриту документацію'' версіі 1.1 або пізнішої. З її текстом ви можете ознайомитися на сторінках http://www.gnu.org/licenses/licenses.html#FDL. У випадку використання матеріалів з тексту, посилання на автора обов'язкове.
This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.57)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -no_subdir -split 0 -show_section_numbers sudo.tex
The translation was initiated by on 2002-08-07