- Как отключить запрос пароля в команде sudo в Linux
- How to run sudo command with no password?
- 6 Answers 6
- Команда sudo без пароля Linux
- Команда sudo без пароля в Linux
- Как отключить пароль для команды Sudo
- Команда Sudo в Linux без пароля
- sudo без пароля
- Убираем запрос пароля sudo
- Управление правами пользователя
Как отключить запрос пароля в команде sudo в Linux
Не так давно мы разбирали, в чем разница между командами su и sudo . Если вы предпочитаете вторую команду — сегодняшняя статья для вас.
Как известно, команда sudo запрашивает пароль для своей успешной работы. Это логично, так как работа с правами пользователя root требует ответственности. Но, если вы считаете, что пароль вам только мешает — выход есть.
Прежде, чем перейти непосредственно к теме статьи, я хотел бы сделать предупреждение. Отключение пароля в sudo подходит далеко не всем. Новичкам лучше оставить пароль. Кроме того, я не рекомендую убирать этот пароль на серверах и важных рабочих станциях. Но, если Вы — опытный пользователь, а этот компьютер с Linux это Ваш личный компьютер, то воля Ваша…
Настройки sudo хранятся в файле /etc/sudoers, но открывать его обычным способом я не рекомендую. Вместо этого лучше использовать команду
В чём разница? Команда visudo проверяет синтаксис файла /etc/sudoers перед сохранением, что позволяет избежать ситуаций, когда вы сами себя лишили прав администратора и не можете их вернуть. В большинстве дистрибутивов visudo откроет /etc/sudoers через редактор vi, а вот в Ubuntu по умолчанию используется nano.
Найдите в открывшемся файле нужного пользователя или добавьте нового. Строка должна иметь следующий вид:
[имя_пользователя] ALL=(ALL:ALL) NOPASSWD: ALL
Подобное можно сотворить и с группой. В этом случае строка будет иметь вид:
%[имя_группы] ALL=(ALL:ALL) NOPASSWD: ALL
На самом деле, количество «ALL» в строке опционально и не всегда будет именно таким, как в примере выше. Но это отдельный разговор о синтаксисе файла /etc/sudoers.
Приведем пример. Как видно из скриншота ниже, пользователи, входящие в группу sudo могут использовать одноимённую команду (если учётка или группа, в которую входит учётка, не прописаны в /etc/sudoers, это вызовет ошибку, которую мы подробно разбирали здесь).
Откорректируем строчку, чтобы получилось так:
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
Теперь у всех, кто входит в эту группу, не будет спрашиваться пароль при выполнении команд через sudo .
Но это ещё не всё. Возможно, что нам не нужно убирать пароль для выполнения всех команд через sudo . Бывает удобно облегчить выполнение некоторых рутинных действий, но оставить пароль для всех остальных. К счастью, файл /etc/sudoers это дозволяет.
В общем виде для пользователей строка будет выглядеть так:
[имя_пользователя] ALL=(ALL:ALL) PASSWD: ALL, NOPASSWD: [команда_1], [команда_2] … [команда_n]
%[имя_группы] ALL=(ALL:ALL) PASSWD: ALL, NOPASSWD: [команда_1], [команда_2] … [команда_n]
Продолжим наш пример с группой sudo. Предположим, что Вы — любитель устанавливать и удалять приложения через Центр приложений. Но это требует прав администратора.
Конечно, можно запустить Центр приложений из терминала через sudo:
но и тут придётся ввести пароль. Альтернатива — отмена ввода пароля для отдельной команды:
%sudo ALL=(ALL:ALL) PASSWD: ALL, NOPASSWD: /bin/gnome-software
Обратите внимание, что надо указывать полный путь к файлу команды. Файлы разделяются запятыми. Параметр PASSWD применяется в sudo по умолчанию, но, поскольку мы прописали NOPASSWD, нам пришлось прописать и PASSWD. Если этого не сделать, пользователю или группе пользователей будет дозволено выполнять только команды, перечисленные после NOPASSWD, а все остальные станут недоступны.
How to run sudo command with no password?
How does the ubuntu user on the AWS images for Ubuntu Server 12.04 have passwordless sudo for all commands when there is no configuration for it in /etc/sudoers ? I’m using Ubuntu server 12.04 on Amazon. I want to add a new user that has the same behavior as the default Ubuntu user. Specifically I want passwordless sudo for this new user. So I’ve added a new user and went to edit /etc/sudoers (using visudo of course). From reading that file it seemed like the default ubuntu user was getting it’s passwordless sudo from being a member of the admin group. So I added my new user to that. Which didn’t work. Then I tried adding the NOPASSWD directive to sudoers . Which also didn’t work. Anyway, now I’m just curious. How does the ubuntu user get passwordless privileges if they aren’t defined in /etc/sudoers . What is the mechanism that allows this?
6 Answers 6
Okay, I have discovered the answer so may as well put it here for completeness. At the end of /etc/sudoers there is what I thought was just a comment:
However this actually includes the contents of that directory. Inside of which is the file /etc/sudoers.d/90-cloudimg-ubuntu . Which has the expected contents
# ubuntu user is default user in cloud-images. # It needs passwordless sudo functionality. ubuntu ALL=(ALL) NOPASSWD:ALL
So that is where the sudo configuration for the default ubuntu user lives.
You should edit this file using visudo. The following command will let you edit the correct file with visudo.
sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu
aychedee ALL=(ALL) NOPASSWD:ALL
In later versions (14.04 for example) the included file is /etc/sudoers.d/90-cloud-init-users (so to edit.. sudo visudo -f /etc/sudoers.d/90-cloud-init-users ). Although it’d be cleaner to create additional files than editing the generated one. Note that files containing a . or ending in ~ will not be included.
@Phil_1984_ Most likely, it was added as a comment to allow compatibility with other (standard?) versions of sudo, which don’t allow includes, but wouldn’t be tripped up by a weird comment. (Standards are hard! 😉
I found that the most straight forward thing to do, in order to easily replicate this behavior across multiple servers, was the following:
# Members of the admin group may gain root privileges %admin ALL=(ALL) ALL
# Members of the admin group may gain root privileges %admin ALL=(ALL) NOPASSWD:ALL
And move it under this line:
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
# This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) NOPASSWD:ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d
then for every user that needs sudo access WITH a password:
and for every user that needs sudo access WITH NO password:
(on older versions of ubuntu, you may need to):
sudo service sudo restart
Edit: You may have to add the admin group as I don’t think it exists by default.
You can also add the default AWS ubuntu user to the admin group via this command:
sudo usermod ubuntu -g admin
Note: As @hata mentioned, you may need to use adm as your admin group name, depending on which version of Ubuntu is being used.
Команда sudo без пароля Linux
Утилита sudo — позволяет выполнять команды с правами суперпользователя обычному пользователю. Для защиты программа каждый раз спрашивает пароль. Это вполне оправданно, так как с помощью пароля система может проверить, что это действительно пользователь, а не программа, которая просто хочет что-то нашкодить в системе, а также убедится что это именно тот пользователь за которого он себя выдает.
Но пароль можно отключить. Я не рекомендую этого делать, но способ есть и в этой статье мы рассмотрим как пользоваться sudo без пароля в Ubuntu.
Команда sudo без пароля в Linux
Чтобы отключить пароль sudo, надо добавить к строчке настройки пользователя или группы директиву NOPASSWD. Синтаксис такой:
имя_пользователя ALL=(ALL) NOPASSWD: ALL
Для того чтобы отключить пароль sudo для определенного пользователя нужно открыть файл конфигурации sudo и отключить запрос пароля следующей строчкой, например для пользователя losst:
losst ALL=(ALL) NOPASSWD: ALL
Сохраните изменения и закройте файл, на всякий случай напомню что в vi для перехода в режим вставки используется клавиша i, для сохранения команда :w и команда :q для выхода. Теперь sudo не будет запрашивать пароль у выбранного пользователя при выполнении любых команд.
Для того чтобы разрешить пользователю выполнять только некоторые команды без пароля (например apt и reboot) добавьте следующую строчку:
losst ALL=(ALL) NOPASSWD: /usr/bin/apt, /sbin/reboot
Чтобы отключить пароль для группы пользователей используйте следующий код:
%имя_группы ALL=(ALL) NOPASSWD: ALL
Теперь у пользователей группы имя_группы утилита sudo не будет спрашивать пароль, а у всех остальных будет. Чтобы более детально ознакомится с возможностями sudo смотрите статью про настройку sudo в Linux.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Как отключить пароль для команды Sudo
Утилита под названием Sudo дает возможность обычному пользователю управлять программа с правами суперпользователя. Чтобы не допустить стороннего пользователя, каждый раз во время работы утилита запрашивает пароль. Это важная мера предосторожности, так как система важно убедиться в том, что доступ запрашивает именно пользователь, а не программа, пытающаяся навредить системе. По разным причинам может потребоваться отключение пароля. Этого лучше не делать, но если вам это действительно нужно, следующая инструкция для вас.
Команда Sudo в Linux без пароля
Для отключения пароля Sudo необходимо всего лишь добавить к строчке настройки пользователя или группы директиву NOPASSWD.
Эта команда выглядит следующим образом:
имя_пользователя ALL=(ALL) NOPASSWD: ALL
Откройте файл конфигурации Sudo и отключите пароль для конкретного пользователя, внеся следующие изменения. Рассмотрим эти действия на примере пользователя linux90:
Дальше сохраните внесенные изменения и закройте файл. Для справки: в vi для перехода в режим вставки используется клавиша i, для сохранения команда :w и команда :q для выхода. Если сделать все правильно, как было описано выше, то sudo не будет запрашивать пароль у выбранного пользователя при выполнении любых команд.
Если вы пожелаете, чтобы у пользователя осталась возможность выполнять только некоторые команды без пароля (apt и reboot) внесите такие изменения:
linux90 ALL=(ALL) NOPASSWD: /usr/bin/apt, /sbin/reboot
Чтобы отключить пароль для группы пользователей используйте следующий код:
Сохраните изменения и закройте файл. Теперь пользователь linux90 сможет выполнять команды usr/bin/apt, /sbin/reboot без пароля, точно также, как и пользователи указанной в конфигурации группы.
sudo без пароля
Мне как системному администратору часто приходится запускать команды требующие повышенных прав. Поэтому sudo без пароля это то что доктор прописал. Способ который мы тут рассмотрим позволяет не только убрать запрос пароля sudo, но и ограничивать права пользователей на выполнение определенных действий.
Убираем запрос пароля sudo
Создаем по указанному пути файл с именем пользователя
sudo nano /etc/sudoers.d/vasya
где vasya — имя пользователя (логин входа в систему)
Записываем в файл строчку
Назначаем права доступа на файл
chmod 644 /etc/sudoers.d/vasya
Готово, теперь можете выйти из системы и снова войти, пароль sudo больше просить не будет.
Управление правами пользователя
Использование sudo позволяет грамотно разграничивать права доступа пользователя. Если нужен доступ к одному сервису, нет необходимости давать права root пользователю.
Давайте представим что нам необходимо дать пользователю petya права на выключение сервера. Для этого требуются права администратора.
Создадим файл с именем пользователя
sudo nano /etc/sudoers.d/petya
Добавим в него строку
petya ALL=NOPASSWD: /sbin/shutdown -h now
После перечисленных действий пользователь petya имеет права sudo на выключение системы без ввода пароля.
Данный метод хорош тем что вы четко указываете пользователю на что именно он будет иметь высокие привилегии. Ибо давать всем права root плохая идея. В одном файле перечисляются все необходимые права через запятую.
Давайте разрешим пользователю выключение системы, а также установку обновлений в системе на основе Debian (Ubuntu например). Файл с правами пользователя petya будет иметь следующий вид:
petya ALL=NOPASSWD: /sbin/shutdown -h now, /usr/bin/apt-get update, /usr/bin/apt-get upgrade
Таким образом можно легко манипулировать правами для пользователей, добавлять и удалять их в файле с именем пользователя. Либо вообще удалить файл если требуется полный запрет прав.
Тем же методом можно дать права группе. Например дадим права группе users
%users ALL=NOPASSWD: /sbin/shutdown -h now, /usr/bin/apt-get update, /usr/bin/apt-get upgrade
%users — вначале идет знак % далее название группы, в данном случае users
Почитать про то как использовать sudo без терминала можно тут
Всем спасибо за внимание и до новых встреч.