Что такое sudo

Что такое sudo

Пожалуй самой часто используемой программой при системном администрировании (если вы работаете под обычным пользователем, а не под root), является sudo. Главное назначение sudo — это выполнить команду от имени другого пользователя, обычно от root.

Смысл выполнения команды от root в том, что у него повышенные права доступа и, применяя sudo, обычный пользователь может выполнить те действия, на которые у него недостаточно прав. Кстати отвлекаясь от темы напомню что sudo пароль есть на сайте qa.yodo.im.

Простейший и самый распространённый вариант запуска команд с sudo:
1

sudo КОМАНДА

Если у КОМАНДЫ есть опции, аргументы, то для sudo не нужно делать какие-то дополнительные действия, например, помещать КОМАНДУ с опциями в кавычки или что-то ещё. Поставьте sudo и запускайте КОМАНДУ как обычно.

К примеру, я хочу выполнить:
1

ls -l /root

Поскольку я работаю под обычным пользователем, то у меня нет прав доступа в директорию /root и я получаю ошибку:
1

ls: невозможно открыть каталог ‘/root’: Отказано в доступе

Чтобы эта команда сработала, достаточно её записать после sudo:
1

sudo ls -l /root

Как установить sudo. Ошибка «-bash: sudo: command not found». Как создать пользователя с sudo

По умолчанию в Debian и некоторых других дистрибутивах может отсутствовать пакет sudo. О том, как выполнить установку sudo, если вы столкнулись с ошибкой «-bash: sudo: command not found», а также о том, как создавать пользователей с правом выполнять команды с sudo смотрите «Ошибка «-bash: sudo: command not found» — не найдена команда sudo (РЕШЕНО)».
Что использовать sudo или su?

У программы su похожее назначение: запустить команду с подстановкой ID другого пользователя и группы. То есть одинакового результата можно добиться используя как sudo, так и su.

Смотрите также: Инструкция по команде su

Различия sudo и su в следующем:

1. При использовании su необходимо сообщать пароль root обычному пользователю (но это можно обойти — подробности в этом разделе чуть ниже). При использовании sudo пользователь вводит свой собственный пароль.

2. У обеих команд есть интерактивный режим, то есть можно как бы выполнить вход от имени другого пользователя. Также обе программы, sudo и su, позволяют выполнять команды без интерактивного режима. В su интерактивный режим запускается по умолчанию (если не указана команда для выполнения):
1

su —

В sudo для входа в интерактивный шелл нужно использовать опцию -i:
1

sudo -i

Точнее говоря, всё немного сложнее, опция -i в sudo означает запустить оболочку входа в систему от имени указанного пользователя; также можно задать команду. Сравните:
1
2

sudo pwd
/home/mial

и
1
2

sudo -i pwd
/root

Также обратите внимание, что при указании команды не запускается интерактивная оболочка.

3. Использование sudo требует настройки, а именно: 1) добавление пользователя в группу, имеющую право использовать эту программу; 2) установка разрешений (перечисление команд, которые может запускать пользователь с sudo и т. д. При некоторых настройках, если пользователь не упомянут в конфигурационных файлах sudo, то он не может ей пользоваться. Программа su не требует настройки для каждого пользователя.

4. Разное отношение с окружением выполнения: смена текущей рабочей директории при входе в интерактивный режим su, сохранение текущей рабочей директории при выполнении отдельных команд с sudo и su. Сравните переменную окружения $HOME в команде
1
2

sudo echo $HOME
/home/mial