Найбільша відмінність полягає в тому, що 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є дивовижним винаходом