Pull to refresh

Comments 58

ну я так скажу :) каждый живет так как ему нравится. Меня полне устраивает su. И в очень редких случаях, даже незнаю почему пользуюсь sudo. Думаю и то и то имеет право на жизнь :)
ну что Вы, надо себя заставлять использовать правильные средства :-)
согласен. НО
Ваши утверждения по поводу логов, кучи прав это все годится для какого нить сервера где это все очень важ, а для домашнего компа это совсем не принципиально :) мой пароль рута дома даже моя любимая жена знает, и умеет открывать рутовский шелл :)
зато потом на Большом Сервере не надо будет заново привыкать использовать sudo

а если племянник в гости придёт, поизучает ~/.bash_history и понаделает делов в системе?
и что интересного он там в хистори найдет? туда ж пароли не пишутся…
иногда пишутся, если команду su пишешь неправильно или enter забываешь нажать
да, убедительный аргумент :) хотя мало вероятно что хистори ктото будет смотреть, всеже вы правы :) перехожу на sudo.
Но если использовать sudo точно такая же ситуация может возникнуть, правда пароль не рутовский будет.
Пароль может быть кстати быть и рутовским. Например, в последних SuSE, если вы задаете руту пароль, то по-умолчанию sudo будет в качестве пароля хотеть именно пароль рута.

С другой стороны, если комп домашний, и все равно все знают рутовский пароль, то почему бы не облегчить жизнь с NOPASSWD? В некоторых случаях здорово экономит время. Собственно ради этого самого NOPASSWD я чаще всего sudo и юзаю.
иногда и очистить можно — главное заметить вовремя (:
Да ладно, при физическом доступе к компьютеру можно сделать что угодно. Загрузился с флешки и в путь.
su лучше не пользоваться, можно засветить пароль рута, а для sudo можно настроить ограниченные права.
Спасибо. Хорошо пишете. Новичкам будет полезно.
Пару дней назад успел прочитать в вашем блоге — bappoy.pp.ru/2008/11/10/su-vs-sudo.html
Если уж про линуксы в общем: на моих центосах аналогичный эффект достигается через «sudo -s»; вместо sudoedit используется visudo.
У «sudo su -», кстати, есть одно отличие — чистит терминал после завершения.
sudo -i иногда правильнее, поскольку наследуется рутовое окружение, а не пользовательское, которое может содержать кривые переменные окружения (например, лишние каталоги в PATH)
visudo работает только с /etc/sudoers
насчет чистки терминала думаю, что это настраивается добавлением clear в конец /root/.bashrc
Действительно, -i тоже есть в более поздних версиях (а я даже в ман заглянул, чтоб ещё раз убедиться, что этого параметра там нет… на некоторых серверах).
Касательно очистки терминала — смысла делать это при запуске шелла никакого, а при выходе бывает полезно; правильное решение уже написали.
visudo — это «правильное» редактирование /etc/sudoers, и для других файлов, в отличие от sudoedit оно не подходит
> если пользователь должен быть лишен права администрирования, в случае с su он должен забыть пароль root'а; если используется sudo, достаточно вынести его из соответствующей группы (например, wheel или admin) и/или файла sudoers, если он был дополнительно настроен.

Вот это — ерунда. Для использования su пользователь тоже должен быть в группе wheel. Доказательство:
gw.office.rterm.ru merlin # cat /etc/pam.d/su
#%PAM-1.0

auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid
auth include system-auth

account include system-auth

password include system-auth

session include system-auth
session required pam_env.so
session optional pam_xauth.so

Модуль pam_wheel.so проверяет, является ли пользователь членом группы wheel.
Да, Вы правы.
Просто это казалось мне настолько очевидным, что я как-то забыл об этом написать :)
поправил, спасибо за замечание
pam_wheel.so в качетсве параметра может принимать иям группы к которой должен принадлежать пользователь. МОжно даже трбовать членства в двух и более группах сразу. У меня su может выпольнять только пользователь принадлежащий специальной группе.
так легко — несколько pam_wheel.so, каждый из них required и разные группы в аргументах. Вход разрешит, только если пользователь входит во все группы.
Проблема с su на мой взгляд именно в том, что если пользователя исключили из wheel, то он все равно знает пароль суперпользователя и, как правило, его логин.
Если речь идёт про машину, к которой есть физический доступ — он вообще сможет сбросить пароль рута, если захочет. Загрузится с флешки и вперёд. Т.е. знание или незнание пароля рута не остановит.
(рано нажал)
А если нет физического доступа — знание пароля рута ему наоборот не поможет, т.к. все нормальные системы запрещают непосредственный логин рута через сеть (скажем, есть опция permit root login в openssh, также есть ограничения в nfs и других).

Т.е. знает он — и что это вообще меняет?
Много что меняет. Появляется возможность, имея физический доступ, скрытно предоставить сетевой доступ, например. Даже если сингл режим отключен. И т.д. Вобщем появляются возможности разные. Да и не везде ограничен сетевой доступ. Рут мог для своего удобства открыть скажем. В общем на мой взгляд — проблема имеется.
Да не проблема — я могу не сбивать пароль рута, а, например, chrootиться и делать под рутом что угодно, не зная его. Могу сделать ещё одного пользователя с uid=gid=0, с известным мне паролем. Короче, повторю, при физическом доступе нет разницы, знаешь или не знаешь пароль рута, так что «незнание рутового пароля» абсолютно ничего не решает.
Тем более, что я могу точно так же сбросить пароль «нерута», а пользователя с правом делать sudo, и работать от его имени через sudo.

> Да и не везде ограничен сетевой доступ. Рут мог для своего удобства открыть скажем.
Во-первых, кроме ограничений по uid/gid, бывает ещё куча других — ограничения внутри демонов, ограничения типа selinux или apparmor, ограничения файерволлом и т. д.
Во-вторых, в реальных системах «рутов» всегда несколько (опустим случай «своего админа» в мелкой конторке — они уже вымирают, и вымрут в течение лет трёх, в пользу аутсорсеров). Не может один человек обслуживать сложную сеть, да и иногда ему нужно уходить в отпуск, или он может заболеть…
В третьих, если человек идиот не запрещает такой доступ от имени рута через сеть (для удобства или ещё почему-нибудь), никакое sudo вместо su его точно не спасёт. Рут — это как бы «мастер-пароль» для изменения настроек, а никак не «отдельный пользователь-администратор».

В целом, sudo не добавляет безопастности по сравнению с su, когда мы говорим о выполнении административных задач (сомневающиеся могут попробовать привести ситуацию, в которой оно добавило бы безопастности). sudo было придумано совершенно с другой целью, а именно — «предоставление доступа рядовому пользователю к отдельным командам, требующим прав суперпользователя». Скажем, разрешить ему тушить систему командой sudo shutdown -r now.
Господи, да что-ж вы такой? Никто и не спорит что против квалифицированного злоумышленника разницы в использовании su или sudo нет. Но вы же автомобиль свой открытым на улице не оставляете, из-за того что «если захотят угнать — все равно угонят»? Знание пароля суперпользователя во-первых может облегчить процесс компроментирования системы, во-вторых спровоцировать этот процесс.
Изначально учился пользоваться sudo, и в целом согласен с автором,
непонятно одно — почему неправильно писать sudo vim file?
sudoedit file — это редактор по умолчанию, а если нужен(хочется) vim — то почему же это не правильно?
потому что vim, будучи запущенным в таком виде, позволяет выполнять выполнять команды от имени суперпользователя
а это иногда хочется ограничить

установить vim редактором по умолчанию можно, добавив export EDITOR=vim в ~/.bashrc, так что никаких сложностей тут нет
сори за офтоп, спасибо за статью. всегда пользовался su. открыл для себя что sudo -i подтягивает права не только локального рута а и права из домена, то есть, в хоть домене я доменный администратор, а на локальной машине просто пользователь с унином больше 10000 (добавить в группу wheel нельзя ). права доменного администратора подтянулись сразу без вопроса о пароле (авторизация через домен)
Никогда sudoedit не пользовался, а вот сервисы из sudo vim перезапускал, и удивлялся тому, что такая потенциальная дыра есть, теперь всё встало на свои места. Спасибо.
p.s. Сейчас запустил sudoedit, ужаснулся и пошёл менять редактор не более привычный. =)
ммм странно, а у меня в дебиане root был. )
Спасибо за статью. У меня на десктопе Kubuntu, где я использую sudo всегда, как Вы и предлагаете, а вот в openSuse всегда использую su, так как если вводить sudo <программа с граф. оболочкой>, то пишет «Cannot to connect X-server». Не знаете из-за чего это?
знаю, почитай чуть ниже.
Единственный, на мой взгляд, недостаток sudo — это то, что получив каким-либо способом
пароль пользователя, злоумышленник автоматически получает и все его привелегии, гарантированные в sudoers, и как вариант полный рут доступ. Что в случае с su было бы значительно сложнее.
Не совсем. Можно дать юзерам второй логин типа vasya-su с другим паролем, или поставить пароль на рута, тогда пароли не будут совпадать.
Данные послабления сделаны для однопользовательских систем.
Перечитал Ваш комментарий еще раз, на этот раз понял правильно :)
А как sudo устроена? Считывает настройки один раз при входе в систему, или есть определённый демон?
Вопрос — вот пользователь вошёл в систему, имея определённые настройки, и во время его пребывания в системе суперпользователь изменил набор комманд для него (к примеру рассширил). Пользователь сможет воспользоваться ими сразу? Или необходимо заново представиться системе? Или перезапустить сервис sudo?
Просто по аналогии с .bashrc — набор команд-то я изменю, но пока я не «перезайду» они не применятся.
<hr />
Сеанс разговора с самим собой и консолью.
Ага… Демон есть… Дату у файлов в /var/run/sudo/ меняет на 1/1/1985 — для того, чтобы после перезапуска нельзя было без ввода пароля пользователя запустить sudo.
man sudo прямо-таки глаза раскрыл мне на эту замечательную команду.
Для себя открыл опцию -v — продлить «время ожидания» ещё на 15 минут и при этом не выполнять никакой команды. И по прошествии этого времени спрашивать пароль опять (как и при первом запуске).

-k же, наоборот, «убивает» () штамп времени и при следующем запуске sudo будет требовать пароль. Можно не волноваться за оставленную без присмотра консоль (а то есть тут у меня любители походить по клавиатуре :) ).
Собственно перезапускать его не надо :) Настройки перечитываются при каждой попытке сделать sudo, на сколько я знаю.
В Debian-based дистрибутивах пользователь root не имеет пароля
oh, rly? Или под deb-based автора подразумевает ubuntu-like?
Убунту — это и есть debian-based. Пока что Убунта не доросла до «ubuntu-like» :)
Я намекаю на то, что в самом debian, например, рутовый пароль есть.
Есть такая полезная штучка как пакет sux в дебианах. Позволяет наследовать X environment под su(можно например запустить броузер из-под другого юзера настроенный под особую безопасность). Так вот она построена на su, а на gksu/gksudo у меня не получилось сделать то же самое. Я слегка помучался, не обнаружил аналогичных параметров и все на том закончилось… Так, что в некоторых аспектах su пока рано списывать со счетов :)
Вот, правильно в Дебиане, мне тоже нравится когда для рута не задан пароль. Но мне не нравится заморочный файл sudoers. Почему для тех, кто не хочет возиться с конфигами. нельзя было сделать версию sudo без конфига?
UFO just landed and posted this here
как бывший виндузятник и любитель гуев делаю
ssh root@localhost -X
Насчет «устаревшего» su vs «правильного» sudo — чепуха.

Вообще-то у su и sudo разное предназначение: su — для предоставления пользователю дополнительных прав вообще, sudo — для выполнения ограниченного набора действий.

Как su, так и sudo умеют спрашивать и пароль текущего пользователя, и пароль цели (man suauth, pam_pseudo).

Отдайте sudo пользователям, а su — администраторам.
«В Debian-based дистрибутивах пользователь root не имеет пароля»

Как это не имеет? Сначала он просто не установлен. Загрузился в консоли под root, ввел passwd, поставил пароль. А то так любой зашедший к тебе домой «шутник» поставит его за тебя.
использую sudo. хотя вот только что нашел по теме: boxtor.ru/%d1%80%d0%b0%d0%b7-%d0%b8-%d0%bd%d0%b0%d0%b2%d1%81%d0%b5%d0%b3%d0%b4%d0%b0-%d1%80%d0%b0%d0%b7%d0%b1%d0%b5%d1%80%d0%b5%d0%bc%d1%81%d1%8f-%d1%81-root%d0%be%d0%bc-%d0%b8-sudo/
UFO just landed and posted this here
проверьте, что переменная EDITOR начального пользователя тоже установлена в vim
UFO just landed and posted this here
может, в /etc/sudoers установлена переменная editor, которая ограничивает список допустимых редакторов, и vim нет среди них? вообще проверьте, может, это vi запускается вместо vim?
А в скриптах что использовать? Когда надо не простому пользователю стать рутом, а, наоборот, из рутового скрипта — стартового, или в кроне, запустить других скриптов от других пользователей?
sudo -u user -c <команда>

А вас не смущает, что с sudo достаточно взломать простого юзера, чтобы получить полный доступ к системе, потому как в sudo он вводит свой обычный пароль? Даже, если сделать ограничения на запуск команд, любую из них можно использовать для получения полного доступа, так как она запущена из-под админа.

Благодаря sudo получается, что пользователь работает под админом, что недопустимо и, по-сути, превращает систему в дырявую наподобие самой тупой настройки винды, где юзер обычно имеет права админа (хотя лично я, когда пользовался виндой, лишал своего пользователя админских привелегий, что правильно). Не использовал и не собираюсь никогда пользоваться sudo.

Sign up to leave a comment.

Articles