Чим відрізняється команда sudo від su?


12

Яка різниця між командою sudoта suкомандою? Чому OS X обробляє ці відмінності від Linux?


1
Якщо що-небудь, Linux би поводився з ними інакше, ніж OS X. OS X має сертифікат Unix, а це означає, що він відповідає певним стандартам поведінки. Linux схожий на Unix, але не сертифікований Unix і не обов'язково відповідає стандарту Unix. Отже, якщо існують відмінності (крім проблеми з кореневим паролем, зазначеної у відповіді Аарона Лейка), вони не відповідають вимогам реалізаторів конкретного дистрибутиву Linux.
алесплін

Відповіді:


21

OS X обробляє sudoта suідентично Linux.

sudoце команда, яка без додаткових параметрів виконує команду як root. Наприклад:

% touch /newfile
touch: /newfile: Permission denied
% ls -l /newfile
ls: /newfile: No such file or directory
% sudo touch /newfile
% ls -l /newfile 
-rw-r--r--  1 root  wheel  0 Apr 27 11:45 /newfile

suз іншого боку, переключить поточного користувача на root (знову ж таки без зайвих команд). У наведеному нижче прикладі мені потрібно запустити sudo su, оскільки я не знаю кореневого пароля для моєї системи:

% whoami
alake
% sudo su
$ whoami
root

Ключова різниця між sudoі su- sudoце команда як root, тоді як suробить вас root. Як і інші утиліти командного рядка, існує ряд альтернативних способів використання обох, sudoі suякщо вам це цікаво, ви завжди можете запустити, man <command>наприклад. man sudoщоб отримати більше інформації.


5
Простим мовним терміном sudoможе бути хоч як super user and do. В якості додаткового моменту, в ОС X після того, як ви успішно пройшли автентифікацію, ви можете використовувати судо без пароля протягом короткого часу (за замовчуванням 5 хвилин, якщо це не буде замінено sudoers), після чого вам доведеться знову ввести пароль.
binarybob

1
"без додаткових опцій" є досить важливим класифікатором ... вони обоє дозволять вам стати іншими користувачами, крім root ... наприклад, sudo su -lm _wwwдозволять вам мати оболонку, як ніби користувач веб-сервера (запустивши команду як root, як у нього немає дійсного пароля)
Joe

2
@Joe, я розглядав можливість додавати цю інформацію, але для короткості пропущений. Як ви описуєте, sudoдосить міцна утиліта, яка охоплює навіть основні функціональні можливості, в кінцевому рахунку збиває з пантелику або переповнить цільову аудиторію, яка шукає розмежування між sudoі su.
Озеро Аарон

"Ключова відмінність sudo від su - команда sudo виконує команду як root, тоді як su робить вас root" - false, sudo -sзапускає shell ("робить вас root") і su -c commandвиконує команду як root.
el.pescado

2
Знову заради стислості я опустив безліч альтернативних методів використання sudo. Крім того, ви не можете зробити це su -c commandза замовчуванням в OS X, оскільки ви не знаєте пароль root. Однак ви можете sudo suзмінити пароль su -c command. Я відчуваю, що на це питання відповіли, і не було необхідності заглиблюватися глибше, щоб чергувати використання судо і су. Однак я оновлю пост для допитливих людей.
Озеро Аарон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.