В вашей системе Linux есть файл под названием «sudoers». Это текстовый файл, который управляет самыми глубокими уровнями вашей системы разрешений. Он разрешает или запрещает пользователям получать доступ суперпользователя и сохраняет некоторые специальные настройки для судо .
Что такое файл sudoers?
Файл sudoers — это текстовый файл, который можно найти в каталоге «/etc» ( Contents
Что такое файл sudoers?
Linux здесь ). Его основная цель — контролировать работуsudo
на вашем компьютере и определять, какие пользователи и группы могут работать с правами суперпользователя.
Кроме того, файл sudoers также может разрешить определенному пользователю запускать команды от имени другого пользователя в системе.
Например, если у вас есть веб-сервер, вы можете настроить sudoers так, чтобы другие пользователи могли запускать команды только как «www-данные».
Также читайте: Что такое Doas и как его установить
Когда мне нужно редактировать файл sudoers?
Когда вы впервые устанавливаете систему Linux, например Ubuntu, программа установки автоматически добавит первого пользователя в файл sudoers. Это сделано для того, чтобы после установки можно было сразу запускать административные задачи с помощью команды sudo
.
Однако если вы создадите новую учетную запись пользователя, по умолчанию у нее не будет прав суперпользователя. Если вам нужно предоставить ему права суперпользователя, вам нужно будет отредактировать файл sudoers и добавить в него эту учетную запись пользователя.
Читайте также: Как проверить историю Sudo в Linux
Как редактировать файлы sudoers?
Никогда не редактируйте файл sudoers в обычном текстовом редакторе. Это может привести к одновременному редактированию и повреждению файлов, что потенциально може
Когда мне нужно редактировать файл sudoers?
s необходимо редактировать, запустивvisudo
в Терминале, например:
sudo visudo
Обратите внимание, что вам нужно использовать sudo
для запуска visudo
. Это откроет файл sudoers в текстовом редакторе по умолчанию в Терминале, которым по умолчанию является Nano.
Что можно сделать, изменив файл sudoers?
Как обсуждалось выше, основная задача файла sudoers — определить, какие пользователи и группы могут использовать sudo. Однако этот файл также содержит некоторые параметры, которые позволят вам настроить поведение sudo.
Некоторые из этих опций включают возможность изменения продолжительности тайм-аута повышения привилегий. Существуют также варианты изменения редактора visudo по умолчанию и базового усиления защиты, например, с помощью pty.
Изменить тайм-аут sudo
По умолчанию ввод пароля sudo повышает ваши разрешения до тех пор, пока вы не закроете оболочку или не выйдете. Это может быть небезопасно, и некоторые могут предпочесть вводить пароль каждый раз при использовании sudo.<
Как редактировать файлы sudoers?
/code>, как указано выше.- Создайте новую строку внизу документа и добавьте следующую строку:
Defaults timestamp_timeout=0
Это установит время ожидания sudo равным нулю секунд, поэтому у вас будут разрешения sudo в течение нуля секунд после выполнения первой команды. Если вы предпочитаете другой интервал, введите это значение в секундах.
Вы также можете установить время ожидания «-1», что дает вам бесконечный льготный период. Не делай этого. Это удобный способ однажды случайно уничтожить вашу систему.
- Нажмите Ctrl+ oдля сохранения и CtrlЧто можно сделать, изменив файл sudoers?тороны, если вы используете Vi или Vim, вы можете нажать ESC, а затем ввести
:wq
для выхода.
Ограничьте, кто может использовать Sudo и для чего
Если у вас есть несколько пользователей, обращающихся к одной и той же системе через оболочки, вы можете контролировать их доступ, задав значения в sudo.
Создать собственное правило для пользователей невероятно просто. Правило разрешений в файле sudoers выглядит примерно так:
username hostlist = (userlist) commandlist
- Поле
username
указывает, к какому пользователю в системе будет применяться это правило. hostlist
сообщает sudo применить это правило к списку системных хостов, на которых известно использованиеИзменить тайм-аут sudo
ает в качестве хоста только локальный компьютер.userlist
сообщает sudo, какую учетную запись пользователя может заменить поле имени пользователя.- Наконец,
commandlist
— это список, разделенный запятыми, который указывает, какие программы в системе может запускать этот пользователь.
Зная это, рассмотрим следующий пример:
ramces ALL=(ALL) ALL
Эта строка позволяет пользователю ramces подменять себя любым пользователем и запускать любую команду на любом хосте. Это связано с тем, что ALL
— это специальное значение в файле sudoers, означающее «без ограничений».
Однако это также означает, что устанавливать это правило для ваших пользователей опасно. Это связано с тем, что он позволяет пользователю запускать любую команду и получать доступ к любому файлу от имени любого пользователя.
Таким образом, более подходящее и безопасное правило может выглядеть примерно так:
ramces ALL=(root) ALL
При этом пользователь ramces по-прежнему может работать от имени пользователя root, но не может подменять себя другим пользователем.
Ограничение root-доступа для пользователей и групп
Для большего контроля вы можете добавить строку, подобную следующей, которая позволит только пользователю «ramces» запускать apt update
.
Поместите %
перед пользователем, и он определит группу. Строка ниже позволит каждому пользователю в группе «admin» иметь разрешения корневого уровня. Это будет группа, определенная группами разрешений вашей системы.
%admin ALL=(root) ALL
Усиление защиты sudoers с помощью use_pty
Другое использование файла sudoers — использование sudo только в ограниченной изолированной среде.
Это может быть невероятно полезно, если вы запускаете sudo на незащищенном компьютере, постоянно подключенном к Интернету. Зная это, вы можете использовать эту функцию, перейдя в файл «/etc/sudoers» и введя следующую строку кода:
Defaults use_ptОграничьте, кто может использовать Sudo и для чего
tist.ru/wp-content/uploads/2024/05/sudoers-edit-07-use-pty-option-e1651457439188.png" alt="Sudoers Edit Использовать параметр Pty">
Использование sudo без пароля
Другой параметр, который вы можете включить в файле sudoers, — возможность запускать sudo без пароля . Это может быть особенно полезно, если вы постоянно выполняете на своем компьютере команды суперпользователя.
Чтобы включить эту функцию, все, что вам нужно сделать, это добавить один тег в правило текущего пользователя:
ramces ALL = (root) NOPASSWD: ALL
Если вы заметили, основное отличие этого примера от приведенного выше — добавление NOPASSWD:
.
Изменить редактор visudo
Наконец, в зависимости от того, какую версию Linux вы используете, есть два основных способа сменить редактор.
Для Ubuntu вам нужно запустить команду терминала, указанную ниже:
sudo update-alternatives --config editor
Вы увидите что-то вроде следующего:
There are 4 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode 3 /usr/bin/vim.basic 30 manual mode 4 /usr/bin/vim.tiny 10 manual mode Press enter to keep the current choice[*], or type selection number: 3
Если вы хотите выбрать vim в качестве редактора visudo из набора по умолчанию nano, нажмите его номер выбора 3
, а затем нажмите Enter.
Для других версий Linux вам потребуется добавить новую строку в файл «~/.bashrc», как показано ниже:
export EDITOR="vim"
Затем сохраните файл. В этом случае для вашего редактора visudo будет выбран vim.
Поздравляем! Теперь вы знаете, как внести базовые изменения в файл sudoers. Мало того, теперь у вас есть базовое представление о том, как работает sudo. А также дополнительные параметры, которые можно включить через файл sudoers.<
Ограничение root-доступа для пользователей и групп
ux. Вы можете проверить Эта статья , где мы рассказываем о некоторых из лучших дистрибутивов Linux, которые вы можете установить сегодня.Часто задаваемые вопросы
1. Я получил ошибку «(имя пользователя) отсутствует в файле sudoers». Моя установка sudo сломана?
Вовсе нет. Это происходит всякий раз, когда у пользователя, которого вы используете, нет записи правила в файле sudoers. Это может быть либо то, что сам пользователь не входит в sudoers, либо его нет ни в одной группе, которая есть в sudoers.
Зная это, исправить проблему относительно легко. Сначала вам необходимо войти в свою учетную запись root. Это можно сделать, набрав su
, а затем введя пароль root. Затем вы можете ввести sudo visudo
, чтобы войти в файл sudoers.
После этого последнее, что вам нужно сделать, — это добавить свое имя пользователя в файл sudoers. Например, это фрагмен
Усиление защиты sudoers с помощью use_pty
нием alice:alice ALL=(root) ALL
2. Какие проблемы возникают при создании собственных пользовательских правил?
Одна из проблем, с которой вы можете столкнуться при создании собственных правил, связана с подстановочными знаками. Это символы, которые можно использовать для создания правила, применимого к нескольким случаям. Например, это правило позволяет администратору группы запускать cat
в любом файле в «/var» от имени пользователя root.
%admin ALL: (root) /bin/cat /var/*
Проблема в том, что этот подстановочный знак также может заменять пробелы. Таким образом, такая настройка также может разрешить такие команды:
sudo caИспользование sudo без пароля
n>log.1 /home/bob/secret.txt
По этой причине при создании правил рекомендуется избегать использования подстановочных знаков. Вместо этого вы можете использовать su
для одноразовых задач или установить права доступа к файлу, чтобы sudo не требовалось.
3. Можно ли запретить sudo отправлять системную почту всякий раз, когда я запускаю root?
Да! Вы можете легко запретить sudo отправлять почту, используя тег NOMAIL. Например, это запись правила для моей учетной записи пользователя в файле sudoers:
ramces ALL: (root) NOMAIL: ALL
Изображение предоставлено: герой с компьютерной схемой от 123RF