Зачем и как редактировать файл Sudoers в Linux

В вашей системе Linux или macOS есть файл под названием «sudoers», который контролирует самые глубокие уровни вашей системы разрешений. Он разрешает или запрещает пользователям получать доступ суперпользователя и содержит некоторые особые настройки для sudo.

Что такое файл sudoers?

Файл sudoers — это текстовый файл. который находится в «/etc/sudoers». Он контролирует, как sudo работает на вашем компьютере. Вы, вероятно, знакомы с основной ролью sudo в повышении привилегий вашей текущей учетной записи до root, суперпользователя во всех Unix-системах. Это позволяет вашим пользователям выполнять команды, которые в противном случае были бы запрещены.

Когда мне нужно редактировать файл sudoers?

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

Как я могу редактировать sudoers?

Никогда отредактируйте файл sudoers в обычном текстовом редакторе. Это может привести к одновременному редактированию и повреждению файлов, что потенциально может лишить администратора доступа. Sudoers необходимо отредактировать, запустив visudo в Терминале, например:

 sudo visudo 

Примечание что вам нужно использовать sudo для запуска visudo . Это откроет файл sudoers в текстовом редакторе по умолчанию в Терминале (по умолчанию nano).

Что может сделать изменение файла sudoers?

Основная задача файла sudoers — определение того, какие пользователи могут использовать sudo для чего. Он также содержит некоторые простые настройки, которые мы можем сначала настроить, чтобы понять, как работает visudo.

Изменить время ожидания sudo

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

1. Запустите sudo visudo , как указано выше.

2. Нажмите Alt + /, чтобы перейти к концу документа. Если вы используете Vi или Vim, вместо этого нажмите Shift + G .

3. Создайте новую строку внизу документа и добавьте следующую строку:

 По умолчанию timestamp_timeout = 0 

Это установит ваш sudo таймаут до нуля секунд, поэтому у вас будут разрешения sudo в течение нуля секунд после выполнения первой команды. Если вы предпочитаете другой интервал, введите вместо него это значение в секундах..

Вы также можете установить время ожидания на «-1», что дает вам бесконечный период отсрочки. Не делай этого. Это удобный способ однажды случайно взорвать вашу систему.

4. Нажмите Ctrl + o для сохранения и Ctrl + x для выхода.

Ограничьте, кто может использовать sudo и для чего

Основная цель файла sudoers — контролировать, какие пользователи могут запускать sudo. Без sudo пользователи не могут повысить свои разрешения. Если у вас есть несколько пользователей, обращающихся к одной и той же системе через оболочки, вы можете контролировать их доступ, задав значения в sudo.

Каждый файл sudoers будет иметь следующую строку:

 root ALL = (ALL) ALL 

Это позволяет пользователю root на ВСЕ хосты, использующие ВСЕ пользователей для выполнения ВСЕХ команд. ALL — это специальное значение в файле sudoers, означающее «без ограничений». Синтаксис следующий:

 username hostlist = (userlist) commandlist 

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

 alexander ALL = (ALL) ALL 

Для большего контроля вы можете добавить строку, подобную следующей, которая разрешает только пользователю «alexander» запускать apt-get обновление.

 alexander ALL = (ALL)/usr/bin/apt-get update 

Поместите «%» перед пользователем, и он определит группу. Строка ниже позволит каждому пользователю в группе «admin» иметь разрешения корневого уровня. Это будет группа, определенная вашими группами разрешений ОС.

% admin ALL = (ALL) ALL 

Смена редактора visudo

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

Для Ubuntu вам нужно запустить команду терминала ниже:

 sudo update-alternatives –config editor 

Вы увидите что-то вроде следующего:

 Существует 4 варианта альтернативного редактора (при условии/usr/bin/ редактор).  Статус приоритета пути выбора ----------------------------------------------  -------------- * 0/bin/nano 40 автоматический режим 1/bin/ed -100 ручной режим 2/bin/nano 40 ручной режим 3/usr/bin/vim.basic 30  ручной режим 4/usr/bin/vim.tiny 10 ручной режим Нажмите Enter, чтобы сохранить текущий выбор [*], или введите номер выбора: 3 

Если вы хотите выбрать vim в качестве редактора visudo по умолчанию из nano, вы должны нажать его номер выбора 3 , затем нажать Enter.

Для других версий Linux вы захотите добавить новую строку в ваш файл «~./bashrc», как показано ниже:

 export  EDITOR = "vim" 

Затем сохраните файл. Это установит ваш редактор visudo на vim.

Заключение

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

Полезна ли эта статья?
  • Facebook
  • Твитнуть

13 комментариев

  1. Является ли «sudoers ”Файл функции ядра или отдельных дистрибутивов? Я использую PCLinuxOS, и в нем нет файла «sudoers».

    1. Итак, когда вы запускаете sudo visudo, что происходит?

      1. Я получаю «sudo — команда не найдена », и мой диспетчер пакетов показывает« sudo »как« не установленный ».
        Когда я запускаю« visudo »как root, открывается пустой файл sudoers.

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

        1. Вы также может запускать «su» вместо «sudo», которое должно быть в каждом дистрибутиве. Вы запустите их как две отдельные команды: введите «su», нажмите Enter, введите пароль, запустите «visudo» из корневой оболочки. Вы также можете войти в систему с правами root, а затем запустить visudo, если этот рабочий процесс вам более знаком.

    2. Установлен ли у вас пакет «sudo»? Возможно, вам сначала придется установить «sudo». В этом случае вам, возможно, придется также добавить себя в файл «sudoers» (как указано выше) или добавить себя в группу «wheel» (я думаю, наиболее часто). Для всего вышеперечисленного вам потребуется используйте «su» для работы как root, пока у вас не будет доступа sudo. После того, как вы обернете его, это станет более понятным!

  2. У меня есть один на Mint, но не обманул.

  3. Я единственный, кто использует и когда-либо будет использовать мой компьютер. Есть ли у меня какие-либо причины редактировать файл sudoers?

    1. В однопользовательских системах, таких как ваша собственная, нет особых причин для настройки файла sudoers. Вы правы, полагая, что файл sudoers в первую очередь предназначен для управления несколькими пользователями на одном компьютере.

  4. Есть ли способ получить PDF-версию этой статьи? Мне он понравился, и я хочу сохранить ссылку на него для использования в будущем. (Зачем и как редактировать файл Sudoers в Linux)

    Рик

    1. Почему бы вам просто не добавить его в закладки?

    2. Есть отличный инструмент под названием Print Friendly. Вы можете пользоваться сайтом, но у меня есть расширение для браузера. Он сохраняет веб-сайты в виде файлов PDF, которые легко распечатать, с удалением добавлений и лишних изображений. Это также дает вам полный контроль над тем, какие элементы страницы удаляются.

      САЙТ: https://www.printfriendly.com/

  5. Разве sudo не установлен по умолчанию на ВСЕХ дистрибутивах Linux? … или это только разновидности Debian/Ubuntu? … (Я никогда не видел и не использовал sudo на своих машинах Fedora или CEntOS … ни на моем компьютере OpenSuSE, просто ноутбук Linux Mint, который у меня есть)… ..Я думаю, что, как и «X11 ″… ..» crond… ..cups или modprobe, они будут задействованы при стандартной, простой установке любого дистрибутива Linux. По крайней мере, так я понял?…

    1. «Разве sudo не установлен по умолчанию для ВСЕХ дистрибутивов Linux? »
      По-видимому, нет. Я использую PCLinuxOS, а sudo не установлен по умолчанию, но iy доступен для установки из репозиториев. Однако PCLOS допускает явный вход в систему root, поэтому sudo не требуется для выполнения задач администратора.

Комментарии закрыты.


Является ли файл «sudoers» функцией ядра или отдельных дистрибутивов? Я использую PCLinuxOS, и в нем нет файла «sudoers».


Итак, когда вы запускаете «sudo visudo», что происходит?


Я получаю сообщение «sudo — command not found», и мой менеджер пакетов показывает «sudo» как не установленный.
Когда я запускаю visudo от имени пользователя root, открывается пустой файл sudoers.

За годы использования Linux я редко использовал команду «sudo». Я предпочитаю явно входить в систему как root для выполнения любых задач администратора.


Вы также можете запустить «su» вместо «sudo», которое должно быть в каждом дистрибутиве. Вы запустите их как две отдельные команды: введите «su», нажмите Enter, введите пароль, запустите «visudo» из корневой оболочки. Вы также можете войти в систему с правами root, а затем запустить visudo, если это рабочий процесс, с которым вы более знакомы.


Установлен ли у вас пакет sudo? Возможно, вам сначала придется установить «sudo». В этом случае вам, возможно, придется также добавить себя в файл «sudoers» (как указано выше) или добавить себя в группу «wheel» (я думаю, наиболее часто). Для всего вышеперечисленного вам потребуется используйте «su» для работы как root, пока у вас не будет доступа sudo. После того, как вы обдумаете его, это станет более понятным!


У меня есть один на Mint, но я не обманул его.


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


В однопользовательских системах, таких как ваша собственная, нет особых причин для изменения файла sudoers. Вы правы, полагая, что файл sudoers в первую очередь предназначен для управления несколькими пользователями на одном компьютере.


Есть ли способ получить PDF-версию этой статьи? Мне он понравился, и я хочу сохранить ссылку на него для использования в будущем. (Почему и как редактировать файл Sudoers в Linux)

Рик


Почему бы вам просто не добавить его в закладки?


Есть отличный инструмент под названием Print Friendly. Вы можете пользоваться сайтом, но у меня есть расширение для браузера. Он сохраняет веб-сайты в виде файлов PDF, которые легко распечатать, с удалением добавлений и лишних изображений. Это также дает вам полный контроль над тем, какие элементы страницы удаляются.

САЙТ: https://www.printfriendly.com/


Разве sudo не установлен по умолчанию на ВСЕХ дистрибутивах Linux?… или это просто разновидности Debian/Ubuntu?…. (я никогда не видел и не использовал sudo на своих машинах Fedora или CEntOS…… ни на моем компьютере с OpenSuSE, а только на ноутбуке с Linux Mint, который у меня есть)… ..Я думаю, что так же «X11 ″… ..» crond »… ..cups или modprobe, они будут задействованы при стандартной, простой установке любого дистрибутива Linux. По крайней мере, я так понял?…


«Разве sudo не установлен по умолчанию на ВСЕХ дистрибутивах Linux?»
По-видимому, нет. Я использую PCLinuxOS, а sudo не установлен по умолчанию, но iy доступен для установки из репозиториев. Однако PCLOS допускает явный вход в систему с правами root, поэтому sudo не требуется для выполнения задач администратора.



Почему в системе есть/etc/sudoers.d? Как мне его отредактировать?

В прошлый раз я спросил об их риске (в/etc/sudoers):

  user_name ALL =  (ВСЕ)/usr/bin/vim/etc/httpd/confs/httpd.conf% имя_группы ALL = (ВСЕ)/usr/bin/vim/etc/httpd/confs/httpd.conf  

Пока я думал об этой проблеме, я обнаружил каталог /etc/sudoers.d . Файлы в каталоге должны иметь функции, аналогичные/etc/sudoers (это означает, что приведенные выше сценарии по-прежнему проблематичны даже в/etc/sudoers.d), и, однако, в одной статье говорилось, что мы не должны использовать каталог, потому что мы не можем использовать visudo для редактирования файлов в нем. То есть мы теряем право использовать sudo , если допустили ошибку в каталоге.

Если это правда, то почему у нас /etc/sudoers.d ? Или у нас есть хороший способ редактировать файлы в /etc/sudoers.d ?


Изменения, внесенные в файлы в /etc/sudoers.d , останутся в силе после обновления системы. Это может предотвратить блокировку пользователей при обновлении системы. Ubuntu, как правило, нравится такое поведение. Другие дистрибутивы также используют этот макет.

По моему опыту, правила для файлов в этом каталоге более свободны, чем для /etc/sudoers . Это включает:

  • Ошибки в файле не привели к сбою sudo . Однако файл был проигнорирован.
  • Правила разрешений кажутся менее строгими. Это позволяет соответствующей группе или другой группе читать файл. Я не верю, что это было возможно с /etc/sudoers . Разрешения на запись должны быть ограничены root для обеспечения безопасности. Текущая версия sudo для Ubuntu разрешает чтение для группы или других пользователей. (Эта возможность позволяет проверять доступ sudo без необходимости доступа root.)

Команда visudo по умолчанию имеет значение только / и т.д./sudoers . Он будет редактировать и проверять любой файл, указанный вами с помощью параметра -f . Я использую эту возможность для редактирования файлов, которые будут автоматически установлены как /etc/sudoers или в /etc/sudoders.d . Однако определения из других файлов могут не быть найдены. Лучше всего сделать файл независимым.

Возможность иметь автономные файлы упрощает для приложения включение возможности sudo при установке и удаление их, когда оно не установлено. Инструменты автоматической настройки также могут использовать эту возможность.

Я использовал эту возможность, чтобы изолировать изменения, необходимые для предоставления доступа определенным группам пользователей в определенных системах.


68

Да, вы можете использовать visudo для редактирования этих файлов. Все, что вам нужно сделать, это указать имя файла, который вы хотите отредактировать, с помощью параметра -f . Например:

  visudo -f/etc/sudoers.d/somefilename  

Или, если необходимо:

  sudo visudo -f/etc/sudoers.d/somefilename

Документация

Из man visudo :

-f sudoers
Укажите и альтернативное расположение файла sudoers. С помощью этой опции visudo отредактирует (или проверит) выбранный вами файл sudoers вместо стандартного/etc/sudoers. Используемый файл блокировки — это указанный файл sudoers с добавленным к нему «.tmp». Только в режиме только проверки аргумент -f может быть «-», что означает, что sudoers будут считываться из стандартного ввода.

В итоге:

  1. Синтаксис: И visudo , и visudo -f выполнить ту же проверку синтаксиса .

  2. Разрешения/владение: как функция, добавленная в помогают в администрировании больших систем, файлы, редактируемые с помощью visudo -f , не проверяются на принадлежность или разрешения: это позволяет проверять синтаксис файла в автономном режиме или как часть системы контроля версий.

Зачем использовать /etc/sudoers.d/

Обычно /etc/ sudoers находится под контролем менеджера пакетов вашего дистрибутива. Если вы внесли изменения в этот файл, и диспетчер пакетов хочет обновить его, вам придется вручную проверить изменения и утвердить, как они объединяются в новую версию. Помещая локальные изменения в файл в каталоге /etc/sudoers.d/, вы избегаете этого ручного шага, и обновления могут выполняться автоматически.

Когда это происходит sudo игнорировать файл в /etc/sudoers ?

Если ваш /etc/sudoers файл содержит строку:

  #includedir/etc/sudoers.d

затем sudo будет читать файлы в каталоге /etc/sudoers.d .

Исключения:

  1. Файлы, имена которых заканчиваются на ~
  2. Файлы, имена которых содержат символ .

Это сделано (а) для удобства менеджеров пакетов, а также (б) для того, чтобы файлы резервных копий из редакторов игнорировались.

Улучшите этот ответ
отредактировано 01 сентября 2016 в 20:53

iv>

ответил 25 января ’15 в 06:33
  • Спасибо, но у меня есть одно сомнение. Безопасно ли visudo -f ? — aob 25 янв., В 18:41
  • 5
    Да, visudo -f редактирует безопасно, как и обычный visudo . Вот почему у нас есть visudo и почему он предоставляет параметр -f . — John1024, 25 янв., В 18:44
  • Замечательное примечание о том, как разрешения игнорируются при использовании -f , так как это может быть байтом кого-то, кто затем скопирует его в/etc/sudoers.d/без их двойной проверки. — dragon788, 08 дек. ’16 в 22:02
  • 1
    СПАСИБО за раздел исключений. Я назвал свой файл чем-то вроде /etc/sudoers.d/mysudorules.sudo и, хоть убей, не мог понять, почему внутренние правила не применялись, до того, как прочитал ваш ответ. — Зарот 26 апр. ’18 в 10:11
  • 1
    Спасибо, что упомянули исключения. Мой файл в /sudoers.d/mysite.co.uk не работал и после переименование в mysite работает! 🙂 — J86 26 окт. ’18 в 22:39
| показать 1 дополнительный комментарий

Да, вы можете использовать visudo для редактирования этих файлов. Все, что вам нужно сделать, это указать имя файла, который вы хотите отредактировать, с помощью параметра -f . Например:

  visudo -f/etc/sudoers.d/somefilename  

Или, если необходимо:

  sudo visudo -f/etc/sudoers.d/somefilename

Документация

Из man visudo :

-f sudoers
Укажите и альтернативное расположение файла sudoers. С помощью этой опции visudo отредактирует (или проверит) выбранный вами файл sudoers вместо стандартного/etc/sudoers. Используемый файл блокировки — это указанный файл sudoers с добавленным к нему «.tmp». Только в режиме только проверки аргумент -f может быть «-», что означает, что sudoers будут считываться из стандартного ввода.

В итоге:

  1. Синтаксис: И visudo , и visudo -f выполнить ту же проверку синтаксиса .

  2. Разрешения/владение: как функция, добавленная в помогают в администрировании больших систем, файлы, редактируемые с помощью visudo -f , не проверяются на принадлежность или разрешения: это позволяет проверять синтаксис файла в автономном режиме или как часть системы контроля версий.

Зачем использовать /etc/sudoers.d/

Обычно /etc/ sudoers находится под контролем менеджера пакетов вашего дистрибутива. Если вы внесли изменения в этот файл, и диспетчер пакетов хочет обновить его, вам придется вручную проверить изменения и утвердить, как они объединяются в новую версию. Помещая локальные изменения в файл в каталоге /etc/sudoers.d/, вы избегаете этого ручного шага, и обновления могут выполняться автоматически..

Когда sudo игнорирует файл в /etc/sudoers ?

Если ваш Файл /etc/sudoers содержит строку:

  #includedir/etc/sudoers.d

, затем sudo будет читать файлы в каталоге /etc/sudoers.d .

Исключения:

  1. Файлы, имена которых заканчиваются на ~
  2. Файлы, имена которых содержат . символ

Это сделано (а) для удобства менеджеров пакетов, а также (б) для того, чтобы файлы резервных копий из редакторов игнорировались.


21

почему у нас/etc/sudoers.d?

Потому что автоматизированным инструментам (таким как Chef или Puppet) проще помещать отдельные файлы в этот каталог, чем вносить изменения в /etc/sudoers , который может быть хрупким.

Th Файлы e в /etc/sudoers.d (по сути) объединены. Вы увидите несколько других экземпляров этого шаблона в /etc , например /etc/cron.d и /etc/logrotate .d .

Улучшите этот ответ
ответил 25 янв. в 16:35
  • Я не знал, что есть другие подобные каталоги. Спасибо. — aob 25 янв. ’15 в 16:50
добавить комментарий |

почему у нас/etc/sudoers.d?

Потому что автоматизированным инструментам (таким как Chef или Puppet) проще помещать отдельные файлы в этот каталог, чем вносить изменения в /etc/sudoers , которые могут быть хрупкими.

Файлы в /etc/sudoers.d (по сути) объединены. Вы увидите несколько других экземпляров этого шаблона в /etc , например /etc/cron.d и /etc/logrotate .d .


16

Еще одно преимущество использования visudo -f , как упоминалось в некоторых ответах, заключается в наличии соответствующей опции -c или - check , который проверяет, что у вас нет недействительной информации в файле sudoers.d или любом другом файле, который вы, возможно, захотите поместить в sudoers.d. Это ДЕЙСТВИТЕЛЬНО удобно в случаях, упомянутых с использованием автоматизированных инструментов, поскольку вы можете запустить, например,

  sudo visudo -c -q -f/home/myuser/mysudoers &&  sudo chmod 600/home/myuser/mysudoers &&  sudo cp/home/myuser/mysudoers/ и т.д./sudoers. d/mysudoers  

Это автоматически проверяет файл (нет вывода из-за -q), и только если это НЕ возвращает ошибку (выход 1 означает недопустимый файл sudoers), он будет скопируйте файл в sudoers.d, таким образом вы можете создать файл и работать с ним без необходимости исправлять его с первого раза (используя sudo visudo -f/etc/sudoers.d/myfile должен быть успешным, иначе он отбрасывает содержимое, если вы его не исправляете).

Кроме того, предупреждение относительно этих утверждений из других ответов.

По моему опыту, правила для файлов в этом каталоге более свободны, чем для/etc/sudoers. Это включало:

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

Файлы в/etc/sudoers.d должны придерживаться того же синтаксиса, что и/etc/sudoers, потому что под обложками система просто объединяет вместе все файлы, причем последний из них находится в «выигрышном», если есть несколько записей для одной и той же единственной настройки.

Если разрешения ужасно неверны (доступны для записи всем) на файлы в/etc/sudoers.d/, то они игнорируются, это может быть причиной того, что недействительные файлы не просматриваются, иначе вы можете серьезно нарушить команду sudo , имея недопустимый sudoers.d файл с правильными разрешениями.

Вы можете разрешить всем файлам sudoers быть доступными для чтения, если вы случайно разрешите ‘other’ разрешение на запись, необходимое sudo как другому пользователю, или из корневого терминала запустите эту команду . Это также может сломаться, если файл принадлежит кому-либо, кроме root: root.

  sudo chmod 644/etc/sudoers.d/mysudoerssudo chown root: root/etc/sudoers  .d/mysudoers  

Я только что подтвердил, что если я запустил chmod o + w/etc/sudoers.d/vagrant , я больше не смогу sudo как бродячий пользователь, он запрашивает у меня мой пароль, а затем терпит неудачу.

Когда я запускал sudo -l для просмотра разрешений примененных команд от имени другого действующего пользователя sudo , Я также получил предупреждение о правах доступа к файлам. Это та же самая команда, которую я использовал для подтверждения того, что «бродячий» пользователь потерял sudo, когда я применил разрешения o + w к файлу, давая этому пользователю разрешения sudo.

Улучшить этот ответ
отредактировал 08 декабря 2016 в 22:04
ответил 16 января ’16 в 16:45
  • Эти разрешения неверны. На sudoers должно быть 440. d files — FilBot3 23 ноя. ’20 в 06:10
добавить комментарий |

Еще одно преимущество использования visudo -f , как упоминалось в некоторых ответах, заключается в наличии соответствующей опции -c или - отметьте , чтобы убедиться, что у вас нет недопустимой информации в файле sudoers.d или любом другом файле, который вы, возможно, захотите поместить в sudoers. d. Это ДЕЙСТВИТЕЛЬНО удобно в случаях, упомянутых с использованием автоматизированных инструментов, поскольку вы можете запустить, например,

  sudo visudo -c -q -f/home/myuser/mysudoers &&  sudo chmod 600/home/myuser/mysudoers &&  sudo cp/home/myuser/mysudoers/ etc/sudoers.d/mysudoers  

Это автоматически проверяет файл (нет вывода из-за -q), и только если это НЕ возвращает ошибку (выход 1 означает недопустимый файл sudoers ), затем он скопирует файл в sudoers.d, таким образом вы можете создать файл и работать с ним без необходимости исправлять его с первого раза (используя sudo visudo -f/etc/sudoers.d/ myfile должен быть успешным или он отбрасывает содержимое, если вы его не исправляете).

Кроме того, предупреждение относительно этих утверждений от другие ответы.

По моему опыту, правила для файлов в этом каталоге более жесткие, чем для/etc/sudoers. Это включало:

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

Файлы в/etc/sudoers.d должны придерживаться того же синтаксиса, что и/etc/sudoers, потому что под обложками система просто объединяет вместе все файлы, причем последний из них находится в «выигрышном», если есть несколько записей для одной и той же единственной настройки.

Если разрешения ужасно неверны (доступны для записи всем) на файлы в/etc/sudoers.d/, то они игнорируются, это может быть причиной того, что недействительные файлы не просматриваются, иначе вы можете серьезно нарушить команду sudo , имея недопустимый sudoers.d файл с правильными разрешениями.

Вы можете разрешить всем файлам sudoers быть доступными для чтения, если вы случайно разрешите ‘other’ разрешение на запись, необходимое sudo как другому пользователю, или из корневого терминала запустите эту команду . Это также может сломаться, если файл принадлежит кому-либо, кроме root: root.

  sudo chmod 644/etc/sudoers.d/mysudoerssudo chown root: root/etc/sudoers  .d/mysudoers  

Я только что подтвердил, что если я запустил chmod o + w/etc/sudoers.d/vagrant , я больше не смогу sudo как бродячий пользователь, он запрашивает у меня мой пароль, а затем терпит неудачу.

Когда я запускал sudo -l для просмотра разрешений примененных команд от имени другого действующего пользователя sudo , Я также получил предупреждение о правах доступа к файлам. Это та же самая команда, которую я использовал, чтобы подтвердить, что «бродячий» пользователь потерял sudo, когда я применил разрешения o + w к файлу, давая этому пользователю разрешения sudo.


6

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

Если ваши строки работают в sudoers, но не в sudoers.d, попробуйте переместить #include или изменить порядок ваших файлов sudoers.d ( с помощью префикса с номером). Кажется, что самое конкретное должно быть первым в файле.

У меня было что-то вроде:

  something ALL = (ALL): somecommandsomebody  ALL = (somethingelse) NOPASSWD: somecommand  

И второй не имел никакого эффекта, потому что первый уже совпал. NOPASSWD — это не условие, а способ изменить действие.

И это было неочевидно, потому что его не было в одном файле из-за каталога sudoers.d.

Улучшить этот ответ
ответил 7 ноября ’17 в 12:45
добавить комментарий |

Просто короткое дополнение к любому общему ответу … ни один из других ответов не устранил мою проблему, а именно этот порядок имеет значение.

Если ваши строки работают в sudoers, но не в sudoers.d, попробуйте переместить #include или изменить порядок файлов sudoers.d (поставив перед ними номер). Кажется, что самое конкретное должно быть первым в файле.

У меня было что-то вроде:

  something ALL = (ALL): somecommandsomebody  ALL = (somethingelse) NOPASSWD: somecommand  

И второй не имел никакого эффекта, потому что первый уже совпал. NOPASSWD — это не условие, а способ изменить действие.

И это было неочевидно, потому что его не было в одном файле из-за каталога sudoers.d.

Оцените статью
logicle.ru
Добавить комментарий