- Команда sudo в Linux
- Синтаксис sudo
- Опции sudo
- Примеры использования sudo
- 1. Запуск программы
- 2. Переменные окружения
- 3. Авторизация от имени другого пользователя
- 4. Командный интерпретатор
- 5. Редактирование файлов
- 6. Запуск в фоне
- 7. Просмотр полномочий
- Выводы
- sudo command in Linux with Examples
- The syntax for `sudo` command:
- Options Available in the `sudo` command
- The output of few commands
- Environment Variables
- Frequently asked Questions about `sudo` command
- 1) What is `sudo` in Linux?
- 2) Which Linux commands need `sudo` privileges?
- 3) What can I run with sudo?
- 4) What is difference between su and sudo command in Linux?
- 5) How do I give and take user sudo access in Linux?
Команда sudo в Linux
Если вы новый пользователь Linux, то, наверное, уже заметили, что здесь почти для всех серьёзных настроек или операций с системой нужны права суперпользователя. Пользователям Windows такой подход тоже должен быть знаком, когда вы устанавливаете программы или меняете системные настройки, операционная система просит подтвердить выполнение программы от имени администратора.
В Linux такой возможности нет, но зато есть команда sudo, которая позволяет вам запускать программы от имени других пользователей, а также от имени суперпользователя. На сайте уже есть несколько материалов про работу с ней, но нет подробной статьи про опции самой команды и её синтаксис. Эта тема и будет раскрыта сейчас. Дальше мы рассмотрим, что представляет из себя команда sudo Linux, но начнем с её синтаксиса.
Синтаксис sudo
Синтаксис команды очень прост:
$ sudo опции программа параметры
Так вы можете выполнить абсолютно любую команду Linux. Достаточно написать перед ней команду sudo. По умолчанию sudo запускает переданную ей команду от имени суперпользователя. Если вы хотите добавить какие-либо настройки или использовать другого пользователя, нужно указывать опции.
Опции sudo
- -A или —askpass — по умолчанию sudo спрашивает пароль пользователя в терминале. Если задана эта опция, утилита попробует использовать графическую утилиту для запроса пароля.
- -b или —background — запускает переданную программу в фоновом режиме;
- -C или —close-from — опции нужно передать число больше трёх. Она позволяет закрыть для программы все файловые дескрипторы, кроме стандартного ввода и вывода;
- -E или —preserve-env — позволяет передать переменные окружения текущего пользователя выполняемой программе. Также можно передать этой опции список переменных, которые нужно разрешить;
- -e или —edit — позволяет редактировать файл вместо запуска команды. Файл копируется во временный каталог, редактируется с помощью редактора, установленного в системе по умолчанию, и если были изменения, записывается обратно с теми самыми правами;
- -g — запустить команду с указанной группой вместо группы пользователя, от имени которого запускается программа;
- -h — выполнить команду от имени другого хоста;
- -H или —set-home — установить домашний каталог;
- -i или —login — позволяет авторизоваться в консоли от имени другого пользователя. Будет выбран его домашний каталог, а также загружены все переменные окружения;
- -k — по умолчанию, sudo сохраняет пароль и некоторое время после выполнения команды, вы можете выполнить ещё раз, без ввода пароля. Эта опция отключает такую возможность;
- -l или —list — позволяет вывести список доступных команд для удалённых пользователей;
- -n или —non-interactive — не интерактивный режим, если будет необходимо ввести пароль, программа выдаст ошибку;
- -p или —prompt — использовать своё приглашение для ввода пароля;
- -r или —role — выполнить программу с контекстом SELinux, у которого есть указанная роль;
- -S — использовать стандартный поток ошибок для запроса пароля;
- -s или —shell — позволяет запустить указанный командный интерпретатор;
- -U или —User — вместе с опцией -l позволяет посмотреть привилегии для пользователя;
- -T или —timeout — позволяет установить время выполнения команды, если время истечёт раньше, чем завершится команда, то она будет завершена принудительно;
- -u — позволяет указать, от имени какого пользователя нужно выполнять программу;
- -V — выводит версию утилиты;
- — — означает, что следующие опции обрабатывать не нужно.
Это основные опции, которые вы можете использовать. А теперь давайте перейдём к примерам использования команды.
Примеры использования sudo
1. Запуск программы
Самый частый пример использования sudo — выполнение программы от имени суперпользователя. Для этого достаточно написать sudo перед именем программы:
Если вы хотите выполнить программу не от имени root, а от имени другого пользователя, то можно использовать опцию -u, например:
2. Переменные окружения
По умолчанию, команда sudo не передаёт запускаемой утилите переменные окружения текущего пользователя. А когда вы запускаете графическое приложение, то ему нужна переменная DISPLAY для доступа к графическому серверу. В последних версиях Ubuntu всё немного по другому, но все же эта возможность sudo актуальна. Чтобы передать переменные просто используйте опцию -E:
Без опции -E программа получает только 18 стандартных переменных, а с опцией — все доступные.
Также вы можете указать список переменных, которые нужно передать:
3. Авторизация от имени другого пользователя
С помощью sudo вы также можете авторизоваться от имени другого пользователя. Для этого используйте опцию -i:
По умолчанию вы будете авторизованы как суперпользователь. Ещё здесь можно указать пользователя, от имени которого вы хотите авторизоваться:
4. Командный интерпретатор
Если у вас в системе установлено несколько командных интерпретаторов, например, не только bash, но и zsh, то вы можете авторизоваться от имени другого пользователя и указать, какую именно оболочку вы хотите использовать. Для этого укажите опция -s:
5. Редактирование файлов
Когда вам необходимо отредактировать системный файл, вы пишите sudo vim или sudo nano. Вместо этого можно использовать опцию -e или команду sudoedit. Она открывает файл для редактирования, редактором, установленным в системе по умолчанию. Например, у меня это vim. Чтобы отредактировать /etc/group с правами суперпользователя достаточно выполнить:
Утилита узнает, каким редактором нужно пользоваться из переменной окружения EDITOR.
6. Запуск в фоне
Чтобы запустить программу в фоне с помощью sudo можно использовать опцию -b. Например, запускаем OpenVPN в фоновом режиме:
sudo -b openvpn -с /путь/к/конфигурационному.файлу
7. Просмотр полномочий
Вам необязательно редактировать конфигурационный файл, чтобы понять, какие настройки для sudo разрешены, а какие нет. Для этого можно выполнить команду с опцией -l. Утилита выведет список разрешённых команд или ALL в случае, если разрешено всё:
Выводы
Теперь вы знаете, что из себя представляет команда sudo Linux. Здесь мы рассмотрели только общие примеры её использования. Если вы хотите прочитать более подробно про её настройку, смотрите статью настройка sudo в Linux.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
sudo command in Linux with Examples
sudo (Super User DO) command in Linux is generally used as a prefix for some commands that only superusers are allowed to run. If you prefix any command with “sudo”, it will run that command with elevated privileges or in other words allow a user with proper permissions to execute a command as another user, such as the superuser. This is the equivalent of the “run as administrator” option in Windows. The option of sudo lets us have multiple administrators.
These users who can use the sudo command need to have an entry in the sudoers file located at “/etc/sudoers”. Remember that to edit or view the sudoers file you have to use the sudo command. To edit the sudoers file it is recommended to use the “visudo” command.
By default, sudo requires that users authenticate themselves with a password that is the user’s password, not the root password itself.
The syntax for `sudo` command:
sudo -V | -h | -l | -v | -k | -K | -s | [ -H ] [-P ] [-S ] [ -b ] | [ -p prompt ] [ -c class|- ] [ -a auth_type ] [-r role ] [-t type ] [ -u username|#uid ] command
Options Available in the `sudo` command
sudo -b [command]
(replace “command” with the command you want run in the background)
sudo -p "Enter your password" [command]
(replace “command” with the command you want run in the background)
sudo -n [command]
(replace “command” with the command you want run in the background)
sudo -u [user] [command]
(replace “command” with the command you want run in the background)
sudo -s [command]
(replace “command” with the command you want run in the background)
sudo -H [command]
(replace “command” with the command you want run in the background)
sudo -S [command]
(replace “command” with the command you want run in the background)
sudo -a [auth-type] [command]
(replace “command” with the command you want run in the background)
sudo -- [command]
(replace “command” with the command you want run in the background)
The output of few commands
1. -V: The -V (version) option causes sudo to print the version number and exit. If the invoking user is already root, the -V option will print out a list of the defaults sudo was compiled with.
2. -l: The -l (list) option will print out the commands allowed (and forbidden) the user on the current host.
3. -h or –help: The -h (help) option causes sudo to print a usage message and exit.
Environment Variables
These environment variables are used by sudo
Frequently asked Questions about `sudo` command
1) What is `sudo` in Linux?
Sudo is a command in Linux that allows users to run commands with privileges that only root user have. It helps users to do tasks with administrative power without logging in as the root user, though sometimes it can be risky.
2) Which Linux commands need `sudo` privileges?
There are many Linux commands that are needed to execute with sudo privileges such as networking commands, package management commands and system level commands. For example, commands that require sudo privileges to run are `yum`, `systemctl`, `mount`, `apt-get`, `fdisk` and `ifconfig`.
3) What can I run with sudo?
- Installing a new package: `sudo apt-get install package_name`
- Updating the system: `sudo apt-get update && sudo apt-get upgrade`
- Modifying system configurations: `sudo nano /etc/fstab`
- Starting a system service: `sudo systemctl start service_name`
- Stopping a system service: `sudo systemctl stop service_name`
- Creating a new user account: `sudo useradd username`
- Changing file permissions: `sudo chmod 755 file_name`
4) What is difference between su and sudo command in Linux?
In Linux, the su (switch user) command enables users to log in as another user, often the root user, and access their files and settings. In contrast, the sudo command enables users to run certain commands with increased privileges without logging in as the root user. Sudo is a more secure method of granting temporary root privileges to users.
5) How do I give and take user sudo access in Linux?
In Linux we can give or take `sudo` access by adding or removing the username from the file called `sudores`. To add username to the sudoers we need to run `sudo visudo` command and edit the file and add the line that will give access to user. For example: “username ALL=(ALL:ALL) ALL” gives the user complete access to the sudo command.
And We can disable a user’s sudo access by using the same command “sudo visudo” which will be used to edit the sudoers file and remove the line that gives them sudo access. Once the line is deleted, the user will no longer be able to use the sudo command to execute privileged commands.