- Интерактивная система просмотра системных руководств (man-ов)
- Что такое sudo
- Содержание
- СОВЕТЫ ПО БЕЗОПАСНОСТИ
- ПЕРЕВОД
- Graphical helpers
- 3.1. GNOME
- 3.2. KDE
- Использование псевдонимов
- Using the su command
- Using sudo
- 2.1. Sudo shell
- Запуск графических программ с правами администратора
- Index
- ТАКЖЕ
- Basic sudo
- Sudo не спрашивает пароль
- НАЗВАНИЕ
- Получение прав суперпользователя для выполнения нескольких команд
- Время действия введённого пароля
- Using sudo without a password
- Edit /etc/sudoers
- Alternate method: Create a new file in /etc/sudoers.d
- Использование команды
- Настройка sudo и прав доступа на выполнение различных команд
- Разрешение пользователю выполнять команду без ввода пароля
- Создание синонимов (alias`ов)
- For more information
- Использование традиционного root аккаунта и команды su
- Ubuntu 11.04 и младше
- Ubuntu 11.10 и старше
- Ссылки
- ПРЕДОСТЕРЕЖЕНИЯ
- 1 Sudo shell
- Содержимое файла /etc/sudoers
- How To Become Root
- Где используется sudo
- ПРИМЕРЫ
- Запуск программ с правами администратора в терминале
- Enable sudo during system installation
- Использование Sudo
- Consolehelper
- Вместо заключения
- Consolehelper
Интерактивная система просмотра системных руководств (man-ов)
This article covers:
- How to configure
sudoaccess on Red Hat Enterprise Linux (RHEL) and CentOS so you won’t need to usesuand keep entering the root password - Configuring
sudoto not ask for your password - How to enable
sudoduring system installation - Why
sudoseems to work out of the box for some users and not others
Что такое sudo
sudo — это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.
[userA@rhel7 ~]$ su - Password:
visudo command cannot allow to edit /etc/sudoers file simultaneously by just locking the file and if someone tries to access the same it will get a message to try later.
[root@rhel7 ~]# visudo visudo: /etc/sudoers busy, try again later
It also checks the syntax of edits and provide basic sanity checks which are very helpful. If it identifies any error, then visudo won’t allow to save the file with edits.
root ALL=(ALL:ALL) ALL
This allows root to run any command anywhere.Meaning of this line is –
username hosts=(users:groups) commands
userA ALL=(ALL:ALL) ALL
If you wish to use command without password then use PASSWD parameter –
userA ALL(ALL:ALL) NOPASSWD:ALL
userA ALL=(root) /usr/bin/systemctl, /usr/sbin/httpd start stop restart
[root@rhel7 ~]# su - userA Last login: Thu Sep 13 15:01:18 EDT 2018 on pts/0 [userA@rhel7 ~]$ sudo -u root systemctl stop httpd [sudo] password for userA: [userA@rhel7 ~]$
Note – We can also use vim with visudo.
export VISUAL=vim; visudo
Using nano with visudo
export VISUAL=nano; visudo
%wheel ALL=(ALL) ALL
usermod -aG wheel username
Данная статья – это продолжение темы, посвящённой утилите sudo, начатой материалами, знакомящими с данной командой и некоторыми её опциями. Ниже попробуем рассказать о настройках утилиты sudo, которые могут применяться в её отношении.
Настройки sudo по большей части находятся в файле /etc/sudoers. Для внесения изменений в этот файл крайне нежелательно использовать обычный редактор текста. Дело в том, что некорректный синтаксис файла sudoers запросто может навредить операционной системе в части повышения уровня полномочий учётных записей и их действий. Для редактирования файла sudoers существует специальная команда – visudo. Данная команда использует штатный текстовый редактор, но при сохранении внесённых в файл изменений производит проверку синтаксиса.
Здесь есть один интересный момент. Команда visudo обычно использует текстовый редактор vi. Но, например, в Ubuntu visudo открывает файл при помощи nano. И, несмотря на это, операционная система сохраняет возможность заменить использующийся редактор. В Ubuntu команда для изменения редактора выглядит следующим образом:
$ sudo update-alternatives --config editorЗдесь нужно просто ввести соответствующую цифру, либо нажать <Enter>, чтобы не вносить изменений:

Пользуюсь Linux (Ubuntu в связке с KDE) не давно.
В процессе установки apache2 + php5 + mysql скорее всего где то накосячил, так как перестал нормально работать root терминал. Зайти в него сейчас можно, но только через обычный с использованием команды su и ввода пароля. К тому же перестала работать команда sudo, терминал начал воспринимать команды без нее, с sudo просто не работает — пишет «sudo: no valid sudoers sources found, quitting«.
И что самое не приятное перестали работать программы для которых необходимы были права root, т.е. для работы которых необходимо было ранее вводить пароль: Synaptic, Менеджер обновлений и другие. В «Системном администрировании» в управление пользователями зайти не могу. В общем что произошло с ОС для меня тайна покрытая мраком.
Искал в гугле, но ответов которые помогли бы решить данную проблему так и не нашел.
visudo показывает такую инфу:
Если ввести id, то выдает:
uid=0(root) gid=0(root) группы=0(root)
Работаю под одним пользователем, он насколько я понимаю и входит в группу root.
Команда cat /etc/hosts показывает:
В общем, что слетело не очень понятно. Если кто то даст дельный совет буду благодарен.
————————————————
Решил возникшую проблему так как предлагали apl и yoik1984 . Всем спасибо за участие в обсуждении.
Зашел через LiveCD и сменил права /etc/sudoers на root . А также дал root всей папке etc права которой менял при настраивании LAMP, а обратно сменить что то не подумал.
Содержание
В любой Linux-системе обязательно есть один привилегированный пользователь — root. Этот пользователь имеет права на выполнение любых действий, удаление любых файлов и изменение любых параметров. Как-то ограничить свободу действий root практически невозможно. С другой стороны, все остальные пользователи системы обычно не имеют большинства необходимых прав, например, прав на установку программ, поскольку это является административной операцией, права на которую есть только у root. Ещё одной распространённой операцией, доступной только суперпользователю, является копирование и изменение файлов в системных папках, куда обычный пользователь доступа не имеет.
Раньше данная проблема решалась достаточно просто: при обладании паролем root можно было зайти в систему под его аккаунтом либо временно получить его права, используя команду su. Потом выполнить все необходимые операции и вернуться обратно под обычного пользователя. В принципе, такая схема работает неплохо, однако у неё есть много существенных недостатков, в частности, невозможно никак (точнее, очень сложно) ограничивать административные привилегии только определённым кругом задач.
Поэтому в современных дистрибутивах Linux вместо root аккаунта для администрирования используется утилита sudo.
В Ubuntu по умолчанию root аккаунт вообще отключён, т.е. вы никаким способом не сможете попасть под root, не включив его. root именно что отключён, т.е. он присутствует в системе, под него всего лишь нельзя зайти. Если вы хотите вернуть возможность использовать root, смотрите ниже пункт о включении root аккаунта.
СОВЕТЫ ПО БЕЗОПАСНОСТИ
В целом исключение команд из ALL,
с использованием оператора !, не эффективно. Пользователь может тривиально это обойти, копируя желаемые команды с разными именами, и затем их выполнять. Например:
В действительности не реально предотвратить выполнение bill команд, перечисленных в SU или SHELLS, так как он может запросто их скопировать под разными названиями, или использовать расширения оболочки из редактора или другой программы. Поэтому этот вид ограничений должен быть тщательно изучен (и подкреплен системной политикой).
ПЕРЕВОД
sass@altlinux.ru
Graphical helpers
3.1. GNOME
3.2. KDE
Использование псевдонимов
При организации данных по разным пользователям и группам в файле /etc/sudoers полезно использование различных псевдонимов. Вот так выглядят записи в /etc/sudoers, соответствующие трём разным группам пользователей:
User_Alias GROUPA = user1, user2, user3
User_Alias GROUPB = user4, user5, user3
User_Alias GROUPC = user1, user4, user5Важно помнить, что названия групп должны начинаться с заглавной буквы. Следующей строкой для членов группы GROUPA мы дадим разрешение на запуск обновления базы данных apt:
GROUPA ALL = /usr/bin/apt updateПодобным же образом мы можем дать участникам группы GROUPC разрешение на перезагрузку операционной системы. Для этого необходимо создать псевдоним, содержащий команды на перезагрузку системы. Такой псевдоним мы назовём, например, RSTRT. После чего участникам группы GROUPC нужно будет выдать разрешение на запуск этих команд.
Cmnd_Alias RSTRT = /sbin/restart, /sbin/reboot
GROUPC ALL= RSTRTВ файле /etc/sudoers существует возможность контролировать реакцию утилиты sudo при её вызове. Например, вы можете разрешить пользователям выполнять какую-либо команду с использованием полномочий root, но без необходимости пользователю вводить свой пароль. Для таких случаев применяется опция NOPASSWD. Так будет выглядеть запись в /etc/sudoers, разрешающая запуск команды apt update участникам группы GROUPB:
GROUPB ALL = NOPASSWD: /usr/bin/apt updateИ кстати, в /etc/sudoers есть настройка, позволяющая изменить количество неправильных попыток ввода пароля при выполнении команды sudo. По умолчанию таких попыток разрешено 3. Но если есть желание увеличить из количество, допустим, до четырёх, то такая настройка будет выглядеть как:
Defaults passwd_tries=4Там же вы можете изменить фразу, с помощью которой система сообщает вам о неверно набранном пароле при запуске sudo:
Defaults badpass_message="Your password is not correct!"И эту фразу пользователь будет видеть вместо стандартной Sorry, try again.

Using the su command
su - <user>
su <user>
su - root
su root
su -
su
suPassword:ifconfigbash: ifconfig: command not found
So you either need to specify the full PATH to the command if you just used ‘su‘ (eg, /sbin/ifconfig) or use ‘su —‘ when becoming root.
Using sudo
So, the quick and dirty way to use sudo would be to add at the end of the sudoers file :
bob ALL=(ALL) ALL
$sudo yum update
%admin ALL=(ALL) ALL
User_Alias ADMINS = alice, bob
However, we don’t want alice and bob to run every command as root, we want them to run only updatedb. Let’s define a command alias:
Cmnd_Alias LOCATE = /usr/sbin/updatedb
ADMINS ALL = LOCATE
At this time, /etc/sudoers looks like this:
User_Alias ADMINS = alice, bobCmnd_Alias LOCATE = /usr/bin/updatedbADMINS ALL = LOCATE
alice and bob should be able to run updatedb as root, by giving their password.
If we replace the last line of the file with:
ADMINS ALL = NOPASSWD: LOCATE
alice and bob can run «sudo updatedb» without entering a password.
It is possible to add more commands in a command alias and more aliases in the rule. For example, we can create an alias named NETWORKING containing some networking commands like ifconfig, route or iwconfig:
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
User_Alias ADMINS = alice, bobCmnd_Alias LOCATE = /usr/bin/updatedbCmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-toolADMINS ALL = LOCATE, NETWORKING
A little try: log in as alice (or bob), and type:
$ping -c 10 -i 0 localhost
the answer should come quickly:
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.ping: cannot flood; minimal interval, allowed for user, is 200ms
Now, let’s sudo it:
$sudo ping -c 10 -i 0 localhostPING localhost.localdomain (127.0.0.1) 56(84) bytes of data.64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.017 ms64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 time=0.016 ms64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=7 ttl=64 time=0.016 ms64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0.016 ms64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 time=0.016 ms64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0.016 ms--- localhost.localdomain ping statistics ---10 packets transmitted, 10 received, 0% packet loss, time 1msrtt min/avg/max/mdev = 0.016/0.023/0.049/0.010 ms, ipg/ewma 0.187/0.028 ms
Apr 18 11:23:17 localhost sudo: bob : TTY=pts/0 ; PWD=/home/bob ; USER=root ; COMMAND=/bin/ping -c 10 -i 0 localhost
That’s it. Now never forget, when using sudo: «with great power comes great responsibility».
2.1. Sudo shell
If you have sufficient rights configured in sudoers you can also open a root shell by using
sudo -i
Запуск графических программ с правами администратора
Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt+F2.
Допустим, нам необходимо запустить файловый менеджер Nautilus с правами администратора, чтобы через графический интерфейс как-то изменить содержимое системных папок. Для этого необходимо ввести в диалог запуска приложений команду
gksudo nautilus
Вместо gksudo можно подставить gksu, кроме того, пользователи KDE должны вместо gksudo писать kdesu. У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска
gksudo <имя_команды>
Будьте предельно внимательны при работе в приложениях, запущенных с правами администратора. Вы безо всяких предупреждений со стороны системы сможете выполнить любую операцию, в частности, удалить системные файлы, сделав при этом систему неработоспособной.
Index
- НАЗВАНИЕ
- ОПИСАНИЕ
- Краткое руководство по -1EBNF
- Псевдонимы
- Значения по умолчанию
- Списки, которые могут быть использованы в булевом контексте:
- Спецификация Пользователя
- Runas_Spec
- -1NOPASSWD and -1PASSWD
- Символы подстановки (метасимволы):
- Исключения из правил символов подстановки:
- Другие специальные символы и зарезервированные слова:
- ПРИМЕРЫ
- СОВЕТЫ ПО БЕЗОПАСНОСТИ
- ПРЕДОСТЕРЕЖЕНИЯ
- ФАЙЛЫ
- ПЕРЕВОД
- СМ. ТАКЖЕ
ТАКЖЕ
rsh(1), sudo(8), visudo(8), su(1), fnmatch(3).
Basic sudo
- Become root by running
su - Run
usermod -aG wheel your_user_id - Log out and back in again
%wheel ALL=(ALL) ALL
After logging out and back in again, you can verify that you are in group wheel by running the id command:
$ id uid=1000(rct) gid=10(wheel) groups=10(wheel),1000(rct)
Sudo не спрашивает пароль
sudo без пароля — чудовищная дыра в безопасности, кому попало разрешено делать что угодно. Если вы разрешили это намеренно — срочно верните обратно как было.
Однако, в некоторых случаях sudo внезапно перестаёт требовать пароль само по себе. Если сделать visudo, то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:
ALL ALL=(ALL) NOPASSWD:ALL
Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root запускать только этот Connect Manager, примерно так:
юзернейм ALL= NOPASSWD: /путь/к/программе
Есть и другие варианты решения проблемы, небольшое обсуждение здесь.
НАЗВАНИЕ
sudoers — список пользователей, с указанием того, что они могут выполнять
Получение прав суперпользователя для выполнения нескольких команд
Иногда возникает необходимость выполнить подряд несколько команд с правами администратора. В этом случае можно временно стать суперпользователем одной из следующих команд:
sudo -s sudo -i
После этого вы перейдёте в режим суперпользователя (с ограничениями, наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на su, однако:
— sudo -s — не меняет домашний каталог на /root, домашним остается домашний каталог пользователя вызвавшего sudo -s, что обычно очень удобно.
— sudo -i — сменит так же и домашний каталог на /root.
Для выхода обратно в режим обычного пользователя наберите exit или просто нажмите Ctrl+D.
Время действия введённого пароля
Возможно, вы хотите изменить промежуток времени, в течение которого sudo действует без ввода пароля. Этого легко добиться добавив в /etc/sudoers (visudo) примерно следующее:
Defaults:foo timestamp_timeout=20
Здесь sudo для пользователя foo действует без необходимости ввода пароля в течение 20 минут.
Если вы хотите, чтобы sudo всегда требовал ввода пароля, сделайте timestamp_timeout равным 0.
Using sudo without a password
You can also configure sudo to not ask for a password to verify your identity. For many situations (such as for real servers) this would be considered too much of a security risk. However, for developers running a RHEL VM on their laptop, this is a reasonable thing to do since access to their laptops is probably already protected by a password.
To set this up, two different methods are shown. You can either edit /etc/sudoers or you can create a new file in /etc/sudoers.d/. The first is more straightforward, but the latter is easier to script and automate.
Edit /etc/sudoers
The default /etc/sudoers file contains two lines for group wheel; the NOPASSWD: line is commented out. Uncomment that line and comment out the wheel line without NOPASSWD. When you are done, it should look like this:
## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL ## Same thing without a password %wheel ALL=(ALL) NOPASSWD: ALL
Alternate method: Create a new file in /etc/sudoers.d
$ su - # echo -e “your_id\tALL=(ALL)\tNOPASSWD: ALL" > /etc/sudoers.d/020_sudo_for_me # cat /etc/suders.d/020_my_sudoyour_id ALL=(ALL) NOPASSWD: ALL
Использование команды
Многие команды могут быть запущены только суперпользователем, поэтому мы должны знать, как становится им (root-ом). Чтобы сделать это, мы можем использовать команду: su (смена пользователя). Команда su принимает следующие форматы:
su -
su
но чаще всего мы будем использовать su для того, чтобы стать пользователем root:
su - root
su root
если имя пользователя в строке не указано, то автоматически предпологается пользователь root, поэтому команду можно сократить:
su -
su
но обе команды ведут себя различно. ‘su ‘ дает текущему пользователю личность , тогда, как ‘su — ‘ дает текущему пользователю личность вместе с окружением , которое можно было бы получить, зарегистрировавшись в качестве .
Зачастую пользователи используют ‘su’ для перехода в root. Попробовав запустить команду (например — ifconfig), вы получите: ‘command not found’ error.
su Password: ifconfig bash: ifconfig: command not found
Команды обычных пользователей обычно расположены в /usr/local/bin, /usr/bin и /bin. А команды пользователя root распологаются в основном в /usr/local/sbin, /usr/sbin, /sbin и корневой PATH это отражает. Поэтому, когда вы становитесь суперпользователем при помощи «su -«, то вы также принимаете и новый путь PATH к основным командам. А используя только ‘su’, сохраняется пользовательский путь PATH по умолчанию, следовательно, при попытке выполнить программу расположенную в /usr/local/sbin, /usr/sbin, /sbin выдаст результат: ‘command not found’ error. Для более детального объяснения, смотрите справочную страницу (man bash), особенно раздел login shells.
Таким образом, вы или должны указывать полный путь к команде (пример — /sbin/ifconfig) при использовании ‘su’, либо использовать ‘su -‘, когда становитесь root-ом.
Настройка sudo и прав доступа на выполнение различных команд
sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers. Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду
sudo visudo
%admin ALL=(ALL) ALL
Подробнее о синтаксисе и возможностях настройки этого файла можно почитать выполнив
man sudoers
Если вы допустите ошибку при редактировании этого файла, то вполне возможно полностью лишитесь доступа к административным функциям. Если такое случилось, то необходимо загрузиться в recovery mode, при этом вы автоматически получите права администратора и сможете всё исправить. Кроме того, отредактировать этот файл можно с LiveCD.
Разрешение пользователю выполнять команду без ввода пароля
Для того, что бы система не запрашивала пароль при определенных командах необходимо в sudoers после строки # Cmnd alias specification добавить строку, где через запятую перечислить желаемые команды с полным путём(путь команды можно узнать, выполнив which имя_команды:
# Cmnd alias specification Cmnd_Alias SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot
И в конец файла дописать строку
имя_пользователя ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS
Внимание! Вышеописанные действия не отменяют необходимости ввода команды sudo перед вашей командой
Создание синонимов (alias`ов)
Для того, чтобы не только не вводить пароль для sudo, но и вообще не вводить sudo, сделайте следующее:
откройте файл .bashrc, находящейся в вашем домашнем каталоге
~bashrc
и добавьте в конец файла строки
= = pm-hibernate= = =
For more information
- See the «Gaining Privileges» chapter in the Red Hat Enterprise Linux 7 System Administrator’s Guide.
- See «How to allow a normal user to run commands as root user using sudo.» This article is on the Red Hat Customer Portal. Join the Red Hat Developer Program to get a Red Hat ID, which will let you view the knowledgebase articles on the Red Hat Customer Portal.
- See the «Configure your Fedora system to use sudo» article in Fedora Magazine.
Использование традиционного root аккаунта и команды su
Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов «отстрелить себе ногу»), а также упрощает получение доступа к вашему компьютеру злоумышленником.
Ubuntu 11.04 и младше
Для входа под root достаточно задать ему пароль:
sudo passwd root
Ubuntu 11.10 и старше
Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.
1. Устанавливаем root пароль.
Введите в терминал:
sudo passwd root
gksu gedit /etc/lightdm/lightdm.conf
В конце файла допишите:
greeter-show-manual-login=true
3. Перезагружаем lightdm.
Введите в терминал:
sudo service lightdm restart
Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:
sudo passwd -l root
Ссылки
Настройка sudo — топик на форуме о времени действия пароля
ПРЕДОСТЕРЕЖЕНИЯ
Файл sudoers должен редактироваться только командой visudo,
которая блокирует файл и осуществит проверку грамматики. Это
обязательно, во избежание возникновения ошибок в синтаксисе sudoers, так как
sudo не будет работать при наличии ошибок в sudoers.
Если используются сетевые группы или машины (в противоположность пользователям), если вы сохраняете полностью определенные имена машин в сетевой группе (что, бывает, случается), то имена машин должны быть полностью определенными, и соответствовать именам, возвращаемым командой hostname, или должна использоваться опция fqdn в sudoers.
1 Sudo shell
Если у вас настроено достаточно прав в sudoers, вы также можете открыть root-ую оболочку shell используя:
sudo -s
sudo -i
В последних версиях только на CentOS 5, для запуска shell под root, используется sudo -s. Будьте очень осторожны, так как это может менять или создавать новые файлы в домашней директории Root, а установку вести в домашний каталог вызвавшего пользователя.
Содержимое файла /etc/sudoers
Теперь давайте рассмотрим некоторые настройки, содержащиеся в файле /etc/sudoers.
Во-первых, строка Defaults env_reset отвечает за сброс терминальной среды с целью удалить переменные пользователя. Такая мера безопасности применяется для ликвидации потенциально опасного воздействия переменных среды в сессии sudo.
Во-вторых, строка Defaults secure_path задаёт значение для переменной PATH. Такой путь для приложений используется утилитой sudo для выполнения операций. Это позволяет защитить систему от использования пользовательских путей, которые могут быть потенциально опасными.
Далее, в файле /etc/sudoers есть строка, определяющая полномочия sudo для учётной записи root.

В этой записи первое значение ALL указывает на то, что описанное правило будет применено ко всем хостам. Второе значение ALL указывает на то, что учётная запись root может выполнять команды от имени любого пользователя. Третье значение ALL говорит о том, что учётная запись root может выполнять команды от имени любой группы. И, наконец, последнее значение ALL указывает на то, что данное правило применяется ко всем выполняемым командам.
Также, рассматриваемый файл содержит строку, задающую правила полномочий sudo для групп.

Имена, которые начинаются со знака %, указывают на то, что речь идёт именно о названиях групп, а не об именах учётных записей. В остальном данная настройка идентична тому, как это описано в отношении пользователей.

Несмотря на то, что строка с параметром includedir начинается со знака #, комментарием данная строка не является. Этот параметр указывает на то, что файлы, находящиеся в директории /etc/sudoers.d, также применяются для настройки полномочий sudo. Файлы в этом каталоге создаются в основном для того, чтобы определённые пользователи могли запускать определённые команды с использованием привилегий sudo. Данные файлы, также как и файл /etc/sudoers, необходимо редактировать командой visudo. Например, для того, чтобы отредактировать файл /etc/sudoers.d/mysettingsfile, следует применить следующую конструкцию:
$ sudo visudo -f /etc/sudoers.d/mysettingsfileHow To Become Root
- Using the su command
- Using sudo
- Graphical helpers
- consolehelper
Где используется sudo
sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic — это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.
Однако не все программы, требующие административных привилегий, автоматически запускаются через sudo. Обычно запускать программы с правами администратора приходится вручную.
ПРИМЕРЫ
Ниже приведены примеры записей sudoers. Возможно, некоторые из них являются выдуманными. Сначала мы определяем свои псевдонимы:
Здесь мы переопределим некоторые встроенные значения по умолчанию. Мы хотим, чтобы sudo регистрировал события при помощи syslog(3), во всех случаях используя метод auth.
Мы не хотим, что бы sudo читало лекции всем пользователям, и пользователь millert не должен указывать пароль. В добавок, на машинах в SERVERS Host_Alias мы держим дополнительный локальный файл журнала и удостоверимся, что мы регистрируем год в каждой строке файла журнала, так как записи журнала будут сохраняться в течение нескольких лет.
Определение пользователя является частью, которая фактически определяет кто что может выполнять.
Мы позволим супер-пользователю (root) и любому пользователю в группе wheel выполнить любую команду на любой машине от имени любого пользователя.
Системные администраторы занятые полный рабочий день (millert, mikef и dowdy) могут выполнить любую команду на любой машине без аутентификации.
Системные администраторы занятые не полный рабочий день (bostley, jwfox и crawl) могут выполнить любую команду на любом компьютере, но сначала должны себя аутентифицировать (так как в записи отсутствует тэг NOPASSWD).
Пользователь jack может выполнить любую команду на машинах с псевдонимом CSNETS (сети 128.138.243.0, 128.138.204.0 и 128.138.242.0).
Из этих сетей только <128.138.204.0> имеет явную сетевую маску (в соответствии с CIDR) означающую сеть класса C. Для остальных сетей в CSNETS в случае соответствия будет использоваться сетевая маска машины.
Пользователь lisa может выполнять любую команду на любой машине с псевдонимом CUNETS (сеть класса B 128.138.0.0).
Пользователь operator может выполнять команды ограничивающиеся простым обслуживанием.
В данном случае таковыми являются резервное копирование, уничтожение процессов, система печати, выключение системы и любая команда в каталоге /usr/oper/bin/.
Пользователь joe может выполнять только su(1) оператору.
Пользователю pete разрешено изменять любой пароль, за исключением пароля супер-пользователя (root) на машинах HPPA. Учтите, что passwd(1) не воспринимает несколько имен пользователей подряд в одной командной строке.
Пользователь bob может выполнять любые команды на машинах SPARC и SGI, как пользователь описанный в Runas_Alias в OP (root и operator).
Пользователь jim может выполнить любую команду на машинах в сетевой группе biglab.
Sudo знает, что biglab является сетевой группой из-за префикса +.
Пользователи в сетевой группе secretaries должны как помогать в управлении принтерами, так и добавлять или удалять пользователей. Таким образом им позволено выполнять эти команды на всех машинах.
Пользователь fred может выполнять команды от имени любого пользователя в Runas_Alias DB (oracle или sybase), без указания пароля.
На машинах ALPHA пользователь john может выполнить su любому пользователю, за исключением супер-пользователя (root), но не имеет права задавать su(1) какие-либо флаги.
Пользователь jen может выполнить любую команду на любой машине, за исключением машин в Host_Alias SERVERS (master, mail, www и ns).
Для любой машины в Host_Alias SERVERS jill может выполнить любую команду в каталоге /usr/bin/, за исключением команд относящихся к Cmnd_Aliases SU и SHELLS.
Пользователь steve может выполнить любую команду в каталоге /usr/local/op_commands/, но только как пользователь operator.
На своей персональной рабочей станции, valkyrie, matt необходима возможность уничтожать зависшие процессы.
Любой пользователь может монтировать или размонтировать CD-ROM на машинах в Host_Alias CDROM (orion, perseus, hercules) без ввода пароля.
Ввод этого несколько утомителен для пользователей, поэтому это первейший кандидат для включения в сценарий оболочки.
Запуск программ с правами администратора в терминале
Для запуска в терминале команды с правами администратора просто наберите перед ней sudo:
sudo <команда>
У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter. После ввода пароля указанная команда исполнится от имени root.
Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале
sudo -K
Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды
sudo cat test.txt | grep text > result.txt
с правами root исполнится только cat, поэтому файл result.txt может не записаться. Нужно либо писать sudo перед каждой командой, либо временно переходить под суперпользователя.
Enable sudo during system installation
I have to admit, I overlooked this option and didn’t understand what it did until I stumbled on this article in Fedora Magazine. While the article is about Fedora, this functionality is essentially the same for RHEL, since Fedora is the upstream community project that is used as the basis for RHEL.

Использование Sudo
Вам не нужно быть суперпользователем каждый раз, когда вы хотите запустить некоторые конкретные административные функции. Благодаря Sudo, вы можете запустить некоторые или все команды как под root-ом. Когда Sudo установлен (пакет: Sudo), вы можете настроить его при помощи команды ‘visudo’ под root-ом. В основном он редактирует (Vim по умолчанию) /etc/sudoers, но это не рекомендуется делать вручную.
Таким образом, быстрый и нерекомендуемый способ использования Sudo, это добавить в конце файла sudoers:
alex ALL=(ALL)ALL
Alex — имя пользователя. Сохраните (нажать escape, затем ввести wq), и все готово. Войдите как alex, и запустите например:
$sudo yum update
Sudo запросит пароль. Это пароль alex-а, а не пользователя root. Так что будте осторожны, когда вы даете права пользователя с Sudo.
%admin ALL=(ALL)ALL
Alex так же может выполнить суперпользовательскую команду, и alisa получила право запускать Sudo, с теми же правами и со своим паролем. Если alex и alisa не члены одной группы, мы можем определить псевдоним пользователя в файле sudoers:
User_Alias ADMINS = alisa,alex
Тем не менее, мы не хотим, чтобы alex и alisa могли запускать с правами суперпользователя любую програму. Мы хотим, чтобы они могли запускать только ‘updatedb’. Давайте определим команду псевдоним:
Cmnd_Alias LOCATE = /usr/sbin/updatedb
ADMINS ALL = LOCATE
На этот раз, /etc/sudoers выглядит следующим образом:
User_Alias ADMINS = alisa, alex Cmnd_Alias LOCATE = /usr/bin/updatedb ADMINS ALL = LOCATE
В результате alex и alisa могут запускать updatedb, как root, введя свой пароль.
Если последнюю строчку в файле изменить:
ADMINS ALL = NOPASSWD:LOCATE
тогда alex и alisa смогут выполнить ‘sudo updatedb’ без ввода пароля.
Можно добавить другие команды в командный алиас и более алиасов в правило. Например мы можем создать алиас NETWORKING содержащий некоторые сетевые команды типа: ifconfig, route или iwconfig:
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhcclient, /usr/bin/net, sbin/iptables, /usr/bin/rfcom, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
User_Alias ADMINS = alice, bob Cmnd_Alias LOCATE = /usr/bin/updatedb Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net,/sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool ADMINS ALL = LOCATE, NETWORKING
Маленькая проба: войдите в систему как alisa (или alex), и наберите:
$ping -c 10 -i localhost
Ответ должен вернуться быстро:
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. ping: cannot flood; minimal interval, allowed for user, is 200ms
Теперь, тоже-самое но с Sudo:
$sudo ping -c 10 -i 0 localhost PING localhost.localdomain (127.0.0.1) 56(84) bytes of data. 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.049 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.034 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.021 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=4 ttl=64 time=0.030 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=5 ttl=64 time=0.017 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=6 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=7 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=8 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=9 ttl=64 time=0.016 ms 64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=10 ttl=64 time=0.016 ms --- localhost.localdomain ping statistics --- 10 packets transmitted, 10 received, 0% packet loss, time 1ms rtt min/avg/max/mdev = 0.016/0.023/0.049/0.010 ms, ipg/ewma 0.187/0.028 ms
Sudo часто используется для предоставления определенным пользователям частичного доступа к привелигированным командам, чтобы они могли выполнять ограниченные административные функции. Одно из удобств Sudo в том, что все команды записываются в /var/log/secure. Приведенный выше пример будет описан строчкой в журнале:
Apr 18 11:23:17 localhost sudo: alex : TTY=pts/0 ; PWD=/home/alex ; USER=root ; COMMAND=/bin/ping -c 10 -i 0 localhost
Вот и все. Теперь никогда не забуду, когда использовал Sudo: «с большой властью приходит большая ответственность».
Consolehelper
Consolehelper представляет собой оболочку для запуска GUI приложений. Когда он начинает работать, он проверяет конфигурацию PAM для требуемого применения. Это означает, что мы можем проводить аутентификацию пользователя с помощью всех установленных модулей PAM. Основной метод состоит в том, чтобы запросить пароль, но если мы имеем надлежащее оборудование. мы можем аутентифицировать с помощью смарткарты, жетонов, отпечатков пальцев и т.д. Конфигурация PAM выходит за рамки этого документа (см. PAM Руководство администратора), поэтому мы рассмотрим этап настройки consolehelper, необходимый для запуска приложений под root-ом и запросом пароля root.
В качестве примера, давайте настроим /usr/bin/xterm для запуска в качестве root-ого.
Во-первых, мы хотим сохранить возможность запускать Xterm под обычным пользователем. Поэтому создадим символическую ссылку /usr/bin/xterm-root для /usr/sbin/consolehelper:
ln -s /usr/sbin/consolehelper /usr/bin/xterm-root
Теперь для конфигурирования PAM — создайте файл /etc/pam.d/xterm-root:
#%PAM-1.0 auth include config-util account include config-util session include config-util
Наконец, настройте consolehelper на запуск /usr/bin/xterm под root-ом, командой ‘xterm-root’. Создайте файл /etc/security/console.apps/xterm-root:
USER=root PROGRAM=/usr/bin/xterm
Вот и все. Запускайте ‘xterm-root’ (из командной строки или ярлыком .desktop file), введите пароль и в путь. Если вы получили сообщение об ошибке: «Xlib: connecttion to «:0.0″ refused by server», запустите сначала ‘xhost local:root’.
Вместо заключения
Файл /etc/sudoers является очень мощным инструментом настройки функционирования системы. В этой ознакомительной статье мы лишь вкратце коснулись данной темы. Ну, а поскольку вы теперь знаете, что такие настройки возможны, глубину их изучения определять именно вам. Ведь применять или не применять их в работе с Linux-системами, решаете вы.
Consolehelper
As an example, let’s configure /usr/bin/xterm to launch as root.
ln -s /usr/sbin/consolehelper /usr/bin/xterm-root
Now to configure pam — create the file /etc/pam.d/xterm-root:
#%PAM-1.0auth include config-utilaccount include config-utilsession include config-util
USER=rootPROGRAM=/usr/bin/xterm
SESSION=true
Be sure that the line ends with the new line character.






