Команда Sudo в Linux

Команда Sudo в Linux

Sudo Command in Linux

5 Января 2020 | Терминал

В этом уроке мы объясним, как использовать sudo команду.

Команда Sudo в Linux

Команда sudo позволяет запускать программы от имени другого пользователя, по умолчанию пользователь root. Если вы проводите много времени в командной строке, sudo - одна из команд, которую вы будете использовать довольно часто.

Использование sudo вместо входа в систему в качестве пользователя root более безопасно, поскольку вы можете предоставлять ограниченные административные привилегии отдельным пользователям, не зная пароля root.


Установка 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


Учетная запись суперпользователя в 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:

sudo command

Где command команда, для которой вы хотите использовать sudo.

Sudo прочитает /etc/sudoers файл и проверит, предоставляется ли пользователю, вызывающему программу, с помощью команды sudo. При первом использовании sudo в сеансе вам будет предложено ввести пароль пользователя, и команда будет выполнена от имени пользователя root.

Например, чтобы перечислить все файлы в /root каталоге, вы бы использовали:

sudo ls /root

[sudo] password for linuxize:
.  ..  .bashrc	.cache	.config  .local  .profile


Тайм-аут пароля 

По умолчанию sudo попросит вас ввести пароль еще раз через пять минут бездействия 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. 


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...