Install the package.
To use sudo, simply prefix a command and its arguments with sudo
and a space:
$ sudo cmd
For example, to use pacman:
$ sudo pacman -Syu
Sudo is an alternative to su for running commands as root. Unlike su, which launches a root shell that allows all further commands root access, sudo instead grants temporary privilege elevation to a single command. By enabling root privileges only when needed, sudo usage reduces the likelihood that a typo or a bug in an invoked command will ruin the system.
A common configuration that requires the password of the target (not what we want):
Defaults targetpw
ALL ALL=(ALL) ALL
Naively changing this simple config to:
Defaults rootpw
One working possibility would be:
Defaults rootpw
myuser ALL=(ALL) ALL
Another working possibility would be:
Defaults rootpw
%sudousers ALL=(ALL) ALL
su
usermod -a -G sudousers myuser
exit
EDIT: A clarifying example about exceptions and scope:
Defaults rootpw
myuser ALL=(ALL) ALL
%sudousers ALL=(ALL) ALL
Defaults:%sudousers !rootpw
- SSH problem without TTY
- View current settings
- Sudoers default file permissions
- Открыть терминал
- Войти в систему как суперпользователь
- Измените пароль sudo с помощью команды passwd
- Завершить сессию суперпользователя
- Альтернативный способ смены пароля
- How to change Ubuntu root password?
- How to change the Ubuntu default password using the command line?
- How to change default root password Ubuntu using GUI?
- How to reset the default ubuntu password ?
- How to reset Ubuntu’s root password from Recovery Mode
- How to switch a root user account in Ubuntu
- Sudo Users
- What are Ubuntu default login credentials?
- What is the Ubuntu Default Root Password?
- How to enable root account in Ubuntu?
- How to disable your root user account in Ubuntu?
- Advantages and Disadvantages of Ubuntu
- Conclusion
- Tips and tricks
- Disable password prompt timeout
- Add terminal bell to the password prompt
- Disable per-terminal sudo
- Reduce the number of times you have to type a password
- Disable root login
- Harden with sudo example
- Configure sudo using drop-in files in /etc/sudoers.d
- Enable password input feedback
- Colored password prompt
- Через отладочную консоль
- Проблемы с TTY через SSH
- Просмотр текущих настроек
- Права доступа к файлам sudoers по умолчанию
- При помощи LiveCD
- Советы и рекомендации
- Отключение таймаута запроса пароля
- Сигнал при запросе пароля
- Один тайм-аут на все сеансы терминала
- Время действия введённого пароля
- Отключение учетной записи root
- Еще один пример настройки
- Настройка sudo с помощью вкладываемых в /etc/sudoers.d файлов
- Используя bash в качестве init
SSH problem without TTY
This article or section is a candidate for merging with #Configuration.
Notes: please use the second argument of the template to provide more detailed indications. (Discuss in Talk:Sudo)
SSH does not allocate a tty by default when running a remote command. Without an allocated tty, sudo cannot prevent the password from being displayed. You can use ssh’s -t
option to force it to allocate a tty.
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear text. You have to run "ssh -t hostname sudo <cmd>". # #Defaults requiretty
This article or section is a candidate for merging with #Configuration.
Notes: please use the second argument of the template to provide more detailed indications. (Discuss in Talk:Sudo)
Defaults umask = 0022 Defaults umask_override
Состояние перевода: На этой странице представлен перевод статьи Reset lost root password. Дата последней синхронизации: 13 октября 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
На этой странице вы сможете узнать, как сбросить забытый пароль суперпользователя. Существуют несколько способов, которые могут вам в этом помочь.
Важно: Недобросовестный пользователь может использовать указанные здесь методы для получения доступа к вашей системе. Неважно, насколько операционная система защищена от атак и как хороши ваши пароли: имея физический доступ к компьютеру, любой сможет это сделать, если вы, конечно, не выполните шифрование хранимых данных.
Состояние перевода: На этой странице представлен перевод статьи Sudo. Дата последней синхронизации: 26 июня 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
Sudo — это альтернатива su для выполнения команд с правами суперпользователя (root). В отличие от su, который запускает оболочку с правами root и даёт всем дальнейшим командам root-права, sudo предоставляет временное повышение привилегий для одной команды. Предоставляя привилегии root только при необходимости, sudo снижает вероятность того, что опечатка или ошибка в выполняемой команде произведут в системе разрушительные действия.
Sudo может также использоваться для выполнения команд от имени других пользователей; кроме того, sudo логирует все команды и неудачные попытки доступа для аудита безопасности.
This article or section needs expansion.
Reason: Create an intro discussing Defaults
, perhaps with a table that lists common settings (Discuss in Talk:Sudo)
sudoers(5) § SUDOERS OPTIONS lists all the options that can be used with the Defaults
command in the /etc/sudoers
file.
View current settings
The configuration file for sudo is /etc/sudoers
. It should always be edited with the command. visudo locks the sudoers
file, saves edits to a temporary file, and checks it for syntax errors before copying it to /etc/sudoers
.
- It is imperative that
sudoers
be free of syntax errors! Any error makes sudo unusable. Always edit it with visudo to prevent errors. - warns that configuring visudo to honor the user environment variables for their editor of choice may be a security hole, since it allows the user with visudo privileges to run arbitrary commands as root without logging simply by setting that variable to something else.
The default editor for visudo is vi. The package is compiled with --with-env-editor
and honors the use of the SUDO_EDITOR
, VISUAL
and EDITOR
variables. EDITOR
is not used when VISUAL
is set.
To establish nano as the visudo editor for the duration of the current shell session, export EDITOR=nano
; to use a different editor just once simply set the variable before calling visudo:
# EDITOR=nano visudo
Alternatively you may edit a copy of the /etc/sudoers
file and check it using visudo -c /copy/of/sudoers
. This might come in handy in case you want to circumvent locking the file with visudo.
# Set default EDITOR to restricted version of nano, and do not allow visudo to use EDITOR/VISUAL. Defaults editor=/usr/bin/rnano, !env_editor
USER_NAME ALL=(ALL:ALL) ALL
USER_NAME HOST_NAME=(ALL:ALL) ALL
To allow members of group wheel sudo access:
%wheel ALL=(ALL:ALL) ALL
Defaults:USER_NAME !authenticate
USER_NAME HOST_NAME=/usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
USER_NAME HOST_NAME= NOPASSWD: /usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
Sudoers default file permissions
The owner and group for the sudoers
file must both be 0. The file permissions must be set to 0440. These permissions are set by default, but if you accidentally change them, they should be changed back immediately or sudo will fail.
# chown -c root:root /etc/sudoers # chmod -c 0440 /etc/sudoers
Часто при установке дистрибутива, нам не дают создать короткий и удобный пароль суперпользователя. Для администратора это конечно оправдано, но для домашнего компьютера сложный пароль не имеет смысла. Давайте рассмотрим как просто изменить пароль на удобный для нас с помощью команды passwd.
Чтобы изменить пароль sudo из командной строки, необходимо выполнить следующие действия:
Открыть терминал
Чтобы изменить пароль пользователя sudo, вы должны сначала открыть терминал в вашей системе. Для этого вы можете использовать комбинацию клавиш Ctrl + Alt + t или выбрать значок терминала из меню.

Войти в систему как суперпользователь
Пользователь root может изменить только свой собственный пароль. Поэтому войдите в систему как пользователь root. Для этого вам в терминале необходимо набрать следующею команду:
$ sudo -i

Вы вошли в систему как пользователь root, смотреть на изображении выше.
Измените пароль sudo с помощью команды passwd
Теперь, когда вы вошли в систему как пользователь root, вы можете изменить пароль учетной записи root, выполнив команду passwd следующим образом:
# passwd

После выполнения команды passwd в терминале система предлагает ввести новый пароль пользователя root. Вы вводите новый пароль и нажимаете , система снова предложит вам ввести новый пароль. Введите указанный выше пароль еще раз и нажмите . В терминале отобразится подтверждающее сообщение о том, что пароль был успешно обновлен.
Теперь можете использовать обновленный пароль для своей учетной записи во всех установках программного обеспечения и конфигурации файлов, требующих авторизации.
Завершить сессию суперпользователя
Теперь, когда вы изменили пароль root, введите следующую команду:
# exit
После выполнения указанной выше команды на терминале будет отображаться статус выхода, что означает, что вы вышли из учетной записи root.
Альтернативный способ смены пароля
Есть еще одна альтернатива для изменения пароля пользователя root. Вы используете следующую команду на терминале, с помощью которой вы входите в систему как пользователь root и вводите пароль учетной записи root. С помощью одной команды вы можете изменить таким образом пароль.
$ sudo passwd root

После выполнения указанной выше команды на терминале появится уведомление о смене пароля. Теперь введите новый пароль и нажмите . Введите вновь выбранный пароль еще раз и снова нажмите . После этого появится сообщение о том, что пароль root был успешно изменен.
В этой статье вы узнали, как изменить пароль учетной записи root с помощью терминала, надеюсь вам это поможет.
List of content you will read in this article:
How to change Ubuntu root password?
- Open the terminal by pressing Ctrl+Alt+T or searching for «Terminal» in the Ubuntu Dash.
- Type the command «sudo passwd root» and press Enter. You will be prompted to enter your current user password.
- After authenticating, you can set a new password for the root user. Make sure to choose a strong and secure password.
- Retype the new password when prompted to confirm.
- Once the password change is successful, you can exit the terminal.
How to change the Ubuntu default password using the command line?
- Launch the terminal by pressing Ctrl+Alt+T or searching for «Terminal» in the applications menu.
- To change the root password, you need administrative privileges. Execute the following command to access root privileges: sudo -i
- Once you have root privileges, enter the following command to change the root password: passwd
You will be prompted to enter a new password. Make sure to choose a strong and secure password that includes a combination of uppercase and lowercase letters, numbers, and special characters. Note that the password will not be visible as you type.
- After entering the new password, you will be prompted to confirm it. Re-enter the password carefully, ensuring it matches exactly as you intended.
- If the password change is successful, you will receive a confirmation message. Your Ubuntu system’s root password is now updated.
Remember to keep your root password confidential and avoid using easily guessable information. Regularly changing your passwords enhances the overall security of your Ubuntu system.
How to change default root password Ubuntu using GUI?
- Launch the Terminal: Open the Terminal by clicking on the Applications menu, typing «Terminal» in the search bar, and selecting the Terminal application.
- Access User Accounts: Type «sudo gnome-control-center user-accounts» command in the Terminal and press Enter. This command will open the User Accounts settings.
- Authenticate: Enter your user password when prompted to authenticate your access.
- Modify Root Account: In the User Accounts settings, select the » root » account and click the «Password» button.
- Set New Password: Enter the new password for the root account in the provided fields. Make sure to choose a strong and secure password.
- Apply Changes: Click on the «Change» or «Apply» button to save your changes to the root password.
- Confirm Changes: Close the User Accounts settings and log out of your session. To apply the new root password, you need to log back in using the updated credentials.
Remember, changing the root password in Ubuntu enhances the overall security of your system by preventing unauthorized access. Ensure you choose a unique and robust password to maintain the integrity of your Ubuntu installation.
How to reset the default ubuntu password?
Forgot your Ubuntu login password? If you haven’t used Ubuntu for a long time, and now you want to login in, and you don’t remember your password. So here is the method to reset your Ubuntu Password. You quickly get your password, and you don’t even need to reinstall it.
How to reset or change root password:
Open up the terminal!
After opening the terminal, type the command sudo space passwd space root
- [ Sudo passwd root ] & press enter
- Enter the new root password and press Enter button
- Retype root password and enter
- Password changed successfully
To verify your new password, use this command.
- su root & press Enter key
- Now Enter the new given password of your Ubuntu and press Enter Key
Now you can use your new Ubuntu Root Password. You have successfully made a new password to the Ubuntu root terminal.
How to reset Ubuntu’s root password from Recovery Mode
- Start or restart your Ubuntu system.
- When the GRUB boot menu appears, select the advanced options for Ubuntu and choose the recovery mode option. If you don’t see the GRUB boot menu, you may need to press and hold the Shift key during startup to make it appear.
- In the recovery mode menu, select the option that says «root Drop to root shell prompt.» This will drop you into a root shell with root privileges.
- Remount the file system in read/write mode by running the following command:
mount -o remount,rw /
- Next, you need to change the root password. Use the following command to set a new password:
You will be prompted to enter the new password twice. Note that when you type the password, it won’t be visible on the screen for security reasons. Press Enter once you’ve entered the new password.
- After setting the new password, you can reboot your system by running:
Remember to keep the root password secure and make sure to remember it or store it in a safe place.
How to switch a root user account in Ubuntu
Sudo Users
The first time you use Sudo, you will be prompted to enter the password. If you want to run the command with sudo without entering the password, you must edit the sudoers file.
What are Ubuntu default login credentials?
What is the Ubuntu Default Root Password?
How to enable root account in Ubuntu?
1. Open a terminal: Press `Ctrl + Alt + T` on your keyboard to open a terminal window.
sudo passwd root
4. Next, you will be asked to enter the new password for the root account. Type your desired password and press Enter. Please note that while typing the password, no characters will be displayed on the screen for security reasons.
5. Confirm the new password by typing it again and pressing Enter.
How to disable your root user account in Ubuntu?
- Open a terminal on your Ubuntu system.
- Run the following command to set a password for the root account (if you haven’t already done so): sudo passwd root
You will be prompted to enter and confirm a new password for the root account.
- Once the root password is set, run the following command to lock the root account: sudo passwd -l root
This command locks the root account, effectively disabling it.
Advantages and Disadvantages of Ubuntu
Here you can find the pros and cons of using Ubuntu leaving root logins disabled by default, includes:
- People often forget their login passwords occasionally (the root password).
- It avoids the access of «I can do anything» login by default. It will prompt for a password earlier; the changes can happen!
- Sudo adds a log access of the command(s) run (in /var/log/auth.log). In case you were in trouble, you can go to the authorities and run.
- Every cracker trying to brute-force their manner in on a server will know it has an account named root and could try that first.
- What they do not know is the usernames of your other users. Due to the fact that the root account password is locked, this attack doesn’t pose any threat at all as there may be no password to crack or guess inside the first location.
- Allows easy transfer of admin rights by adding or removing users. When you use only one Ubuntu root password, you could change the root password if you forgot.
- Sudo may be set up with a safety policy.
Automatically the authentication expires after some time (you can also set the time duration). So if you walk away or leave your desktop a few times from the terminal after running commands as root using sudo, you will not be leaving a root terminal open indefinitely.
Conclusion
You can also add special characters to your password. Add up to at least 16 characters with upper, and lowercase letters and numbers. It is how we can change the default root password.
Если у вас есть установленный sudo и настроен доступ для группы wheel
или для пользователя, чей пароль вы помните, вы можете сменить пароль root с помощью команды sudo passwd root
.
Tips and tricks
Disable password prompt timeout
A common annoyance is a long-running process that runs on a background terminal somewhere that runs with normal permissions and elevates only when needed. This leads to a sudo password prompt which goes unnoticed and times out, at which point the process dies and the work done is lost or, at best, cached. Common advice is to enable passwordless sudo, or extend the timeout of sudo remembering a password. Both of these have negative security implications. The prompt timeout can also be disabled and since that does not serve any reasonable security purpose it should be the solution here:
Defaults passwd_timeout=0
Add terminal bell to the password prompt
Defaults passprompt="[sudo] password for %p: "
Note the is a literal bell character. E.g. in vim, insert using the sequence
Ctrl+v
Ctrl+g
. If Ctrl+v
is mapped, e.g. for pasting, one can usually use Ctrl+q
instead. In nano, Alt+v
Ctrl+g
.
This article or section needs expansion.
Reason: Is it possible to preserve the localized prompt while using bell? The same question for the case when SUDO_PROMPT is used. Is there an alternative, for example by using «-B» option as default? (Discuss in Talk:Sudo)
export SUDO_PROMPT=$'\a[sudo] please enter a password: '
alias sudo='sudo '
describes how this works:
- If the replacement text ends with a space, the next word in the shell input is always eligible for purposes of alias expansions.
As well as :
- If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion.
Disable per-terminal sudo
Warning: This will let any process use your sudo session.
If you are annoyed by sudo’s defaults that require you to enter your password every time you open a new terminal, set timestamp_type
to global
:
Defaults timestamp_type=global
Reduce the number of times you have to type a password
If you are annoyed that you have to re-enter your password every 5 minutes (default), you can change this by setting a longer value for timestamp_timeout
(in minutes):
Defaults timestamp_timeout=10
If you are using a lot of sudo commands on a row, it is more logical to refresh the timeout every time you use sudo than
to increase timestamp_timeout
. Refreshing the timeout can be done with sudo -v
(whereas sudo -K
revokes immediately).
alias sudo='sudo -v; sudo '
$ sudo -E pacman -Syu
The recommended way of preserving environment variables is to append them to env_keep
:
/etc/sudoers
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
Defaults targetpw
Defaults:%wheel targetpw %wheel ALL=(ALL) ALL
Disable root login
- Be careful, you may lock yourself out by disabling root login. Sudo is not automatically installed and its default configuration allows neither passwordless root access nor root access with your own password. Ensure a user is properly configured as a sudoer before disabling the root account!
- If you have changed your sudoers file to use rootpw as default, then do not disable root login with any of the following commands!
- If you are already locked out, see Password recovery for help.
The account can be locked via passwd
:
# passwd -l root
A similar command unlocks root.
$ sudo passwd -u root
Alternatively, edit /etc/shadow
and replace the root’s encrypted password with «!»:
root:!:12345::::::
To enable root login again:
$ sudo passwd root
Tip: To get to an interactive root prompt, even after disabling the root account, use sudo -i
.
kdesu may be used under KDE to launch GUI applications with root privileges. It is possible that by default kdesu will try to use su even if the root account is disabled. Fortunately one can tell kdesu to use sudo instead of su. Create/edit the file ~/.config/kdesurc
:
[super-user-command] super-user-command=sudo
$ kwriteconfig5 --file kdesurc --group super-user-command --key super-user-command sudo
Harden with sudo example
#%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid auth required pam_unix.so account required pam_unix.so session required pam_unix.so
Limit SSH login to the ‘ssh’ group. Only «archie» will be part of this group.
# groupadd -r ssh # gpasswd -a archie ssh # echo 'AllowGroups ssh' >> /etc/ssh/sshd_config
# for g in power network ;do ;gpasswd -a archie $g ;done # for g in network power storage ;do ;gpasswd -a admin $g ;done
Set permissions on configs so devel can edit them.
# chown -R devel:root /etc/{http,openvpn,cups,zsh,vim,screenrc}
Cmnd_Alias POWER = /usr/bin/shutdown -h now, /usr/bin/halt, /usr/bin/poweroff, /usr/bin/reboot Cmnd_Alias STORAGE = /usr/bin/mount -o nosuid\,nodev\,noexec, /usr/bin/umount Cmnd_Alias SYSTEMD = /usr/bin/journalctl, /usr/bin/systemctl Cmnd_Alias KILL = /usr/bin/kill, /usr/bin/killall Cmnd_Alias PKGMAN = /usr/bin/pacman Cmnd_Alias NETWORK = /usr/bin/netctl Cmnd_Alias FIREWALL = /usr/bin/iptables, /usr/bin/ip6tables Cmnd_Alias SHELL = /usr/bin/zsh, /usr/bin/bash %power ALL = (root) NOPASSWD: POWER %network ALL = (root) NETWORK %storage ALL = (root) STORAGE root ALL = (ALL) ALL admin ALL = (root) SYSTEMD, KILL, FIREWALL devel ALL = (root) PKGMAN archie ALL = (devel) SHELL, (admin) SHELL
«archie» can connect to their home WiFi.
$ sudo netctl start home $ sudo poweroff
$ sudo -u admin -- netctl start home
$ sudo -i -u devel $ sudo -i -u admin
$ sudo -i -u root
$ sudo -i -u admin [admin]$ chown admin:tty `echo $TTY` [admin]$ screen
Configure sudo using drop-in files in /etc/sudoers.d
sudo parses files contained in the directory /etc/sudoers.d/
. This means that instead of editing /etc/sudoers
, you can change settings in standalone files and drop them in that directory. This has two advantages:
- There is no need to edit a
sudoers.pacnew
file; - If there is a problem with a new entry, you can remove the offending file instead of editing
/etc/sudoers
(but see the warning below).
The format for entries in these drop-in files is the same as for /etc/sudoers
itself. To edit them directly, use visudo -f /etc/sudoers.d/somefile
. See sudoers(5) § Including other files from within sudoers for details.
The files in /etc/sudoers.d/
directory are parsed in lexicographical order, file names containing .
or ~
are skipped. To avoid sorting problems, the file names should begin with two digits, e.g. 01_foo
.
Note: The order of entries in the drop-in files is important: make sure that the statements do not override themselves.
Warning: The files in /etc/sudoers.d/
are just as fragile as /etc/sudoers
itself: any improperly formatted file will prevent sudo
from working. Hence, for the same reason it is strongly advised to use visudo
To edit a file, set SUDO_EDITOR
to the name of the editor and pass the file name to sudoedit
. For example:
$ SUDO_EDITOR=vim sudoedit /etc/file
See #Using visudo and for ways to set the editor, but beware of possible security issues.
If multiple names are passed to sudo
, all files are opened in the editor in a single invocation. A feature useful for merging files:
$ SUDO_EDITOR=vimdiff sudoedit /etc/file /etc/file.pacnew
/etc/sudoers
Defaults insults
Upon entering an incorrect password this will replace Sorry, try again.
message with humorous insults.
Enable password input feedback
By default, there is no visual feedback when you input a password. That is done on purpose for extra security. However, if you wish to have visual input, you can enable it by adding this line:
/etc/sudoers
Defaults pwfeedback
Colored password prompt
To customize the password prompt with colors and/or bold fonts, set the SUDO_PROMPT
environment variable in your shell initialization file and use .
For example, to set the password prompt to display Password:
in bold red, use this:
export SUDO_PROMPT="$(tput setaf 1 bold)Password:$(tput sgr0) "
Or use different colors with the default message like so:
export SUDO_PROMPT="$(tput setab 1 setaf 7 bold)[sudo]$(tput sgr0) $(tput setaf 6)password for$(tput sgr0) $(tput setaf 5)%p$(tput sgr0): "
Через отладочную консоль
- Добавьте параметр ядра
systemd.debug_shell
. - Система загрузится как обычно, но запустит службу
debug-shell.service
, которая запустит командный интерпретатор (/bin/sh
) на консолиtty9
. НажмитеCtrl+Alt+F9
чтобы перейти в неё. - Используйте команду passwd для установки нового пароля суперпользователя.
- После завершения остановите
debug-shell.service
.
Проблемы с TTY через SSH
По умолчанию SSH не выделяет tty при выполнении удалённой команды. Без tty sudo не может отключить отображение пароля при его вводе. Вы можете воспользоваться ssh опцией -t
, чтобы заставить его выделять tty.
Defaults
опция requiretty
всего лишь позволяет запускать sudo пользователям, если они имеют tty.
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear text. You have to run "ssh -t hostname sudo <cmd>". # #Defaults requiretty
Sudo накладывает на значение umask пользователя свою собственную (которая по умолчанию установлена в 0022). Это предотвращает sudo от создания файлов с более либеральными правами доступа, чем это позволяет umask пользователя. Несмотря на то, что это разумное значение по умолчанию, если не используется измененная umask, это может привести к ситуации, когда программа, запущенная через sudo может создавать файлы с правами доступа отличными от тех, которые создаются при запуске программы непосредственно суперпользователем. Для исправления таких ошибок sudo предоставляет возможность исправить umask, даже если желаемая umask более либеральна, чем установлено в umask пользователя. Добавив такие строки (используйте visudo
) вы измените поведение sudo по умолчанию:
Defaults umask = 0022 Defaults umask_override
Это установит sudo umask в umask суперпользователя по умолчанию (0022) и переопределит поведение по умолчанию, всегда используя указанную umask и независимо от umask пользователя.
Чтобы начать использовать sudo
как непривилегированный пользователь, его нужно настроить должным образом. Для этого прочтите раздел о настройке.
Для использования sudo просто добавьте sudo
и пробел перед нужной командой:
$ sudo команда
Например, для использования pacman:
$ sudo pacman -Syu
Смотрите для более подробной информации.
sudoers(5) § SUDOERS OPTIONS содержит список опций, которые можно использовать с командой Defaults
в файле /etc/sudoers
.
Здесь доступен список опций (извлечён из исходного кода версии 1.8.7) в формате, удобном для копирования и вставки в файл sudoers
.
Смотрите для более подробной информации, например о настройке таймаутов.
Просмотр текущих настроек
Выполните sudo -ll
для вывода текущей конфигурации sudo.
Чтобы посмотреть настройки, действующие для конкретного пользователя, выполните sudo -lU пользователь
.
Файл настроек /etc/sudoers
всегда следует редактировать с помощью команды . visudo блокирует файл sudoers
, сохраняет изменения во временный файл и проверяет, что файл синтаксически корректен, перед тем как скопировать его в /etc/sudoers
.
- Крайне важно, чтобы файл
sudoers
был без синтаксических ошибок! Любая ошибка делает sudo неработоспособным. Всегда редактируйте его только с помощью visudo для предотвращения ошибок. - Из : Обратите внимание, что это дыра в безопасности, поскольку позволяет пользователю запускать любую программу, какую он захочет, просто прописав её в VISUAL или EDITOR.
visudo использует vi в качестве текстового редактора по умолчанию. Пакет скомпилирован с опцией --with-env-editor
по умолчанию и использует переменные VISUAL
и EDITOR
. EDITOR
не используется, если задана переменная VISUAL
.
Чтобы выбрать nano в качестве редактора для visudo в текущем сеансе, задайте и экспортируйте переменную EDITOR
перед запуском visudo. Чтобы выбрать другой редактор однократно, можно просто прописать эту переменную перед командой visudo:
# EDITOR=nano visudo
В качестве альтернативы можно отредактировать копию файла /etc/sudoers
и вручную запустить проверку синтаксиса с помощью команды visudo -c /копия/файла/sudoers
. Это может пригодиться, если вас не устраивает, что visudo блокирует файл.
Для изменения редактора на постоянной основе для текущего пользователя, смотрите раздел Переменные окружения#На уровне пользователя. Для того, чтобы установить выбранный редактор на постоянной основе для всей системы, но только для visudo, добавьте следующее в /etc/sudoers
(предположим, что вы предпочитаете nano в качестве редактора):
# Сброс окружения Defaults env_reset # Установка ограниченного варианта nano в качестве редактора по умолчанию и запрет visudo использовать EDITOR/VISUAL. Defaults editor=/usr/bin/rnano, !env_editor
Настройка sudo осуществляется добавлением записей в файл /etc/sudoers
. Чтобы дать пользователю привилегии суперпользователя, когда он вводит sudo
перед командой, добавьте следующую строку:
имя_пользователя ALL=(ALL:ALL) ALL
Разрешить пользователю выполнять все команды от любого пользователя, но только на машине с определенным названием хоста:
имя_пользователя название_хоста=(ALL:ALL) ALL
Предоставить членам группы wheel доступ к sudo:
%wheel ALL=(ALL:ALL) ALL
Совет: Для добавления новых администраторов рекомендуется включить доступ к sudo для группы wheel
и добавлять новых пользователей в неё, поскольку по умолчанию Polkit рассматривает членов группы wheel
как администраторов. Если пользователь не является членом группы wheel
, программы, использующие Polkit, могут запросить аутентификацию с использованием пароля root вместо пароля пользователя.
Чтобы не спрашивать пароль у пользователя:
Важно: Это позволит любому процессу, запущенному под вашим именем пользователя, использовать sudo, не спрашивая разрешения.
Defaults:имя_пользователя !authenticate
Разрешить выполнять только конкретные команды и только пользователю на определенном хосте:
имя_пользователя название_хоста=/usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
Примечание: Наиболее общие опции должны идти в начале файла, а наиболее частные — наоборот, в конце файла, так как более нижние строки переопределяют более верхние. В частности, добавляемая строка должна быть после строки %wheel
, если ваш пользователь находится в этой группе.
Разрешить выполнять конкретно определённые команды только для пользователя на определенном хосте и без пароля:
имя_пользователя название_хоста= NOPASSWD: /usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
Права доступа к файлам sudoers по умолчанию
Файл sudoers
должен иметь владельца root и группу root (0). Права доступа всегда должны быть установлены как r--r-----
(0440). Эти права установлены по умолчанию, однако если вы случайно измените их, они должны быть немедленно изменены обратно, иначе sudo не будет работать.
# chown -c root:root /etc/sudoers # chmod -c 0440 /etc/sudoers
Установите пакет .
При помощи LiveCD
- Загрузитесь с LiveCD и смонтируйте корневой раздел вашей основной системы.
- Используйте команду
passwd --root ТОЧКА_МОНТИРОВАНИЯ ИМЯ_ПОЛЬЗОВАТЕЛЯ
для установки нового пароля (старый пароль запрошен не будет). - Размонтируйте корневой раздел.
- Перезагрузитесь и введите новый пароль.
Советы и рекомендации
Отключение таймаута запроса пароля
Часто раздражает такая вещь: вы запускаете какой-то долгий процесс, который работает с обычными правами и повышает их только при необходимости, и когда sudo запросит пароль, вы можете случайно не заметить это и не ввести его вовремя, из-за чего случается таймаут, процесс умирает и проделанная работа теряется или, если повезёт, кэшируется. Обычно советуют отключить запрос пароля для sudo или увеличить время действия ранее введённого пароля, однако оба этих способа имеют негативные последствия для безопасности. Таймаут запроса пароля тоже можно отключить, и поскольку это никак не влияет на безопасность, это и должно быть предпочтительным решением:
Defaults passwd_timeout=0
Сигнал при запросе пароля
Чтобы работающий в фоне терминал привлёк ваше внимание в момент запроса пароля, можно добавить символ BELL в строку запроса пароля:
Defaults passprompt="^G[sudo] password for %p: "
Вместо ^G
должен быть вписан настоящий символ BELL. Например, чтобы ввести его в vim, используйте сочетание Ctrl+v
Ctrl+g
, а в nano используйте Alt+v
Ctrl+g
.
Если у вас установлено много псевдонимов, вы могли заметить, что они не переносятся в сеанс sudo. Однако, это легко исправить. Просто добавьте в ваш ~/.bashrc
или /etc/bash.bashrc
строку:
alias sudo='sudo '
Один тайм-аут на все сеансы терминала
Важно: Это позволит любому процессу воспользоваться вашим открытым сеансом sudo.
По умолчанию сеанс sudo действует только в пределах текущего терминала; при запуске sudo в новом терминале он запросит пароль заново. Если вас это раздражает, укажите для опции timestamp_type
значение global
:
Defaults timestamp_type=global
Время действия введённого пароля
Возможно, вы захотите изменить промежуток времени, в течение которого sudo действует без ввода пароля. Этого легко добиться добавив опцию timestamp_timeout
в /etc/sudoers
(по умолчанию 5 минут):
Defaults timestamp_timeout=10
Если вы запускаете много sudo-команд подряд, возможно, вместо увеличения timestamp_timeout
лучше просто периодически обновлять временную метку. Команда sudo -v
запустит отсчёт таймаута заново. С помощью команды sudo -K
можно удалить временную метку, что приведёт к запросу пароля при следующем запуске sudo.
Обновление временной метки можно автоматизировать с помощью такого псевдонима (добавьте его в .bashrc
):
alias sudo='sudo -v; sudo '
Также можно сделать bash-функцию: подробнее на stackexchange.
$ sudo -E pacman -Syu
Рекомендованный способ сохранения переменных окружения — это прописать их в env_keep
:
/etc/sudoers
Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"
Вы можете сконфигурировать sudo так, чтобы он спрашивал пароль суперпользователя вместо пароля текущего пользователя, добавив targetpw
(целевой пользователь, по умолчанию root) или rootpw
в список опций Defaults в /etc/sudoers
:
Defaults targetpw
Чтобы не понадобилось разглашать пароль root обычным пользователям, можно указать эту опцию только для определённой группы:
Defaults:%wheel targetpw %wheel ALL=(ALL) ALL
Отключение учетной записи root
Вы можете захотеть отключить возможность входа систему пользователя root. Без этого атакующие сначала должны будут угадать имя пользователя, сконфигурированного как sudoer, а также пароль этого пользователя. Смотрите для примера Secure Shell (Русский)#Отключение.
- Будьте осторожны. Вы можете попасть в свою ловушку, если отключите вход систему пользователя root. Sudo по умолчанию не установлен, и его стандартная конфигурация не позволяет ни получить доступ к правам root без пароля, ни дать такой доступ вам по вашему собственному паролю. Убедитесь, что пользователь правильно сконфигурирован как sudoer перед отключением аккаунта суперпользователя!
- Если файл sudoers настроен на использование rootpw по умолчанию, то не отключайте root-вход ни одной из следующих команд!
- Если вы уже попали в ловушку, смотрите статью Сброс пароля root для получения помощи.
Можно заблокировать аккаунт с помощью passwd
:
# passwd -l root
Похожая команда снимает блокировку:
$ sudo passwd -u root
Также вы можете отредактировать /etc/shadow
и заменить зашифрованный пароль root на «!»:
root:!:12345::::::
Тогда, чтобы задать новый пароль и тем самым разблокировать пользователя root:
$ sudo passwd root
Совет: Чтобы попасть в командную оболочку root даже после отключения аккаунта, используйте команду sudo -i
.
kdesu можно использовать в KDE для запуска графических программ с привилегиями суперпользователя. Вероятно, что kdesu по умолчанию будет пытаться использовать su, даже если аккаунт root отключен. К счастью, можно сказать kdesu использовать sudo вместо su. Создайте/отредактируйте файл ~/.config/kdesurc
:
[super-user-command] super-user-command=sudo
или используйте следующую команду:
$ kwriteconfig5 --file kdesurc --group super-user-command --key super-user-command sudo
Еще один пример настройки
Отредактировать /etc/pam.d/su
и /etc/pam.d/su-1
.
Потребовать, чтобы пользователь был в группе wheel, но никого в неё не добавлять.
#%PAM-1.0 auth sufficient pam_rootok.so # Uncomment the following line to implicitly trust users in the "wheel" group. #auth sufficient pam_wheel.so trust use_uid # Uncomment the following line to require a user to be in the "wheel" group. auth required pam_wheel.so use_uid auth required pam_unix.so account required pam_unix.so session required pam_unix.so
Разрешить вход по SSH только для группы ‘ssh’. В эту группу будет входить только «joe».
# groupadd -r ssh # gpasswd -a joe ssh # echo 'AllowGroups ssh' >> /etc/ssh/sshd_config
Перезапустите службу sshd.service
.
Добавить пользователей в другие группы.
# for g in power network ;do ;gpasswd -a joe $g ;done # for g in network power storage ;do ;gpasswd -a admin $g ;done
Установить права на настройки так, чтобы devel мог редактировать их.
# chown -R devel:root /etc/{http,openvpn,cups,zsh,vim,screenrc}
Cmnd_Alias POWER = /usr/bin/shutdown -h now, /usr/bin/halt, /usr/bin/poweroff, /usr/bin/reboot Cmnd_Alias STORAGE = /usr/bin/mount -o nosuid\,nodev\,noexec, /usr/bin/umount Cmnd_Alias SYSTEMD = /usr/bin/journalctl, /usr/bin/systemctl Cmnd_Alias KILL = /usr/bin/kill, /usr/bin/killall Cmnd_Alias PKGMAN = /usr/bin/pacman Cmnd_Alias NETWORK = /usr/bin/netctl Cmnd_Alias FIREWALL = /usr/bin/iptables, /usr/bin/ip6tables Cmnd_Alias SHELL = /usr/bin/zsh, /usr/bin/bash %power ALL = (root) NOPASSWD: POWER %network ALL = (root) NETWORK %storage ALL = (root) STORAGE root ALL = (ALL) ALL admin ALL = (root) SYSTEMD, KILL, FIREWALL devel ALL = (root) PKGMAN joe ALL = (devel) SHELL, (admin) SHELL
С такими настройками вам практически никогда не понадобится входить как суперпользователь.
«joe» может подсоединиться к своему домашнему WiFi.
$ sudo netctl start home $ sudo poweroff
«joe» не может использовать netctl от имени другого пользователя.
$ sudo -u admin -- netctl start home
Когда «joe» хочет воспользоваться journalctl или убить зависший процесс, он может переключиться на нужного пользователя:
$ sudo -i -u devel $ sudo -i -u admin
Но «joe» не может переключиться на суперпользователя.
$ sudo -i -u root
$ sudo -i -u admin [admin]$ chown admin:tty `echo $TTY` [admin]$ screen
Настройка sudo с помощью вкладываемых в /etc/sudoers.d файлов
sudo обрабатывает файлы, содержащиеся в директории /etc/sudoers.d/
. Это означает, что вместо того, чтобы редактировать /etc/sudoers
, вы можете менять настройки в отдельных файлах и перемещать их в эту директорию. Это даёт два преимущества:
- Вам не понадобится редактировать файл
sudoers.pacnew
; - Если с новой записью будет проблема, вы можете просто удалить соответствующий файл вместо необходимости редактировать
/etc/sudoers
(но смотрите предупреждение ниже).
Формат записей в этих вкладываемых файлах такой же, как и в самом файле /etc/sudoers
. Чтобы редактировать их напрямую, используйте visudo -f /etc/sudoers.d/файл
. Смотрите sudoers(5) § Including other files from within sudoers для дополнительной информации.
Файлы из каталога /etc/sudoers.d/
обрабатываются в лексикографическом порядке; файлы, содержащие .
или ~
в имени, пропускаются. Чтобы избежать путаницы с сортировкой, рекомендуется начинать имена файлов с двух цифр, например 01_foo
.
Примечание: Порядок настроек в файлах имеет значение: убедитесь, что правила не переопределяют сами себя.
Важно: Файлы в /etc/sudoers.d/
так же хрупки, как и сам /etc/sudoers
: любой некорректный файл сделает sudo
неработоспособным. Поэтому по той же причине настоятельно рекомендуется использовать visudo
sudo -e
или sudoedit
позволяет редактировать файл от имени другого пользователя, но при этом запускать текстовый редактор от имени вашего пользователя.
Это полезно для редактирования файлов от имени root без предоставления повышенных привилегий вашему текстовому редактору. Подробнее об этом читайте в .
В качестве редактора можно использовать любую программу, поэтому, например, можно использовать для управления файлами pacnew:
$ SUDO_EDITOR=meld sudo -e /etc/файл{,.pacnew}
Вы можете сконфигурировать sudo так, чтобы при вводе неверного пароля он выводил шутливые оскорбления вместо стандартного сообщения «Sorry, try again». Найдите строку Defaults
в /etc/sudoers
и добавьте insults
в список опции, разделяя их запятыми. Конечный результат может выглядеть так:
/etc/sudoers
Defaults insults
Для проверки, введите sudo -K
, чтобы завершить текущий сеанс и позволить sudo заново запросить пароль.
Используя bash в качестве init
- Добавьте параметр ядра
init=/bin/bash
в настройках вашего загрузчика. - Сейчас ваша корневая файловая система смонтирована только для чтения, поэтому перемонтируйте ее на чтение-запись командой
mount -n -o remount,rw /
. - Используйте команду passwd для установки нового пароля суперпользователя.
- Перезагрузитесь с помощью команды
reboot -f
и не забудьте свой пароль снова!
Примечание: Некоторые клавиатуры не распознаются должным образом при загрузке bash из GRUB, и вы не сможете ничего ввести в консоли. В этом случае вам остается лишь использовать другой способ.