Содержание
- 1 Зачем использовать sudo без ввода пароля?
- 2 sudo не спрашивает пароль
- 3 Настройка
- 4 Запуск графических программ с правами администратора
- 5 Настройка sudo и прав доступа на выполнение различных команд
- 6 Получение прав суперпользователя для выполнения нескольких команд
- 7 Что такое sudo
- 8 Использование традиционного root аккаунта и команды su
- 9 Где используется sudo
- 10 Запуск программ с правами администратора в терминале
Зачем использовать sudo без ввода пароля?
Объясню, зачем это нужно и почему удобно лично для меня. У меня есть локальный сервер Apach2, на котором я частенько провожу всякие эксперименты, тренирую php, учу Zend Framework и многое другое. В общем, издеваюсь над ним. Как порядочный пользователь, я включаю его, когда он мне нужен и выключаю, когда наиграюсь. Это делается с помощью двух команд.
sudo /opt/lampp/lampp start sudo /opt/lampp/lampp stop
Ламп-сервер лежит в директории /opt, которая защищена от вторжения рядовых пользователей, поэтому без применения sudo не обойтись. Проблема в том, что мне надоедает каждый раз вводить пароль для такой элементарной операции. Кроме того, я не буду против, если кто-нибудь подойдет и включит apach без моего разрешения, пожалуйста. Можете даже выключить. Поэтому ставить пароль на эти команды вовсе необязательно. Решение нашлось мгновенно и в нем нет ничего сложного, главное сделать все внимательно и сосредоточено. В прочем, все, что касается настройки Linux нужно делать медленно и вдумчиво, утверждаю основываясь на собственном горьком опыте. Поэтому ловим максимальную концентрацию и приступаем к настройке.
sudo не спрашивает пароль
sudo
без пароля — чудовищная дыра в безопасности, кому попало разрешено делать что угодно. Если вы разрешили это намеренно — срочно верните обратно как было.
Однако, в некоторых случаях sudo
внезапно перестаёт требовать пароль само по себе. Если сделать visudo
, то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:
ALL ALL=(ALL) NOPASSWD:ALL
Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root
запускать только этот Connect Manager, примерно так:
юзернейм ALL= NOPASSWD: /путь/к/программе
Есть и другие варианты решения проблемы, небольшое обсуждение здесь.
Настройка
Система: Linux Ubuntu 16.04, ALT Linux.
Необходимый конфигурационный файл лежит по адресу /etc/sudoers. Первое и самое важное, чему меня научил год непрерывной работы с Linux, нужно сделать резервную копию.
sudo cp /etc/sudoers /etc/sudoers_copy
Отлично, мы оберегли себя от больших проблем. Если, не дай бог, файл будет запорот и программа sudo перестанет работать, мы просто зайдем под рута через su и вернем старую настройку.
Теперь про сам файл. Открываем его.
sudo nano /etc/sudoers
Листаем в самый низ и дописываем правило.
kirill ALL = NOPASSWD: /opt/lampp/lampp start
Сначала идет имя пользователя, для которого устанавливается правило. Затем домен, в нашем случае ALL — все домены. После равно, с помощью незамысловатого слова NOPASSWD просим не спрашивать пароль для команды, которая стоит после двоеточия.
Внимание, важно!Чтобы файл с настройками работал после нашего внедрения, в конец, сразу после правила нужно добавить один символ переноса строки(одну пустую строку). Иначе при попытке использовать sudo будет выдаваться предупреждение о том, что невозможно корректно считать файл с конфигурацией.
Аналогичным образом можно добавить сколько угодно команд. Не забывайте оставлять после каждой пустую строку.
Запуск графических программ с правами администратора
Для запуска графических программ с правами администратора можно воспользоваться диалогом запуска программ, вызываемым по умолчанию сочетанием клавиш Alt+F2.
Допустим, нам необходимо запустить файловый менеджер Nautilus с правами администратора, чтобы через графический интерфейс как-то изменить содержимое системных папок. Для этого необходимо ввести в диалог запуска приложений команду
gksudo nautilus
Вместо gksudo
можно подставить gksu
, кроме того, пользователи KDE должны вместо gksudo
писать kdesu
. У вас попросят ввести свой пароль, и, если вы обладаете нужными правами, Nautilus запуститься от имени администратора. Запуск любого графического ПО можно производить с правами администратора, просто написав в диалоге запуска
gksudo <имя_команды>
Будьте предельно внимательны при работе в приложениях, запущенных с правами администратора. Вы безо всяких предупреждений со стороны системы сможете выполнить любую операцию, в частности, удалить системные файлы, сделав при этом систему неработоспособной.
Настройка sudo и прав доступа на выполнение различных команд
sudo позволяет разрешать или запрещать пользователям выполнение конкретного набора программ. Все настройки, связанные с правами доступа, хранятся в файле /etc/sudoers
. Это не совсем обычный файл. Для его редактирования необходимо (в целях безопасности) использовать команду
sudo visudo
По умолчанию, в нём написано, что все члены группы admin имеют полный доступ к sudo
, о чём говорит строчка
%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, находящейся в вашем домашнем каталоге
nano ~/bashrc
и добавьте в конец файла строки
aliasreboot='sudo reboot'aliaspoweroff='sudo poweroff'alias pm-hibernate='sudo pm-hibernate'aliashibernate='sudo pm-hibernate'aliasshutdown='sudo shutdown'
Получение прав суперпользователя для выполнения нескольких команд
Иногда возникает необходимость выполнить подряд несколько команд с правами администратора. В этом случае можно временно стать суперпользователем одной из следующих команд:
sudo -s sudo -i
После этого вы перейдёте в режим суперпользователя (с ограничениями, наложенными через настройки sudo), о чём говорит символ # в конце приглашения командной строки. Данные команды по действию похожа на su
, однако: — sudo -s — не меняет домашний каталог на /root, домашним остается домашний каталог пользователя вызвавшего sudo -s, что обычно очень удобно. — sudo -i — сменит так же и домашний каталог на /root.
Для выхода обратно в режим обычного пользователя наберите exit
или просто нажмите Ctrl+D.
Что такое sudo
sudo — это утилита, предоставляющая привилегии root для выполнения административных операций в соответствии со своими настройками. Она позволяет легко контролировать доступ к важным приложениям в системе. По умолчанию, при установке Ubuntu первому пользователю (тому, который создаётся во время установки) предоставляются полные права на использование sudo. Т.е. фактически первый пользователь обладает той же свободой действий, что и root. Однако такое поведение sudo легко изменить, об этом см. ниже в пункте про настройку sudo.
Использование традиционного root аккаунта и команды su
Разблокировка учетной записи root приводит неоправданным рискам (работая постоянно под рутом вы имеете 100500 способов «отстрелить себе ногу»), а также упрощает получение доступа к вашему компьютеру злоумышленником.
Ubuntu 11.04 и младше
Для входа под root достаточно задать ему пароль:
sudo passwd root
Потом на экране входа нажмите Другой… и введите логин (root) и пароль, который вы задали.
Ubuntu 11.10 и старше
Начиная с версии 11.10 был установлен менеджер входа lightdm, и дело со входом под root обстоит немного сложнее.
1. Устанавливаем root пароль. Введите в терминал:
sudo passwd root
2. Включаем пункт «Введите логин». Введите в терминал:
gksu gedit /etc/lightdm/lightdm.conf
В конце файла допишите:
greeter-show-manual-login=true
3. Перезагружаем lightdm. Введите в терминал:
sudo service lightdm restart
Все, на экране входа появится пункт «Логин». В поле логин вводим «root», в поле пароль — пароль, который мы задали на первом этапе.
Для обратной блокировки учетной записи root вам потребуется откатить изменения в настройках lightdm, а также заблокировать учетную запись root командой в терминале:
sudo passwd -l root
Где используется sudo
sudo используется всегда, когда вы запускаете что-то из меню Администрирования системы. Например, при запуске Synaptic вас попросят ввести свой пароль. Synaptic — это программа управления установленным ПО, поэтому для её запуска нужны права администратора, которые вы и получаете через sudo вводя свой пароль.
Однако не все программы, требующие административных привилегий, автоматически запускаются через sudo. Обычно запускать программы с правами администратора приходится вручную.
Запуск программ с правами администратора в терминале
Для запуска в терминале команды с правами администратора просто наберите перед ней sudo
:
sudo <команда>
У вас попросят ввести ваш пароль. Будьте внимательны, пароль при вводе никак не отображается, это нормально и сделано в целях безопасности, просто вводите до конца и нажимайте Enter. После ввода пароля указанная команда исполнится от имени root.
Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию). Поэтому при последующих выполнениях sudo ввод пароля может не потребоваться. Для гарантированного прекращения сессии sudo наберите в терминале
sudo -K
Кроме того, часто встречаются ошибки, связанные с каналами в Linux. При исполнении команды
sudo cat test.txt | grep text > result.txt
с правами root исполнится только cat
, поэтому файл result.txt может не записаться. Нужно либо писать sudo
перед каждой командой, либо временно переходить под суперпользователя.
Используемые источники:
- http://mindhalls.ru/sudo-no-pass-ubuntu/
- https://help.ubuntu.ru/wiki/суперпользователь_в_ubuntu