Sudo параметры. Администратор в Ubuntu, или Что такое sudo
Команда sudo играет очень важное значение для управления
правами доступа в операционной системе Linux. Благодаря этой небольшой
команде вы можете давать полномочия на выполнение тех или иных действий
от имени администратора другим пользователям, при этом не давая им сам
пароль суперпользователя. Также вам не нужно сидеть всегда под учетной
записью суперпользователя чтобы иногда выполнять административные
действия.
Казалось бы, такая небольшая команда, с минимумом возможностей и
максимально простым использованием, но на самом деле она может намного
больше. В этой статье мы рассмотрим как выполняется настройка sudo в
linux для контроля доступа к функциям системы и возможностей
пользователя.
Как работает sudo?
Перед тем, как переходить к настройке доступа к утилите sudo давайте рассмотрим как она работает. В Linux есть два способа получить права администратора. Вы можете переключиться на пользователя root с помощью команды su или можете передать в параметре нужную команду утилите sudo, которая выполнит ее с правами администратора. Причем второй способ предпочтительнее, потому что вы не забудете что используете права root и не наделаете ничего лишнего.Имя команды означает substitute user do или super user do. Утилита позволяет запускать программы от имени другого пользователя, но чаще всего от имени корневого. Утилита была разработана еще в 1980 году Бобом Когшелом и Клиффом Спенсером. За это время сменилось много разработчиков и было добавлено много функций.
Работает sudo благодаря флагу доступа SUID. Если этот флаг установлен для программы, то она выполняется не от имени того пользователя который ее запустил, а от имени владельца, учитывая что файл sudo принадлежит, то утилита выполняется от имени root. Затем она читает свои настройки, запрашивает пароль пользователя и решает можно ли ему разрешать выполнение команд от имени администратора. Если да, то выполняется переданная в параметре команда.
Теперь, когда вы знаете теорию, давайте рассмотрим как настроить sudo в Linux.
Настройка sudo в Linux
Все настройки sudo находятся в файле /etc/sudores. Здесь можно настроить очень много параметров, начиная от кому будет позволено выполнять команды от имени суперпользователя и заканчивая ограничением набора доступных команд.Чтобы открыть файл для редактирования наберите такую команду от имени суперпользователя:
Вы также можете указать текстовый редактор, в котором вы хотите редактировать файл настройки:
# EDITOR=nano visudo
Дальше мы рассмотрим самые интересные настройки, которые вы можете
задать в этом файле. Но сначала давайте рассмотрим основной синтаксис
файла. Он состоит из двух типов строк, это псевдонимы, которые позволяют
создавать списки пользователей и флагов, а также сами правила, которые
задают как будет вести себя команда sudo. Синтаксис алиасов выглядит вот
так:
тип
имя_алиаса
=
элемент1, элемент2, элемент3
Тип указывает какого типа нужно создать алис, имя - имя, которое
будет использовано, а список элементов - те элементы, которые будут
подразумеваться при обращении к этому имени.
Описание разрешений для пользователей имеет немного другой синтаксис:
пользователь
хост
=
(другой_пользователь:группа)
команды
Пользователь указывает пользователя или группу, для которых мы
создаем правило, хост - компьютер, для которого будет действовать это
правило. Другой пользователь - под видом какого пользователя первый
может выполнять команды, и последнее - разрешенные команды. Вместо
любого из параметров может использоваться алиас. А теперь настройка sudo
в Debian и других дистрибутивах.
Основные параметры
Алиас Defaults позволяет задать стандартные параметры для работы утилиты, их мы и рассмотрим в этом разделе. Начинается такой алиас со слова Defaults, дальше идет имя флага. Если перед именем есть символ!, это значит, что флаг нужно включить, в обратном случае выключить:Отключаем введение при первом использовании:
Defaults !lecture
Суперпользователь не может выполнять sudo:
Defaults !root_sudo
Теперь если вы попытаетесь выполнить sudo sudo ничего не сработает:
Изменять домашнюю директорию для целевого пользователя, по умолчанию остается папка текущего пользователя в качестве домашней директории:
Defaults set_home
Сохранять список групп текущего пользователя:
Defaults !preserve_groups
Запрашивать пароль суперпользователя вместо пароля пользователя:
Дальше рассмотрим переменные, которым можно задать значения чтобы установить нужные настройки:
Задать количество попыток ввода пароля перед тем, как sudo прекратит работу, по умолчанию - 3:
Defaults passwd_tries=5
Количество минут, которое пройдет перед тем, как sudo будет спрашивать пароль снова, по умолчанию 5. Если установить значение в 0, то пароль будет спрашиваться всегда, независимо от того как давно вы использовали утилиту:
Defaults timestamp_timeout=10
Следующий параметр задает количество минут, пока sudo будет ожидать повторного ввода пароля при неправильном вводе:
Defaults passwd_timeout=10
Вы можете изменить сообщение, которое будет выводится при запросе пароля:
Defaults passprompt="Ваш пароль:"
Можно указать другого пользователя, не root, от которого будут выполняться все команды, для этого используйте:
Defaults runas_default="пользователь"
Вы можете записывать в лог все попытки подключения к sudo:
Defaults logfile=/var/log/sudo
Затем пробуем проверить работу лога:
$ sudo cat /var/log/sudo
Это были все самые интересные параметры настройки работы sudo, которые могут вам понадобиться, дальше мы рассмотрим как задать права доступа sudo для пользователей.
Настройка пользователей sudo
Мы уже рассматривали выше синтаксис настройки действий для пользователей, здесь все сложнее чем с псевдонимами, но разобраться можно. Например, разрешим любому пользователю использовать sudo, от любого хоста и выполнять любые команды:ALL ALL = (ALL) ALL
Такая команда очень небезопасна, она разрешает всем и все. Первое ALL - разрешить всем пользователям, второе ALL - для всех хостов, третье ALL - разрешить вход под любым пользователем и четвертое - разрешить выполнять любою команду. Но куда более часто используется другая конструкция:
%wheel ALL = (ALL) ALL
Означает то же самое, что и предыдущее, только здесь мы разрешаем
использовать sudo не всем пользователям, а только тем, которые состоят в
группе wheel.
%wheel ALL = (root) ALL
Тут мы уже ограничили возможный выбор пользователей только
пользователем root. Также можно указать группу пользователя, от имени
которого он может выполнять команды:
%wheel ALL = (root:admins) ALL
Это значит что можно выполнить команду от имени root или другого пользователя из группы admins. Еще мы можем указать команды, которые может выполнять пользователь. Например:
User_Alias Users = user1,user2,user3
Runas_Alias Admins = root,admin
Host_Alias Hosts = host1,host2
Cmd_Alias Cmds = /bin/mount,/bin/umount
Users Hosts = (Admins) Cmds
Это значит, что пользователи из списка Users смогут выполнять команды Cmds от имени пользователей Amdins на хостах Hosts.
Еще осталось сказать несколько слов о флагах. Флаг NOPASSWD говорит,
что не нужно запрашивать пароль при выполнении этого правила. Например,
разрешить всем пользователям выполнять команду mount с sudo без пароля:
ALL ALL = (root) NOPASSWD: /bin/mount
Также можно запретить выполнять именно эту команду вообще с помощью флага NOEXEC:
ALL ALL = (root) NOEXEC /bin/mount
Вы можете проверить правильно ли была проведена настройка файла
/etc/sudores и посмотреть все созданные правила с помощью команды:
Здесь отображены все установленные флаги и настройки, а также полномочия данного пользователя.
Выводы
В этой статье мы рассмотрели как выполняется настройка sudo в linux. Как видите, несмотря на то, что это очень простая утилита, она скрывает очень много полезных настроек, которые можно использовать в своей системе. Если у вас остались вопросы, спрашивайте в комментариях!Sudo — это программа для Unix-подобных операционных систем, которая позволяет пользователям запускать программы с привилегиями безопасности другого пользователя, по умолчанию суперпользователя.
В отличие от связанной команды su , пользователи должны предоставить свой пароль для аутентификации. После аутентификации, если файл конфигурации, который обычно находится в /etc/sudoers , позволяет предоставить пользователю доступ, система выполняет требуемую команду. Файл конфигурации дает разрешение на доступ, в том числе позволяет выполнять команды вызывающиеся из терминала; позволяет запрашивать пароль для каждого пользователя или группы; позволяет требовать повторного ввода пароля каждый раз, или никогда не требовать ввода пароля вообще. Он также может быть настроен, чтобы разрешить передачу аргументов или нескольких команд.
Говоря простыми словами для того чтобы выполнить определенные действия в Linux
, нам потребуется либо ввод пароля, либо вход от имени суперпользователя (su)
.
Рассмотрим на простом примере, для того чтоб получить возможность удалять\копировать\заменять системные файлы в Ubuntu
, необходимо открыть файловый менеджер Nautilus
от имени суперпользователя.
Для этого вводим в терминале (ctrl+alt+T
). Будьте внимательны, терминал чувствителен к регистру.
Затем появится следующий текст:
password for user: /здесь вводите свой пароль, учтите что никакие символы отображаться не будут/Таким образом вы открыли файловый менеджер Nautilus от имени суперпользователя и теперь можете смело (или не очень) идти ковырять системные файлы ^^
Следующий пример. Например вам надо поковырять содержимое системного файла с помощью текстового редактора, но внести изменения вы в нем не можете. Открываете терминал и вводите:
sudo geditТаким образом вы открыли текстовый редактор с правами суперпользователя.
Еще один пример если, допустим, вы будете вы будете выполнять большое количество команд и каждый раз ввод пароля вас просто не устраивает. Вы можете открыть в терминале сеанс суперпользователя который избавит вас от этих неудобств.
Вводим в терминале:
Затем вводим свой пароль, сеанс суперпользователя открыт. Спасибо за внимание
Что правильно использовать: su или sudo?
С давних времен многих смущает разнообразие вариантов обеспечения безопасности при выполнении операций с максимальными привилегиями. Например, в официальной документации Ubuntu в качестве команды редактирования рекомендуется использовать что-то вроде sudo nano , а в многочисленных любительских мануалах (в стиле «5 фокусов в командной строке, которые удивят вашу бабушку») для получения root"ового шелла предлагается писать sudo su - . Попробую объяснить, почему такое положение вещей кажется мне неправильным.
И сторически единственным универсальным способом выполнить команду от имени другого пользователя в Unix была программа su. Запущенная без параметров, она запрашивала пароль суперпользователя и в случае успеха просто подменяла текущее имя пользователя на root, оставляя почти все переменные окружения от старого пользователя (кроме PATH, USER и еще пары-тройки, см. man su от своего дистрибутива). Более корректно было запускать ее как su - - в таком случае оболочка получала также и правильный environment. С параметром -c можно было выполнить команду: su -c "vim /etc/fstab" .
При этом доверенным пользователям приходилось помнить пароль root"а и у всех пользователей, перечисленных в группе «wheel» (т.е. в группе, члены которой могли выполнить команду su и стать суперпользователем), был одинаковый неограниченный доступ ко всей системе, что являлось серьёзной проблемой безопасности.
Затем появилась команда sudo, и это был прорыв. Теперь администратор мог указывать список разрешенных команд для каждого пользователя (или группы пользователей), файлы, доступные для редактирования, специальные переменные окружения и многое другое (все это великолепие управляется из /etc/sudoers , см. man sudoers от своего дистрибутива). При запуске sudo спрашивает у пользователя его собственный пароль, а не пароль root. Полноценный шелл можно получить с помощью " sudo -i "
Стоит особо упомянуть о специальной команде sudoedit , безопасно запускающей редактор, указанный в переменной окружения $EDITOR . При более традиционной схеме редактирование файлов производилось примерно так:
sudo vi /etc/fstab
Запускаемый таким образом vi наследовал оболочку с неограниченными правами и через :! пользователь мог запускать любую команду (если, конечно, админ не позаботился об этом заранее) и открыть любой файл.
sudoedit проверяет, можно ли этому пользователю изменять данный файл, затем копирует указанный файл во временный каталог, открывает его в редакторе (который наследует права пользователя, а не root"а), а после редактирования, если файл был изменён, с особыми предосторожностями копирует его обратно.
В Debian-based дистрибутивах пользователь root не имеет пароля, вместо этого все административные действия должны производиться через sudo или его графический аналог gksudo . Являясь полной заменой su , sudo должна бы быть единственной командой переключения между пользователями, однако, как было сказано вначале, в настоящий момент это не так и все зачем-то изобретают дикие последовательности из sudo, su, vi и черточек.
Поэтому предлагаю всем раз и навсегда запомнить:
После первой публикации этой заметки мне было задано несколько вопросов. Из ответов получилось сделать мини-FAQ.
Q: как с помощью sudo сделать su -c "echo 1 > /etc/privileged_file" ? sudo echo 1 /etc/privileged_file ругается на «permission denied»
A: Это происходит потому, что только команда echo выполняется в повышенными правами, а результат перенаправляется в файл уже с правами обычного пользователя. Чтобы добавить что-нибудь в privileged_file, нужно выполнить такую команду:
$ echo 1| sudo tee -a privileged_file >/dev/null
Или же временно стать рутом:
$ sudo -i
# echo 1 > privileged_file
# exit
Q: sudo -i длиннее, чем su -, а разницы между ними вроде как и никакой, зачем печатать больше?
A: У sudo есть несколько преимуществ, ради которых стоит потрудиться набрать несколько лишних символов:
- по умолчанию sudo записывает всю пользовательскую активность в syslog-канал authpriv (как правило, результат кладется в файл /var/log/auth.log), а в su подобную фичу надо включать с помошью задания специального параметра в файле настроек, различающемся от дистрибутива к дистрибутиву (SULOG_FILE в /etc/login.defs в Ubuntu Linux, /etc/login.conf и /etc/pam.d/su в FreeBSD и т.д.)
- в случае с su администратор системы не может ограничить команды, выполняемые пользователями, а в sudo - может
- если пользователь должен быть лишен права администрирования, в случае с su после удаления его из группы wheel он должен забыть пароль root"а; если используется sudo, достаточно вынести его из соответствующей группы (например, wheel или admin) и/или файла sudoers, если он был дополнительно настроен.
Q: я единственный пользователь своей системы и привык к su, зачем мне sudo?
A: отвечу вопросом на вопрос: если есть правильный sudo, зачем использовать устаревший su?
Разделение прав доступа – одна из наиболее важных парадигм безопасности, реализуемых в Linux и Unix-подобных операционных системах. Обычные пользователи работают с ограниченными правами; так сокращаются масштабы их влияния на их собственную среду и на операционную систему в целом.
Пользователь root имеет привилегии суперпользователя. Эта учетная запись администратора не имеет ограничений, которые присутствуют на учётных записях обычных пользователей. Другие пользователи могут выполнять команды с правами root в ряде отдельных случаев.
В данном руководстве показано, как правильно и безопасно для системы передавать права root.
Примечание : Данное руководство было выполнено на сервере Ubuntu 12.04, однако большинство современных дистрибутивов Linux будут вести себя аналогичным образом.
Для выполнения руководства нужно предварительно выполнить начальную настройку сервера:
Войдите на сервер как не-root пользователь.
Как получить права root
Есть три основных способа получить привилегии суперпользователя, которые варьируются по уровню сложности.
Вход как root
Проще всего, конечно, войти в систему как пользователь root.
При подключении через SSH укажите IP-адрес или имя хоста:
ssh root@IP_адрес_или_домен
По запросу введите root-пароль.
Команда su
Постоянно использовать учётную запись root не рекомендуется, поскольку, имея абсолютные права доступа, можно совершенно случайно нанести системе непоправимый вред.
Потому в системе существует команда su, позволяющая обычному пользователю получать root-права в любой момент.
Примечание : Команда su – это сокращение от substitute user.
Итак, чтобы получить root-права, просто введите:
Система запросит пароль root-пользователя, после чего откроет доступ к сессии оболочки root-пользователя.
Выполнив все задачи, требующие прав root, можно вернуться в предыдущую сессию:
Команда sudo
Последний способ получения привилегий root – команда sudo.
Команда sudo позволяет выполнять отдельные команды с правами root без необходимости открывать новую сессию.
sudo command_to_execute
Примечание : В отличие от su, команда sudo запрашивает не пароль root, а пароль пользователя, который вызывает команду.
Из соображений безопасности команда sudo недоступна по умолчанию, доступ к ней нужно настраивать. Если вы следовали руководству по начальной настройке сервера, вы уже знаете, как это делается.
Что такое Visudo?
Команда sudo настраивается при помощи файла /etc/sudoers.
Важно! Никогда не редактируйте этот файл при помощи обычного текстового редактора! Для этого следует использовать visudo.
Неправильный синтаксис, добавленный в этот файл, может полностью нарушить распределение прав между пользователями. Потому для работы с этим файлом используется команда visudo.
Команда visudo открывает файл в обычном текстовом редакторе, но во время сохранения файла проверяет его синтаксис. Это позволяет избежать ошибок в конфигурации.
Как правило, visudo открывает файл /etc/sudoers в редакторе vi. В системе Ubuntu visudo использует nano.
Чтобы настроить команду visudo для использования vi в системе Ubuntu, выполните команду:
sudo update-alternatives --config editor
There are 3 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
————————————————————
* 0 /bin/nano 40 auto mode
1 /bin/nano 40 manual mode
2 /usr/bin/vim.basic 30 manual mode
3 /usr/bin/vim.tiny 10 manual mode
Выберите число, соответствующее текстовому редактору, который вы хотите использовать.
В системе CentOS это значение можно изменить, добавив в ~/.bashrc строку:
export EDITOR=/path/to/editor
Чтобы обновить настройки, введите:
Чтобы открыть /etc/sudoers, введите:
Редактирование файла sudoers
Итак, в выбранном вами текстовом редакторе на экране откроется файл sudoers.
Ниже приведены параметры файла системы Ubuntu 12.04 (закомментированные строки опущены, а изменения, внесённые при начальной настройке сервера, сохранены).
Примечание : Файл sudoers системы CentOS гораздо более объёмен; некоторые его параметры в этом руководстве не описаны.
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root ALL=(ALL:ALL) ALL
demo ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Стандартные параметры
Первая строка, Defaults env_reset, сбрасывает терминальную среду, чтобы удалить все пользовательские переменные. Эта мера безопасности используется для устранения потенциально вредного воздействия переменных среды из сессии sudo.
Второй параметр, Defaults secure_path=…, задаёт путь (PATH, точки файловой системы, в которых ОС будет искать приложения) для операций sudo. Это предотвращает использование потенциально опасных пользовательских путей.
Параметры настройки прав пользователей
Третий и четвёртый параметр должны быть вам знакомы. Четвёртую строку вы добавили самостоятельно, но, возможно, не разбирали её подробно.
- demo ALL=(ALL:ALL) ALL
- Первое поле задаёт имя пользователя, к которому нужно применить данное правило (в данном случае это demo).
- Первое ALL значит, что правило будет применяться ко всем хостам.
- Второе ALL значит, что указанный пользователь может запускать команды в сессии любого пользователя.
- Третье ALL значит, что указанный пользователь может запускать команды в любой группе.
- Последнее ALL указывает, что эти правила нужно применять ко всем командам.
Это значит, что пользователи root и demo могут запускать все команды при помощи sudo, указав свой пароль.
Параметры привилегий групп
Последние две строки похожи на параметры привилегий пользователей, однако они отвечают за права групп.
Имена групп начинаются с символа %.
Как видите, группа admin может выполнять любую команду как любой пользователь или хост. Аналогичные права имеет группа sudo, однако она также может запускать команду как любая группа.
Пользовательские правила
Ознакомившись с базовым синтаксисом файла, попробуйте создать пару правил самостоятельно.
Создание алиасов
Файл sudoers можно более удобно структурировать при помощи различных алиасов (англ. – alias).
К примеру, можно создать три разные группы пользователей с совмещёнными правами:
User_Alias GROUPONE = abby, brent, carl
User_Alias GROUPTWO = brent, doris, eric,
User_Alias GROUPTHREE = doris, felicia, grant
Имена групп должны начинаться с большой буквы. После этого можно дать пользователям GROUPTWO право на изменение БД apt-get:
GROUPTWO ALL = /usr/bin/apt-get update
Если в правиле не указан пользователь и группа, по умолчанию sudo использует root.
Затем можно разрешить пользователям группы GROUPTHREE выключать и перезапускать машину; для этого нужно создать алиас команды:
Cmnd_Alias POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart
GROUPTHREE ALL = POWER
Алиас команды POWER содержит команды для отключения и перезапуска машины.
Также можно создать алиас Run as, который заменяет часть правила, указывающую пользователя, в сессии которого нужно выполнить команду.
Runas_Alias WEB = www-data, apache
GROUPONE ALL = (WEB) ALL
Теперь любой пользователь группы GROUPONE может выполнять команды в сессиях пользователей www-data или apache.
Примечание : Помните, что созданные ранее правила имеют более высокий приоритет в случае конфликта правил.
Блокировка правил
Существует ряд способов контроля поведения и реакции sudo на вызов.
К примеру, команда updatedb в сочетании с пакетом mlocate относительно безвредна. Чтобы обычный пользователь мог выполнять её с привилегиями суперпользователя, не вводя пароль, можно создать такое правило:
GROUPONE ALL = NOPASSWD: /usr/bin/updatedb
Команда NOPASSWD значит, что система не будет запрашивать пароль. Также существует команда PASSWD, которая отвечает за противоположное поведение и используется по умолчанию.
NOPASSWD распространяется на всё правило, если команда PASSWD не отменяет его. Например, строка может выглядеть так:
GROUPTWO ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill
Ещё одна удобная команда – NOEXEC, которая используется для предотвращения опасного поведения определенных программ. К примеру, некоторые команды, такие как less, могут вызывать другие команды:
Эта команда выполняет любую команду с привилегиями пользователя, запускающего less, а это может быть очень опасно.
Чтобы запретить такое поведение, можно использовать следующую строку:
username ALL = NOEXEC: /usr/bin/less
Дополнительные сведения
В данном разделе собраны различные полезные советы по работе с sudo.
Если вы указали пользователя или группу в параметре Run as, вы можете выполнять команды в сессии этого пользователя при помощи флагов -u и –g соответственно:
sudo -u run_as_user command
sudo -g run_as_group command
По умолчанию sudo сохраняет учётные данные в одном терминале на некоторое время. Это означает, что в течение этого периода вам не придется вводить пароль снова.
Если в целях безопасности вы хотите сбросить этот таймер, используйте команду:
Чтобы узнать права пользователя, введите:
Эта команда выведет все права, указанные в файле /etc/sudoers для данного пользователя.
Если обычный пользователь попытается запустить команду администратора без префикса sudo, команда не сработает. Чтобы избежать необходимости повторного ввода команды, используйте функцию bash, которая повторяет команду:
Двойной восклицательный знак повторит последнюю команду.
Заключение
Теперь у вас есть базовые навыки работы с файлом sudoers и правами root.
Работая с правами суперпользователя, помните о том, что обычные пользователи не обладают такими правами по умолчанию из соображений безопасности. Не злоупотребляйте правами root, иначе можно случайно нанести системе непоправимый ущерб.
Tags: ,Если вы периодически используете команду sudo, я уверен, что вы заметили особенность ее работы, заключающуюся в том, что после успешного ввода пароля вы можете использовать sudo еще несколько раз вообще без ввода пароля. Но по истечении некоторого времени команда sudo снова начинает запрашивать ввод пароля.
Это поведение никак не связано с количеством исполненных посредством sudo команд, но связано с временем. Да, по умолчанию sudo не будет запрашивать ввод пароля в течение 15 минут после его успешной проверки. По истечении этих 15 минут sudo снова попросит ввести пароль.
Однако, при желании вы можете изменить описанное поведение. Для этого следует открыть файл конфигурации /etc/sudoers с помощью следующей команды:
Sudo visudo
После этого нужно перейти к строке
Defaults env_reset
и добавить в конец этой строки следующую переменную с новым значением (выделено жирным шрифтом):
Defaults env_reset,timestamp_timeout=[новое значение]
Поле "[новое значение]" должно быть заменено на количество минут, в течение которых должна существовать ваша сессия sudo. К примеру, я использовал значение 40.
Если вы хотите, чтобы запрос пароля осуществлялся при каждом использовании команды sudo, вы можете установить значение 0 данной переменной. А если вам нужно, чтобы сессия sudo длилась вечно, вы можете установить значение -1 данной переменной.
Пожалуйста учтите, что использование значения -1 рассматриваемой переменной настоятельно не рекомендуется.
Пароль sudo
Как вы могли заметить, в процессе ввода пароля не отображается никаких символов, даже привычных звездочек. Хотя это и не является большой проблемой, некоторым пользователям по различным причинам хочется видеть хотя бы звездочки.
К счастью, соответствующий режим ввода пароля достаточно просто активировать. Все, что вам нужно сделать - это изменить следующую строку в файле /etc/sudoers:
Defaults env_reset
на строку
Defaults env_reset,pwfeedback
Теперь при вводе пароля в процессе работы с утилитой sudo будут отображаться звездочки.
Некоторые важные параметры команды sudo
Помимо параметра -u (который мы обсуждали в начале данной статьи) существует несколько других важных параметров команды sudo, которые достойны упоминания. Мы обсудим некоторые из них в данном разделе.
Параметр -k
Предположим, что вы только что выполнили команду посредством sudo и ввели свой пароль. Как вы знаете, по умолчанию sudo не будет спрашивать пароль в течение следующих 15 минут. А теперь предположим, что вам понадобилось предоставить кому-либо доступ к своему терминалу без возможности использования sudo. Что можно предпринять в этом случае?
К счастью, существует параметр -k , позволяющий принудительно завершить сессию sudo. А вот что написано о данном параметре на странице руководства sudo:
-k, --reset-timestamp
При использовании без команды позволяет сбросить кэшированные параметры пользователя. Другими словами, при следующем вызове sudo будет запрашиваться пароль. Данный параметр не требует ввода пароля и был добавлен специально для того, чтобы у пользователей имелась возможность убрать информацию о правах доступа sudo из файла.logout .
При использовании вместе с командой или требующим пароля параметром может потребоваться ввод пароля, так как в результате использования данного параметра кэшированная информация о правах доступа sudo игнорируется. В результате sudo снова предложит ввести пароль (в том случае, если это требуется политикой безопасности) и не будет обновлять кэшированную информацию о правах доступа.
Параметр -s
Может случиться так, что в процессе работы вам потребуется выполнить множество команд, требующих привилегий пользователя root, и вам не захочется вводить префикс sudo перед каждой из них. Также вам не захочется настраивать длительность сессии sudo путем редактирования файла конфигурации /etc/sudoers .
В этом случае вам может пригодиться параметр -s . Это описание данного параметра со страницы руководства sudo:
-s, --shell
Запустить командную оболочку, путь к бинарному файлу которой задан с помощью переменной окружения SHELL , если таковая существует, или командную оболочку, путь к бинарному файлу которой задан в параметрах учетной записи вызывающего пользователя. В случае использовании команды, она будет передана в эту командную оболочку для последующего исполнения посредством стандартного параметра -c . Если команды не задано, пользователю будет предоставлен доступ к запущенной интерактивной командной оболочке.
Итак, данный параметр выполняет следующие действия:
- Запускает новую командную оболочку, путь к бинарному файлу которой задан с помощью переменной окружения $SHELL . В том случае, если переменная окружения $SHELL имеет пустое значение, запускается командная оболочка, путь к бинарному файлу которой указан в строке с описанием параметров учетной записи текущего пользователя в файле /etc/passwd .
- Если вы передаете команду вместе с параметром -s (например, исполняя команду sudo -s whoami), то исполняется следующая команда: sudo /bin/bash -c whoami .
- Если вы не пытаетесь исполнить какую-либо свою команду (то есть, просто исполняете команду sudo -s), вы получаете доступ к интерактивной командной оболочке с привилегиями пользователя root.
Следует иметь в виду, что параметр -s предоставляет в ваше распоряжение командную оболочку с привилегиями пользователя root, но без окружения пользователя root - эта командная оболочка будет использовать ваш файл.bashrc . По сути, это означает, что, к примеру, при исполнении с помощью этой командной оболочки команды whoami будет выводиться ваше имя пользователя, а не root.
Параметр -i
Параметр -i похож на параметр -s , который мы только что обсуждали. Однако, между ними имеются некоторые отличия. Одно из ключевых отличий заключается в том, что параметр -i также предоставляет вам окружение пользователя root, поэтому ваш (пользовательский) файл.bashrc игнорируется. Это сравнимо с использованием учетной записи пользователя root без входа в систему под именем пользователя root. Кроме того, вам не придется вводить пароль пользователя root.
Важное замечание: помните о том, что существует также команда su , которая позволяет работать от лица других пользователей (по умолчанию вы становитесь пользователем root). Данная команда требует ввода пароля пользователя root. Для того, чтобы избежать необходимости ввода пароля этого пользователя, вы можете также использовать префикс sudo (то есть, команду sudo su); в этом случае вам придется ввести ваш пароль. Однако, команды su и sudo su имеют некоторые отличия; для того, чтобы разобраться с ними, а также ознакомиться со сравнением данных команд с командой sudo -i достаточно обратиться к обсуждению, доступному по данной ссылке .
Заключение
Я надеюсь, что вы хотя бы в общих чертах поняли принцип работы команды sudo, а также методику изменения ее стандартного поведения. Самостоятельно испытайте описанные модификации файла /etc/sudoers и ознакомьтесь с обсуждением (ссылка на которое приведена в предыдущем параграфе), если хотите узнать об этой команде немного больше.