В Linux работает как su так же, как работает как root?


5

Я думал, что использование su в качестве обычного пользователя сделало вас рутом временно, но я столкнулся с проблемой, когда я получаю «bash: usermod: command not found», когда пытаюсь выполнить usermod с su, тогда как команда определенно существует, когда я вхожу как корень.

Супер-пользователь и root разные вещи? Если да, то о каких ограничениях я должен знать?


3
sudo существует, чтобы защитить вас от себя, поскольку слишком легко совершать ошибки, работая от имени пользователя root. Я был unix-головой еще до sudo, никогда не создавал то, что rmя не имел в виду, и все еще использую sudo вместо корневой оболочки. Ввод 4 символов, пробела, а иногда и моего пароля пользователя требует гораздо большего понимания привилегий пользователя root, чем использование #в качестве приглашения оболочки.
Msw

1
@msw: правда, но иногда sudoэто излишне неудобно, например, когда вы собираетесь запускать серию команд как, rootили вы хотите воспользоваться преимуществами завершения имени файла в rwx------каталогах, или что-то в этом роде. Что я делаю, так это задаю для приглашения оболочки root красный цвет, а для приглашения обычного пользователя - зеленый. Прекрасно работает, и это тоже довольно ;-) (и я обычно использую sudoтоже)
Дэвид Z

Ответы:


12

Там нет разницы между «суперпользователь» и «корень». Но дело в том su(что, на самом деле, означает «переключить пользователя»), не полностью эмулирует среду, которую вы получили бы, если бы вы вошли в систему напрямую как root. Например, обычно при запуске suпеременные среды из текущей оболочки переносятся в подоболочку, в которой вы вошли как root. (За исключением PATH; см. Справочную страницу для деталей)

Чтобы обойти это, вы можете использовать опцию -l(или --login) для su, которая будет пытаться дублировать среду, которую вы получили бы, если бы вы действительно вошли в систему как root.


10
+1, правильный ответ. Я обычно использую только тир вместо: su -. Проверьте страницу su su, чтобы убедиться в этом, su -и su -lдействуйте так же в своей системе.
Даг Харрис

3
+1 для смены пользователя. Не многие люди помнят, что его можно использовать для любого имени пользователя, если вы находитесь в колесе.
AndrejaKo

@AndrejaKo: относительно /in wheel/- кто-нибудь это suпроверяет? (Я знаю, что версия GNU wheelполностью игнорируется .)
grawity

Я, честно говоря, не знаю. Я думаю, что в Solaris это происходит, но я не могу проверить это в данный момент. Я помню, я читал, что когда GNU su был новым, rms решил не использовать колесо по идеологическим причинам. Я предполагаю, что в то время системы Unix регулярно проверяли, был ли пользователь за рулем. Также я где-то читал, что Solaris будет использовать колесо, если группа существует. Вот источник для этого windowsecurity.com/whitepapers/Armoring_Solaris.html
AndrejaKo

1
@Yarin: на самом деле есть: sudo -iбудет имитировать начальный вход в систему, вызывая оболочку указанного пользователя (по умолчанию root) в качестве оболочки входа. Это должно иметь в основном тот же эффект, su -lчто и другой механизм, поэтому он может быть не одинаковым в каждой детали. Смотрите man-страницу sudoдля подробностей.
Дэвид З,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.