Мне нужно отредактировать /etc/sudoers
сценарий, чтобы добавить / удалить что-то из белых списков.
Предполагая, что у меня есть команда, которая будет работать с обычным файлом, как я могу ее применить /etc/sudoers
?
Могу ли я скопировать и изменить его, а затем visudo
заменить оригинал измененной копией? Предоставляя свой собственный сценарий $EDITOR
?
Или можно просто использовать те же замки и cp
?
Вопрос больше в потенциальных проблемах, чем в поиске того, что работает.
echo "$USER ALL=NOPASSWD:/usr/bin/rsync" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/rsync')
.echo "$CONFIGLINE" | (EDITOR="tee -a" visudo)
-a
флаг дляEDITOR="tee"
: он добавит строку в файл, а не только перезапишет первую строку. Сначала я не заметил разницы и не мог понять, как добавить. Я надеюсь, что смогу найти людей, указав на это прямо ;-)Используйте для этого visudo с настраиваемым редактором. Это решает все условия гонки и проблемы "взлома" с решением Брайана.
Этот скрипт добавит строку «# Dummy change to sudoers» в конец sudoers. Никаких взломов и никаких гоночных условий.
Аннотированная версия, объясняющая, как это на самом деле работает:
источник
--enable-env-editor
, в противном случае он будет использовать переменную редактора только в том случае, если это одно из небольшого набора известных значений.sudo -E
из первой команды.Вы должны внести изменения во временный файл, затем использовать visudo -c -f sudoers.temp, чтобы подтвердить, что изменения действительны, а затем скопировать его поверх / etc / sudoers
источник
В Debian и его производных вы можете вставить собственный сценарий в
/etc/sudoers.d/
каталог с правами0440
- для получения дополнительной информации см. /Etc/sudoers.d/README .Это может помочь.
источник
visudo должен быть человеческим интерфейсом для редактирования
/etc/sudoers
. Вы можете добиться того же, заменив файл напрямую, но вы должны позаботиться о параллельном редактировании и проверке синтаксиса. Обратите внимание наr--r-----
разрешения.источник
Если вы
sudo
разрешаете добавлять записи/etc/sudoers.d
, вы можете использовать этот ответ от @ dragon788:https://superuser.com/a/1027257/26022
В основном вы используете
visudo
для проверки файла перед его копированием/etc/sudoers.d
, так что вы можете быть уверены, чтоsudo
никого не нарушаете .Это проверяет его и возвращает успех (0) , если это действительно, так что вы можете использовать его с
if
,&&
и другими операциями сценария булевыми. Как только вы подтвердите, просто скопируйте его,/etc/sudoers.d
и он должен работать. Убедитесь, что он принадлежит пользователю root и не доступен для записи другим пользователям.источник
Настройте собственный редактор. По сути, это будет сценарий, который принимает имя файла (в данном случае /etc/sudoers.tmp), изменяет и сохраняет его на месте. Так что вы можете просто записать в этот файл. Когда вы закончите, выйдите из скрипта, и visudo позаботится об изменении фактического файла sudoers за вас.
источник
#!/bin/sh; echo "# my changes to sudoers" >> $1; exit 0
Мне кажется, это работает.Множество ответов, я работал с sudo для yonks, но до сих пор не было необходимости автоматизировать конфигурацию установки. Я использовал сочетание некоторых из приведенных выше ответов, записав свою строку конфигурации в /etc/sudoers.d include location, поэтому мне не нужно изменять основной файл sudoers, а затем проверил этот файл на синтаксис, простой пример ниже:
Напишите свою строку во включаемый файл sudoers:
Убедитесь, что ваш включаемый файл sudoers прошел проверку синтаксиса visudo:
источник
Просто чтобы добавить дополнительную опцию к приведенным выше ответам, если состояние гонки не является серьезной проблемой, тогда можно использовать следующую команду, чтобы избежать ручного копирования измененного файла в
/etc/sudoers
Это гарантирует, что новый файл будет проверен и правильно установлен с обновлением разрешений.
Обратите внимание, что если в
/tmp/sudoers.new
файле есть ошибка,visudo
пользователю будет предложено ввести данные, поэтому рекомендуетсяvisudo -c -f /tmp/sudoers.new
сначала проверить ее .источник
Я думаю, что самое простое решение - это:
Создайте скрипт addudoers.sh
и вызовите его с пользователями, которых хотите добавить, как:
Для полного объяснения см. Этот ответ: Добавление пользователей в sudoers через сценарий оболочки
С уважением!
источник
Попробуйте повторить это. Однако вы должны запустить его в подоболочке. Пример:
sudo sh -c "echo \"group ALL=(user) NOPASSWD: ALL\" >> /etc/sudoers"
источник
Это сработало для меня, основываясь на том, что другие разместили здесь. Когда я использовал скрипт других людей, он открывал для меня visudo, но не вносил изменения. Это внесло необходимые изменения, чтобы разрешить всем пользователям, включая обычных пользователей, устанавливать java 7u17 для safari / firefox.
В конец файла sudoers добавлен% every blah blah blah. Мне пришлось запустить сценарий вот так.
Удачи: D
источник