Команда sudo позволяет запускать программы от имени другого пользователя, по умолчанию пользователь root. Если вы проводите много времени в командной строке, sudo — одна из команд, которую вы будете использовать довольно часто.
Использование sudo вместо входа в систему в качестве пользователя root более безопасно, поскольку вы можете предоставлять ограниченные административные привилегии отдельным пользователям, не зная пароля root.
В этой статье мы объясним, как использовать команду sudo.
Пакет sudo предустановлен в большинстве дистрибутивов Linux.
Чтобы проверить, установлен ли пакет sudo в вашей системе, откройте консоль, введите sudoи нажмите Enter. Если у вас установлен sudo, система отобразит краткое справочное сообщение, в противном случае вы увидите что-то вроде sudo command not found.
Если sudo не установлен, вы можете легко установить его с помощью менеджера пакетов вашего дистрибутива.
apt install sudo
yum install sudo
По умолчанию в большинстве дистрибутивов Linux предоставление доступа к sudo так же просто, как добавление пользователя в группу sudo, определенную в файл sudoers. Члены этой группы смогут запускать любую команду от имени пользователя root. Название группы может отличаться от рассылки к рассылке.
В дистрибутивах на основе RedHat, таких как CentOS и Fedora, имя группы sudo wheel. Чтобы добавить пользователя в группу, выполните:
usermod -aG wheel username
В Debian, Ubuntu и их производных членам группы sudo предоставляется доступ sudo:
usermod -aG sudo username
Учетная запись суперпользователя в Ubuntu по умолчанию отключен по соображениям безопасности и пользователям рекомендуется выполнить системную задачу администрирования с использованием Sudo. Первоначальный пользователь, созданный установщиком Ubuntu, уже является членом группы sudo, поэтому, если вы работаете в Ubuntu, есть вероятность, что пользователь, вошедший в систему, уже получил права sudo.
Если вы хотите разрешить определенному пользователю запускать только определенные программы как sudo, вместо добавления пользователя в группу sudo добавьте пользователей в файл sudoers.
Например, чтобы позволить пользователю andreyex запускать только команду mkdir с sudo, введите:
sudo visudo
и добавьте следующую строку:
andreyex ALL=/bin/mkdir
В большинстве систем команда visudo открывает файл /etc/sudoers в текстовом редакторе vim. Если у вас нет опыта работы с vim, проверьте нашу статью о том, как сохранить файл и выйти из редактора vim.
Вы также можете разрешить пользователям запускать команды sudo без аутентификации:
andreyex ALL=(ALL) NOPASSWD: ALL
Синтаксис sudoкоманды следующий:
sudo OPTION.. COMMAND
У команды sudo есть много опций, которые управляют ее поведением, но обычно sudo используется в самой простой форме, без каких-либо опций.
Чтобы использовать sudo, просто добавьте к команде префикс sudo:
sudo command
Где command — команда, для которой вы хотите использовать sudo.
Sudo прочитает файл /etc/sudoers и проверит, предоставляется ли пользователю, вызывающему программу, с помощью команды sudo. При первом использовании sudo в сеансе вам будет предложено ввести пароль пользователя, и команда будет выполнена от имени пользователя root.
Например, чтобы перечислить все файлы в каталоге /root, вы бы использовали:
sudo ls /root
[sudo] password for andreyex: . .. .bashrc .cache .config .local .profile
По умолчанию sudo попросит вас ввести пароль еще раз через пять минут бездействия sudo. Вы можете изменить время ожидания по умолчанию, отредактировав файл sudoers. Откройте файл с помощью visudo:
sudo visudo
Установите время ожидания по умолчанию, добавив строку ниже, где 10 время ожидания указано в минутах:
Defaults timestamp_timeout=10
Если вы хотите изменить метку времени только для конкретного пользователя, добавьте следующую строку, где user_name — это рассматриваемый пользователь.
Defaults:user_name timestamp_timeout=10
Существует неправильное восприятие, sudo которое используется только для предоставления полномочий root обычному пользователю. На самом деле, вы можете использовать sudo для запуска команды, как любой пользователь.
Опция -u позволяет выполнить команду в качестве указанного пользователя.
В следующем примере мы используем sudo для запуска команды whoami от имени пользователя «destroyer»:
sudo -u destroyer whoami
Команда whoami выведет имя пользователя, запустившего команду:
destroyer
Если вы попытаетесь перенаправить вывод команды в файл, у которого у пользователя нет прав на запись, вы получите ошибку “Permission denied”.
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.
Если у вас есть какие-либо вопросы, не стесняйтесь оставлять комментарии.