Каковы преимущества sudo перед su?

19

Какова реальная выгода, которую Ubuntu (или производные Debian) получают, отключая пользователя root?

Везде, где я читаю, написано, чтобы предотвратить непреднамеренный ущерб для неопытных пользователей. Я хочу знать, что именно, так как sudoможет выполнять все команды (которые я знаю / использую).

Так в каком случае root может нанести ущерб, а sudoне может?

PS: я знаю как sudoработает.

Web-E
источник

Ответы:

31

Так в каком случае root может нанести ущерб, а sudo - нет?

Поскольку вы обычно должны вызывать sudoкаждый раз, когда хотите сделать что-то, что требует привилегий, причина в том, что вы будете «думать, прежде чем прыгнуть», то есть не просто вставлять sudo перед чем-то, не задумываясь ни на секунду, какая команда выполняется собирается сделать.

С suдругой стороны, как только вы вошли, вы вошли. У вас есть карт-бланш (открытая лицензия), чтобы делать все и вся, и причина в том, что вы можете на мгновение забыть, что у вас есть эти привилегии, и если вы Вам не повезло, выполните что-то, что серьезно повлияет / повредит вашу систему - если бы у вас не было привилегий su, команда не сделала бы ничего серьезного.

иш
источник
8
Логика «подумай прежде чем прыгнуть» столь же наивна, как думающие пользователи перестанут думать, когда появится диалоговое окно с надписью «Вы действительно хотите установить TrashTheComputer.Virus: Да / Нет?» снизит уровень заражения вредоносным ПО.
Дэн Нили
9
@DanNeely - я так не думаю. Я набираю много команд, и большинство из них не требуют sudo, поэтому я не использую их. Когда я его использую, это дает мне паузу. Да, я говорю как программист, а не обычный пользователь, но опять же, среднестатистические пользователи не используют командную строку.
Натан Лонг
2
@NathanLong не совсем верно с Linux, по причине этот вопрос существует показывает «средний пользователь» не понимая , почему использовать sudoболее su. Слишком часто люди говорят: «используйте sudo, потому что это безопаснее, чем su», - наивно думать, потому что это вовсе не безопасно. Забывать, что вы использовали su, не оправдание, это просто некомпетентность, если вы случайно запустили команду от имени root.
пепел
1
@ash Я все еще говорю, что обычный пользователь не будет спрашивать о сравнительных последствиях безопасности двух методов повышения привилегий пользователя. На самом деле у OP есть вопросы по StackOverflow. Но кроме OP, вспомнить, что вы делали 15 секунд назад, проще, чем вспомнить, что вы делали вчера, и вы могли бы легко иметь терминальную сессию, охватывающую несколько дней. Так что да, вы не должны забывать, когда используете su, но лично я бы предпочел не устанавливать бомбы, чем предполагать, что не забуду их разоружить.
Натан Лонг
16

IMO Основные преимущества sudo перед su - это то, что sudo имеет превосходное ведение журнала выполнения команд, а sudo дает более полный контроль над тем, что могут делать пользователи.

su - это все или ничего, но можно настроить sudo для разрешения доступа к некоторым, но не ко всем командам.

См. Https://help.ubuntu.com/community/RootSudo для более полного обсуждения, включая преимущества и недостатки.

пантера
источник
11

су -

Если вы вошли в систему как пользователь root , любая запускаемая вами задача, инициируемое вами действие или случайное событие, вызванное посещением определенного веб-сайта и т. Д., Будут выполняться как суперпользователь .

Судо

Когда вы запускаете sudo и запускаете команду, только эта команда будет работать как суперпользователь .

Вам будет предложено ввести пароль , прежде чем команда будет выполнена. Таким образом, взаимодействие с пользователем также требуется .

Попытки вызвать sudo также могут быть зарегистрированы .

david6
источник
2
Действительно, он запрашивает пароль текущего пользователя, что облегчает управление паролем root. Если учетная запись удалена из системы, пароль root не нужно сбрасывать. Более того, учетная запись root даже не требует пароля, поэтому учетная запись root не может быть взломана путем перебора.
Джиппи
@jippie: общая хорошая практика - удалять / блокировать / аннулировать пароль root и разрешать доступ только через sudo su. в то время как дефис -является флагом, принятым suвашей оболочкой, и обрабатывает его так, как если бы вы вошли в систему как пользователь (запускает другой набор файлов среды, например .bashrc / .profile)
ash
3

Речь идет об управлении пользователями и паролями для системных администраторов.

Если у вас несколько пользователей, у них всех должны быть отдельные учетные записи, и их можно будет отслеживать с помощью этих учетных записей. Это означает, что люди не могут скрыть свою личность. Кроме того, если вам нужно отменить определенные права пользователей, вам также не нужно сбрасывать пароль root. Чтобы дать каждому человеку в среде с более чем 2 администраторами пароль root создает кошмар, когда один человек выходит. Вы должны не только изменить это, но и сообщить об этом и т. Д. Все это также должно произойти, когда у одного из них украли ноутбук или что-то в этом роде. Одна учетная запись с одним паролем на человека упрощает администрирование. Это похоже на философию, почему каждый сервис должен иметь свою учетную запись. Если одна учетная запись скомпрометирована, вам не нужно перенастраивать другую дюжину сервисов (например, задачи резервного копирования) для использования другой учетной записи.

Я также считаю, что лично мне удобно не иметь еще один пароль для отслеживания, потери и взлома. На RHEL я специально отключаю учетную запись root после настройки sudo, поэтому мне не нужно отслеживать ее. Время от времени пользователь запускает файл sudo, но это можно исправить в однопользовательском режиме. (Естественно, это обычно производственная машина.)

ПРИМЕЧАНИЕ: «sudo bash» позволит вам пропустить ввод sudo для каждой команды ...

flickerfly
источник
Я всегда sudo mc: D
Рони
Единственный ответ на этот вопрос, достойный голосования, четко отвечает на вопрос, не устраняя двусмысленность вопроса и не вводя людей в заблуждение относительно информации.
ясень
@flickerfly, я считаю, что в «сбросить пароль root для того же пользователя» следует удалить «для этого же пользователя» - так будет точнее.
Richlv
@Richlv, ты прав. Я сделал редактирование, которое вы предложили. Не уверен, что я хотел там.
flickerfly
2

Я думаю, во-первых, мы должны посмотреть, что на самом деле являются su и sudo

su - обозначает Заместителя пользователя. Вы используете это для переключения на оболочку как другой пользователь, использующий пароль этого пользователя. Обычно используется с рутом. Не требует пароля при выполнении от имени пользователя root.

sudo - позволяет разрешенному пользователю выполнять указанную команду от имени другого пользователя. Также обычно используется с root. Однако это позволяет вам конкретно управлять тем, какие команды могут быть выполнены для другого использования. (Например, вы можете дать пользователю возможность запускать сценарий init.d, но не более того.)

Обратите внимание, вы всегда можете запустить sudo suили, sudo -iи это даст вам корневую оболочку. Тем не менее, отсутствие пароля root означает отсутствие входа непосредственно как root ... что означает, что никто не может взломать этого пользователя.

РЕДАКТИРОВАТЬ: так что, возможно, этот ответ, который вы ищете: отсутствие пароля root заставляет вас использовать sudo, что, в свою очередь, естественным образом настраивает вас на sudoфилософию, которая предлагает вам усилить контроль над действиями, выполняемыми как root.

user606723
источник
Я написал это сам ....
user606723
2

Кроме того, необходимо учитывать логирование между sudo и su. Быть su просто делает все с правами root без записи, кроме одной строки в журнале аутентификации, в которой говорится, что вы стали пользователем root.

Sudo, с другой стороны, всегда регистрируется как ваш идентификатор пользователя с расширением priveleesw.

kd1s
источник
0

Обычно вход в систему как su проще при выполнении административных задач. Однако есть, по крайней мере, одно исключение: когда владение файлом имеет значение. Если вам нужно, чтобы пользователь был владельцем файла, войдите в систему как этот пользователь и используйте sudo для загрузки или копирования файлов. Простыми примерами являются закладки и файлы обоев. Если пользователь не владеет файлом, Firefox «Восстановить» в закладках «Из файла» завершится ошибкой. Когда вы устанавливаете обои на рабочем столе, они могут не работать, если вы не являетесь владельцем файла. Иногда вы можете просто установить привилегии или включить их в качестве исполняемого файла, но некоторые настройки или программы не будут работать, если вы не являетесь владельцем файла.

DotheMath45
источник
Вы входите в систему как root и используете Firefox для работы в Интернете? Я думаю, что это причина отключения учетной записи root. Это исключает возможность входа в систему как root для ежедневного использования.
adempewolff