view mobile version net4me Enable JavaScript in your browser! Linux education center net4me.
 
net4me logo

tux

linux commands
shell script
protocol
ip, tcp, smtp, ntp, ftp
telnet terminal
java and javascript
ajax web technology
documentation
howto, man, info
cisco in network
linux server
linux in home
online utility
and more more more.
python development
туе4ьу дштгч

  Содержание подраздела:
#======================================
#
# Edit by Ben-Ja http://www.net4me.net
#    On Wed 18 Nov 2009 04:02:14 PM MSK
#
#======================================

Танцы с бубнами вокруг sudo.

Для того, чтобы предоставить пользователю в системе сделать что-либо от имени рута или другого пользователя, в unix-like OS есть система sudo.
В этой статье речь пойдет о самой команде sudo, файле конфигурации /etc/sudoers и редакторе этого файла visudo.
Не стану тут описывать ключи работы и т.п. Ключи можно посмотреть в man sudo. Уж чего-чего, а документации по sudo хватает:
$apropos sudo
gksu (1)             - GTK+ frontend for su and sudo
gksudo (1)           - GTK+ frontend for su and sudo
kdesu (1)            - a sudo frontend for KDE
kdesud (1)           - a sudo frontend for KDE
kdesudo (1)          - a sudo frontend for KDE
sudo (8)             - execute a command as another user
sudo_root (8)        - How to run administrative commands
sudoedit (8)         - execute a command as another user
sudoers (5)          - list of which users may execute what
visudo (8)           - edit the sudoers file

Итак, начнем с редактора.

visudo в любимом редакторе

Для того, чтобы редактировать конфиги sudo, существует специальная команда visudo.
Но по умолчанию, она открывает файл в редакторе vi (точнее в редакторе vim, но с установкой старинных и страшных настроек).
Для того, чтобы использовать для редактирования свой любимый редактор, достаточно изменить переменную окружения $EDITOR.
$ echo $EDITOR
vi
Изменим на то, в чём мы привыкли редактировать файлы:
export EDITOR="mcedit"
хотя, лично мне удобнее все-таки vim =)
Теперь команда visudo откроет файл /etc/sudoers на редактирование именно в нашем любимом редакторе.
Напомню, что редактировать этот файл имеет право только root. Поэтому для ubuntu, kubuntu и xubuntu надо выполнить sudo visudo.

Дать права рута себе любимому в ubuntu.

Итак, редактор выставили. Кто мы в системе посмотрели через whoami (если не помним).
Теперь хотим властвовать без ограничений.
$sudo visudo
Формат записей такой:
КТО ПСЕВДОНИМ_ХОСТА=ЧТО_МОЖНО
Открыли файл. И написали:
user  ALL=(ALL) NOPASSWD: ALL
Естественно, слово "user" меняем на имя нашего пользователя в системе. Сохранили.
Теперь для выполсения любой команды от имени рута нам достаточно написать sudo команда и...
Опа! Просит наш пароль... =((( Чё за на?! Мы же сказали NOPASSWD какие пароли?!
А вот она особенность *ubuntu. Дело в том, что ОС типа домашняя и постоянный рут тебе тут типа не нужен.
Читаем дальше. Я всё объясню и мы все-таки получим права root без пароля.

Изменить время действия прав sudo

Как видим, получить рута в ubuntu (kubuntu, xubuntu) не так уж и просто...
Зато для знакомых линуксоидов, пришедших к вам в гости или сидящих рядом на работе, получить рута на вашей машине не составит труда.
Дело в том, что после того, как вы выполнили команду "sudo что-то" и ввели свой пароль,
получить привелегии может любой кто подойдет в течении 5 минут (вообще, по дефолту должно сохраняться 15 минут) к вашему компьютеру.
И дело в том, что ваша авторизация хранится какое-то время, в течение которого можно выполнять любые команды через sudo.
Проверяем:

$sudo mc
спрашивают пароль.
выходим. и еще раз вводим:
$sudo mc
и... никакого пароля не спрашивают.

То есть. Вы выполнили "sudo что-то", вас позвали. Вы закрыли терминал и отошли.
К компу подошел другой человек. Открыл терминал и ввел "sudo su". Всё. Он рут. =)
Хорошо если это друг в гостях и он всего лишь сменил пароль вашему пользователю ради шутки.
Или в вашем .bashrc прописал алиасы на все команды
alias ls="echo здарова, гуру линукса!;"
А если это недоброжелатель по работе?
А если он создал себе пользователя, дал ему права рута и будет заходить к вам на машину по ssh чтоб качать торенты за ваш счет? =)

Избавляемся от времени хранения пароля:
$sudo visudo
Находим строчку
Defaults   env_reset
Комментируем её, а под ней пишем "Defaults timestamp_timeout=0"
т.к. после timestamp_timeout надо указать количество минут, в течение которых пароль sudo требоваться не будет.
В итоге получили:
#Defaults   env_reset
Defaults    timestamp_timeout=0
Всё. Теперь sudo будет лочится сразу, а пароль будет требоваться всегда.

Как заставить работать NOPASSWD в *ubuntu sudo

Специально передвинул ответ ниже расказа о гостях-линуксоидах.
Ладно. Нет у нас гостей. Хотим мы рута без ввода пароля. Любой ценой хотим.
Написали же в sudoers: NOPASSWD. Так почему же не работает и как сделать, чтоб заработало?
Всё очень просто и хитро как и всё в бубунтах:
  1. пользователь должен быть в группе sudo и выше.
    * Примечание: если это тот пользователь что заводился первым, то это уже так.
    $ groups
    *** adm dialout cdrom floppy audio dip video plugdev fuse lpadmin admin winbindd_priv
    
  2. $sudo visudo
    user  ALL=(ALL) NOPASSWD: ALL
    НО!!!
    Эта запись должна быть ОБЯЗАТЕЛЬНО ниже строчки про %admin!!!
    Естественно, везде "user" заменяем на имя своего пользователя.
    В итоге, должно выглядеть где-то так:
    # User privilege specification
    root    ALL=(ALL) ALL
    
    # Members of the admin group may gain root privileges
    %admin ALL=(ALL) ALL
    user     ALL=(ALL) NOPASSWD: ALL
    
Вот такие вот непонятные и хитрые правила для sudo в *ubuntu.
Только учтите, что теперь выполнить "sudo su" на вашей машине сможет
любой ваш гость, любой сотрудник вашей компании, и т.д.
Так что, я вас предупреждал.

Как обычно, если у вас есть что сказать на эту тему,
то велкам в обсуждение этой статьи в нашем блоге.




home back top
При копировании материалов нашего портала, сылка на net4me обязательна.
Рейтинг@Mail.ru   Valid HTML 4.01 Transitional     Яндекс цитирования   best billing

 



...

net4me snowflake
rfc2368
 
net4me portal This page last modified: Saturday, October 1, 2011   be in net. net4me

portal net4me linux education center