• Авторизация


sudo и su - ху из ху. 23-03-2009 12:35 к комментариям - к полной версии - понравилось!


Когда-то меня очень беспокоило несколько вопросов о получении привилегий других пользователей. Например:
• Почему для полученя прав root мне нужно вводить свой пароль, а не его? Не удар ли это по безопасности системы? И в чём вообще логика?
• Почему su не принимает мой пароль?
• Чем они отличаются? И если они выполняют одну функцию, то есть взаимозаменяемы, то зачем их комбинировать в sudo su?

Однажды в умной книжке я всё узнал :). Вот только теперь руки написать дошли :). И так. Чем же отличается sudo от su?

su

Комманда su перелогинивает юзера под другим именем в конкретном экземпляре оболочки. По умолчанию это имя - root (если комманда задана без аргументов). По запросу она требует ввести пароль этого пользователя. То есть, чтобы стать пользователем vasya, выполняем комманду su vasya и вводим его пароль.

Так же можно выполнить единичную комманду от имени любого пользователя, не становясь им. Для этого после его имени используется ключ -c, а за ним следут комманда.

# su vasya -c gedit file.txt


Отличие от sudo в том, что программа не запоминает нас на 10 минут. И если через секунду понадобится выполнить ту же комманду, то она спросит пароль вновь. Это очень хорошо с точки зрения безопасности, так как обычно su намного более опасна, чем sudo.

Пользователь root может становиться кем угодно, не вводя никакого пароля и даже не зная его :). На то он и root :). Для завершения работы программы su можно выполнить exit. Пользователю возвращается идентификатор, с которым он изначально вошёл в систему.

sudo

А тут всё немного интереснее. Программа sudo даёт доступ к правам и ресурсам других пользователей, но не ко всем, а к чётко разрешённым администратором системы. То есть например, админ хочет, чтобы я мог портить его картинки в GIMP, а так же запускать gedit от имени vasya, не выдавая при этом мне своего пароля и пароля Васи :). То есть не позволяя получать полные привилегии от их имени. А для того, чтобы хитрая тётя Валя, моя пол в кабинете в моё отстуствие, не воспользовалась этими привилегиями, то для их использования я должен подтвердить свою личность, введя свой пароль.

Правила, что кому позволено с помощью этой программы, находятся в файле /etc/sudoers.

Главная опасность в том, что пароль запоминается на непродолжительное время, и этим может воспользоваться кто-то другой... А так же, есть много других нюансов, которые следует помнить. Например, если пользователю позволено запускать программу su или некоторый коммандный интерпретатор от имени root, то все остальные запреты для него бессмысленны, так как все привилегии у него уже в руках :).

Ну, чтобы выполнить комманду от имени произвольного пользователя, если она разрешена в /etc/sudoers, необходимо использовать ключ -u, задающий имя этого пользователя.

# sudo -u vasya gedit file.txt

Либо же

# sudo -u vasya su

Превращает меня в Васю, если это позволено в sudoers. Аналогично sudo su превращает меня в root при тех же условиях :).
вверх^ к полной версии понравилось! в evernote
Комментарии (9):
Linux_Loader 23-03-2009-13:02 удалить
Всегда пожалуйста :).
DoubleF 23-03-2009-13:27 удалить
Забываешь про то, что sudo может позволять выполнять определённые типы команд без пароля, что незаменимо в скриптах.
Linux_Loader 23-03-2009-13:31 удалить
Humiliating, я в это не вникал ещё.

DoubleF, я написал только в общих чертах :). А это уже больше относится к правке sudoers, потому я не написал. Да и сам пока не всё знаю ещё.
altesack 23-03-2009-14:42 удалить
Исходное сообщение Linux_Loader:
Отличие от sudo в том, что программа не запоминает нас на 10 минут. И если через секунду понадобится выполнить ту же комманду, то она спросит пароль вновь.


Linux_Loader, Хм... А мы часами висим в su и не отваливаемся..
Что делаем не так?

Linux_Loader 23-03-2009-14:54 удалить
Упс. Я наверное не совсем точно описал. Спасибо за то что указал :). Я позже уточню это в записи.

Вы всё делаете правильно. Я имел ввиду, что если выполнить единичную комманду через sudo, то она запоминает это на некоторое время и не спрашивает пароль вновь. А если выполнить единичную комманду через su, не меняя свой идентификатор, то пароль не запоминается.

То есть su будет работать до выхода из оболочки или программы. А

# su -c gedit /etc/fstab

Это выполнение комманды gedit /etc/fstabот имени root, но при этом ты не становишься root. То есть после её выполнения (в данном случае - закрытия окна gedit) ты остаёшься обычным пользователем. И для повторного выполнения у тебя опять спросят пароль, даже если всего секунда прошла :).
DoubleF 23-03-2009-18:34 удалить
Ответ на комментарий altesack # ``Шурик! Вы комсомолец? Это же не наш метод!''. Постоянно сидеть под рутом не есть хорошо. Наберёшь ещё что-нибудь, не подумав...
altesack 23-03-2009-20:22 удалить
DoubleF, А смысл сидеть не-рутом??
И что можно набрать не то?
Там ребятам нужно-то периодически около 10-ка команд юзать



Комментарии (9): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник sudo и su - ху из ху. | Linux_Loader - Дневник Linux_Loader | Лента друзей Linux_Loader / Полная версия Добавить в друзья Страницы: раньше»