Linux visudo команды редактора

Linux visudo команды редактора

Имеется встроенный список программ для редактирования, указанных при компиляции, которые использует visudo и которые могут быть переопределены посредством переменной editor в sudoers . По умолчанию этот список соотносится с расположением vi (1) в вашей системе, как определено сценарием configure . Обычно, visudo не учитывает переменные окружения EDITOR или VISUAL, если они не содержат программу-редактор из вышеупомянутого списка редакторов. Однако, если visudo сконфигурирован с флагом —with-enveditor или в sudoers установлена переменная enveditor , то visudo будет использовать любой редактор определенный при помощи EDITOR или VISUAL. Имейте в виду, что это может стать прорехой в защите, так как позволит пользователю выполнять любые программы просто установив значение EDITOR или VISUAL.

После редактирования visudo анализирует файл sudoers и не сохраняет изменения, если имеется синтаксическая ошибка. При обнаружении ошибки на экран будет выведена подсказка с указанием номера строки, на которой произошла ошибка, и пользователю будет предложено решить, что делать дальше, «What now?». Пользователь может ввести «e», для возврата в режим редактирования файла sudoers , «x», для выхода без сохранения внесенных изменений, или «Q», для выхода с сохранением сделанных им изменений. Опция Q должна использоваться крайне осторожно, так как если visudo в результате синтаксического анализа предполагает, что в файле имеются ошибки, то точно так-же будет считать sudo , в результате чего никто больше не сможет выполнять sudo прежде, чем ошибка будет исправлена. При указании «е», для продолжения редактирования файла sudoers после обнаружения синтаксической ошибки, курсор переместится на ту строку, где была обнаружена ошибка (если редактор поддерживает эту функцию).

ПАРАМЕТРЫ


СООБЩЕНИЯ ОБ ОШИБКАХ

Это означает, что кто-то в настоящий момент редактирует файл sudoers . «/etc/sudoers.tmp: Permission denied»

Вы выполняете visudo не как супер-пользователь (root). «Can’t find you in the passwd database»

Ваш идентификатор пользователя не найден в файле паролей. «Warning: undeclared Alias referenced near . «

Либо вы используете один из псевдонимов _Alias до их определения, либо вы имеете пользователя или имя машины описанное только буквами, набранными в верхнем регистре, цифрами и символами подчеркивания (‘_’). В последнем случае вы можете игнорировать предупреждения ( sudo не будет жаловаться). В -s (строгом) режиме эти сообщения будут считаться не предупреждениями, а ошибками.

ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ

EDITOR Используется visudo для указания используемого редактора VISUAL Используется visudo если EDITOR не определен

Источник

Редактирование файла sudoers в Ubuntu и CentOS

Разделение прав доступа – одна из наиболее важных парадигм безопасности, реализуемых в Linux и Unix-подобных операционных системах. Обычные пользователи работают с ограниченными правами; так сокращаются масштабы их влияния на их собственную среду и на операционную систему в целом.

Пользователь root имеет привилегии суперпользователя. Эта учетная запись администратора не имеет ограничений, которые присутствуют на учётных записях обычных пользователей. Другие пользователи могут выполнять команды с правами root в ряде отдельных случаев.

Читайте также:  Windows virtual memory options

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

Примечание: Данное руководство было выполнено на сервере Ubuntu 12.04, однако большинство современных дистрибутивов Linux будут вести себя аналогичным образом.

Для выполнения руководства нужно предварительно выполнить начальную настройку сервера:

Войдите на сервер как не-root пользователь.

Как получить права root

Есть три основных способа получить привилегии суперпользователя, которые варьируются по уровню сложности.

Вход как root

Проще всего, конечно, войти в систему как пользователь root.

При подключении через SSH укажите IP-адрес или имя хоста:

По запросу введите root-пароль.

Команда su

Постоянно использовать учётную запись root не рекомендуется, поскольку, имея абсолютные права доступа, можно совершенно случайно нанести системе непоправимый вред.

Потому в системе существует команда su, позволяющая обычному пользователю получать root-права в любой момент.

Примечание: Команда su – это сокращение от substitute user.

Итак, чтобы получить root-права, просто введите:

Система запросит пароль root-пользователя, после чего откроет доступ к сессии оболочки root-пользователя.

Выполнив все задачи, требующие прав root, можно вернуться в предыдущую сессию:

Команда sudo

Последний способ получения привилегий root – команда sudo.

Команда sudo позволяет выполнять отдельные команды с правами root без необходимости открывать новую сессию.

Примечание: В отличие от 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 это значение можно изменить, добавив в

Чтобы обновить настройки, введите:

Чтобы открыть /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. Это предотвращает использование потенциально опасных пользовательских путей.

Читайте также:  Wifiphisher для windows как пользоваться

Параметры настройки прав пользователей

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

  • 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 соответственно:

Читайте также:  M426fdn driver windows 10

sudo -u run_as_user command
sudo -g run_as_group command

По умолчанию sudo сохраняет учётные данные в одном терминале на некоторое время. Это означает, что в течение этого периода вам не придется вводить пароль снова.

Если в целях безопасности вы хотите сбросить этот таймер, используйте команду:

Чтобы узнать права пользователя, введите:

Эта команда выведет все права, указанные в файле /etc/sudoers для данного пользователя.

Если обычный пользователь попытается запустить команду администратора без префикса sudo, команда не сработает. Чтобы избежать необходимости повторного ввода команды, используйте функцию bash, которая повторяет команду:

Двойной восклицательный знак повторит последнюю команду.

Заключение

Теперь у вас есть базовые навыки работы с файлом sudoers и правами root.

Работая с правами суперпользователя, помните о том, что обычные пользователи не обладают такими правами по умолчанию из соображений безопасности. Не злоупотребляйте правами root, иначе можно случайно нанести системе непоправимый ущерб.

Источник

Настройка sudo под Linux

Этот текст не является переводом полного руководства. Если вы администрируете систему с большим количеством пользователей и сложным распределением полномочий, то очень советую почитать документацию. Но, если вам просто надо выдать определённому пользователю определённые права, то в этой заметке в скорее всего найдёте готовый рецепт.

Как редактировать sudoers (visudo)

Редактировать файл sudoers «вручную» — плохая практика. Для редактирования есть специальная команда visudo . Она сама знает, где расположен файл sudoers , и отследит, чтобы вы редактировали копия, файл всегда был целостным, а копия была удалена.

visudo позволяет использовать любой редактор. Например, вы можете использовать mcedit:

Если вы допустите ошибку, то, при выходе из редактора получите сообщение вида:

В этом случае, лучше ввести букву « e » и продолжить редактирование.

Настройка прав доступа sudo

Файл sudoers , обычно, содержит много комментариев. В каждой системе/дистрибутиве они различны. Имеет смысл ознакомиться с ними и, возможно, внести какие-то правки глобальных настроек.

Особое внимание следует обратить на директивы

за ними скрывается ещё куча всего интересного.

Но нас интересуют по-пользовательские настройки. Обычно для них есть отдельная часть в sudoers , которая может начинаться таким комментарием:

Дальше полномочия описываются строчками вида:

Простой пример

Это означает, что пользователь alex , может выполнить с правами root команду /bin/mount /media/n78 .

Обратите внимание, путь к команде mount указан полностью. Это важно! Если этого не сделать, то sudo работать не будет.

Теперь пользователь alex может выполнить команду

У него будет спрошен пароль (его, а не root).

Продвинутые правила sudo

Можно написать более сложные правила:

alex ALL=(ALL) ALL alex ALL=(root) NOPASSWD: /bin/mount /media/n78 alex ALL=(root) NOPASSWD: /bin/umount /media/n78

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

Флаги

Более полный пример с использованием флагов:

Флагов существует великое множество, смотрите документацию.

Приоритет правил

Опции применяются в том порядке в каком они указаны в файле конфигурации. Поэтому более общие правила должны идти вначале, а боле частные уточнения должны располагаться ближе к концу.

Проверка конфигурации

После того, как вы всё настроили, вы можете проверить, как sudo интерпретирует ваши настройки. Это очень удобно.

С их помощью вы можете легко найти ошибки или убедиться, что всё настроено правильно.

Источник

Оцените статью