
Команда sudo позволяет запускать программы от имени другого пользователя, по умолчанию пользователя root. Если вы проводите много времени в командной строке, sudo — одна из команд, которые вы будете использовать довольно часто.
Использование sudo вместо входа в систему как root более безопасно, поскольку вы можете предоставить ограниченные административные привилегии отдельным пользователям, не зная их пароля root.
В этом руководстве мы объясним, как использовать команду sudo .
Установка Sudo (команда sudo не найдена)
Пакет sudo предустановлен в большинстве дистрибутивов Linux.
Чтобы проверить, установлен ли пакет sudo в вашей системе, откройте консоль, введите sudo и нажмите Enter . Если sudo установлен, система выведет короткое сообщение справки. В противном случае вы увидите сообщение вроде sudo command not found .
Если sudo не установлен, вы можете легко установить его с помощью менеджера пакетов вашего дистрибутива.
Установка Sudo в Ubuntu и Debian
apt install sudo
Установка Sudo на CentOS и Fedora
yum install sudo
Добавление пользователя в Sudoers
По умолчанию в большинстве дистрибутивов Linux предоставление доступа к sudo осуществляется просто добавлением пользователя в группу sudo, определённую в файле sudoers . Члены этой группы смогут выполнять любые команды от имени root. Имя группы может отличаться в зависимости от дистрибутива.
В дистрибутивах на базе RedHat, таких как CentOS и Fedora, группа sudo называется wheel . Чтобы добавить пользователя в группу , выполните:
usermod -aG wheel username
В Debian, Ubuntu и их производных членам группы sudo предоставляется доступ к sudo:
usermod -aG sudo username
Учётная запись пользователя root в Ubuntu по умолчанию отключена из соображений безопасности, и пользователям рекомендуется выполнять системные административные задачи с помощью sudo. Пользователь, созданный установщиком Ubuntu, изначально входит в группу sudo, поэтому, если вы используете Ubuntu, скорее всего, у пользователя, под которым вы вошли в систему, уже есть права sudo.
Чтобы разрешить определенному пользователю запускать только определенные программы с правами sudo, вместо добавления пользователя в группу sudo добавьте пользователей в файл sudoers .
Например, чтобы разрешить пользователю linuxize запускать только команду mkdir от имени sudo, введите:
sudo visudo
и добавьте следующую строку:
linuxize ALL = /bin/mkdir
В большинстве систем команда visudo открывает файл /etc/sudoers в текстовом редакторе vim. Если у вас нет опыта работы с vim, ознакомьтесь с нашей статьей о том, как сохранить файл и выйти из редактора vim .
Вы также можете разрешить пользователям запускать команды sudo без ввода пароля :
linuxize ALL = (ALL) NOPASSWD: ALL
Как использовать Sudo
Синтаксис команды sudo следующий:
sudo OPTION.. COMMAND
Команда sudo имеет множество опций , которые управляют ее поведением, но обычно она используется в самой базовой форме, без каких-либо опций.
Чтобы использовать sudo, просто добавьте к команде префикс sudo :
sudo command
Где command — команда, для которой вы хотите использовать sudo.
Sudo прочитает файл /etc/sudoers и проверит, есть ли у вызывающего пользователя право sudo Assessment. При первом использовании sudo в сеансе вам будет предложено ввести пароль пользователя, и команда будет выполнена от имени root.
Например, чтобы вывести список всех файлов в каталоге /root можно использовать:
sudo ls /root
[sudo] password for linuxize: . .. .bashrc .cache .config .local .profile
Время ожидания пароля
По умолчанию sudo запросит повторный ввод пароля через пять минут бездействия. Вы можете изменить время ожидания по умолчанию, отредактировав файл sudoers . Откройте файл с помощью visudo :
sudo visudo
Установите время ожидания по умолчанию, добавив строку ниже, где 10 — это время ожидания, указанное в минутах:
Defaults timestamp_timeout = 10
Если вы хотите изменить временную метку только для конкретного пользователя, добавьте следующую строку, где user_name — это имя нужного пользователя.
Defaults:user_name timestamp_timeout = 10
Выполнить команду от имени пользователя, отличного от root
Существует ошибочное мнение, что sudo используется только для предоставления прав root обычному пользователю. На самом деле, sudo можно использовать для выполнения команд от имени любого пользователя.
Опция -u позволяет выполнить команду от имени указанного пользователя.
В следующем примере мы используем sudo для запуска команды whoami от имени пользователя «richard»:
sudo -u richard whoami
Команда whoami выведет имя пользователя, выполнившего команду:
richard
Как перенаправить с помощью Sudo
Если вы попытаетесь перенаправить вывод команды в файл, на запись в который у вашего пользователя нет прав, вы получите ошибку «Отказано в доступе».
sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied
Это происходит потому, что перенаправление вывода ( > ) выполняется под пользователем, под которым вы вошли в систему, а не под пользователем, указанным в sudo. Перенаправление происходит до вызова команды sudo .
Одним из решений является вызов новой оболочки от имени пользователя root с помощью команды sudo sh -c :
sudo sh -c 'echo "test" > /root/file.txt'
Другой вариант — передать вывод от имени обычного пользователя команде tee , как показано ниже:
echo "test" | sudo tee /root/file.txt
Заключение
Вы узнали, как использовать команду sudo и как создавать новых пользователей с привилегиями sudo.
Если у вас есть вопросы, не стесняйтесь оставлять комментарии.
Связанные руководства