Использование 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.
Если у вас есть какие-либо вопросы, не стесняйтесь оставлять комментарии.
Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!
Спасибо! Ваша заявка принята
Спасибо! Ваша заявка принята