Як призначено використовувати судо?


24

Я раніше намагався налаштувати sudo, але мені не довелося з цим надто пощастити. Чим він відрізняється від su -l -c "x"? Здається, що через файл конфігурації можна зробити так, щоб користувач мав доступ лише до певних команд та іншого. Я завжди думав sudoяк про спосіб впорядкування команди як іншого користувача чи групи. Оскільки такі дистрибутиви, як Ubuntu та Mint, полегшують, по суті надаючи головному користувачеві легкий доступ до root через пароль, я не дуже впевнений у тому, яке його призначення.

Як додати користувача до файлу sudo, надаючи їм права виконувати лише певні команди в корені? Я також не хочу відкривати жодних дірок у захисті.

Відповіді:


16

Для основної операції - виконання команд як root - найбільш помітною різницею sudo і su є те, що sudo вимагає пароль користувача, що викликає (тобто ваш пароль), тоді як su потрібен пароль цільового користувача (тобто кореневий пароль). Наслідки безпеки широко обговорювалися в попередньому запитанні: який найбезпечніший спосіб отримати привілеї root: sudo, su або логін? .

Судо має додаткові функції поза су. Зокрема, щойно у вас є пароль користувача, ви можете запустити будь-яку команду як цей користувач. З іншого боку, sudo може бути налаштований так, що користувач, який викликає його, може виконувати лише певні команди, як і деякі інші користувачі. Це можливо, тому що sudo не вимагає ніякої автентифікації (крім, можливо, підтвердження того, що ви є, ввівши свій пароль, але це тонко відрізняється від автентифікації користувача для завдання).

Ви змінюєте конфігурацію sudo, запускаючи visudoкоманду як root (ніколи не редагуйте конфігурацію безпосередньо). Переконайтеся, що змінна середовища EDITORчи VISUALвстановлена ​​улюблена редактор, або ви можете отримати незнайомий редактор. Сторінка " sudoersлюдина" трохи коротша, але має приклади. Щоб дозволити користувачеві bobзапускати /bin/foo(з будь-якою кількістю аргументів) і /bin/bar --safe(але не з будь-яким іншим аргументом) як root, використовуйте наступні рядки:

bob ALL = (root) /bin/foo
bob ALL = (root) /bin/bar --safe

2
sudoє дивовижним винаходом
tshepang

1
Від того, чи потрібен sudo пароль для кореневого пароля або пароль, залежить від конфігурації. Його можна встановити будь-яким способом.
Джонатан М Девіс

3
@Thepang Амін, брат. Якщо мені доведеться випустити корінний пароль та пояснити техніку підтримки щодо того, як робити SU, а не робити нічого, крім того, як apache2ctl gracefulя думаю, я вважаю за краще відрізати зап’ястя і перейняти його.
Шадур

6

Найбільша відмінність полягає в тому, що sudoвам не потрібно пароля root для запуску команди як root, як це було б su. Вам потрібен кореневий пароль, щоб додати когось у sudoersфайл, але після цього людина може запустити всі або деякі (якщо ви обмежили його) як корінь, не вимагаючи додаткових паролів.

Інша відмінність полягає в тому, як ви зазначали, sudoдозволяє набагато тонше контролювати, які саме команди можна виконувати.

Докладніше про формат sudoersзапуску файлу man sudoers. Ви знайдете приклади, що дозволяють виконувати лише певні команди як root. Основна структура кожного рядка:

user_list host_list = cmd_list

cmd_list може містити деталі, до якого користувача реальний користувач може перейти. Наприклад, ви можете дозволити веб-майстру переключитися на wwwroot, щоб перезапустити apache, але не root. Він також може включати інші параметри, наприклад, чи потрібний пароль користувача перед перемиканням (це за замовчуванням).

Приклад рядка може бути:

joe  ALL=(ALL) ALL

що означає: нехай Джо виконує будь-яку команду на будь-якому хості як будь-який користувач. Більш чітка лінія може бути:

joe  ALL=(operator) /usr/local/ops/

що означає: нехай Джо виконує будь-яку команду в каталозі / usr / local / ops як "оператор" користувача.

Прикладів є в кінці сторінки про чоловіків-судорів.

Ви повинні редагувати /etc/sudoersза допомогою команди visudo. Це перевіряє, чи файл легальний і допомагає запобігти випадковому його злому.


Від того, чи потрібен пароль при використанні sudo, повністю залежить від того, як sudoersналаштовано файл. Він може бути налаштований таким чином, щоб вимагати пароль або налаштований так, щоб не вимагати пароля.
Джонатан М Девіс,

Додаткові поширені практики, щоб не змінювати головний / etc / sudoers файл, тому що IDS його переглядає і тому, що його форматування може зіпсувати ваш день: Використовуйте фрагменти sudo як окремі файли в /etc/sudoers.d. Використання групи коліс для людей дозволяло будь-яку команду.
bbaassssiiee

2

На додаток до інших відповідей, sudo надає засоби ведення журналу, щоб ви могли відслідковувати, які команди виконувались та ким. Це не в цілях безпеки, оскільки зловмисний користувач, який отримує доступ до sudo, може стерти журнал. Дуже корисно, хоча розібратися, що саме ви чи хтось інший адміністратор затуманили очі в 2 ранку минулого тижня.


3
Це в цілях безпеки, тому що sudo підтримує реєстрацію в syslog, який у будь-яких основних налаштуваннях, пов'язаних із безпекою, буде налаштований для входу на окрему віддалену машину, так що при порушенні системи журнали не можуть бути здійснені.
Arrowmaster

Атрибут файлу лише для додавання може допомогти трохи chattr + a / var / log / secure
bbaassssiiee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.