Необходимо заставить редактирования во временный файл, затем использовать visudo-c-f sudoers.temp, чтобы подтвердить, что изменения допустимы и затем копируют его поверх/etc/sudoers
#!/bin/sh
if [ -f "/etc/sudoers.tmp" ]; then
exit 1
fi
touch /etc/sudoers.tmp
edit_sudoers /tmp/sudoers.new
visudo -c -f /tmp/sudoers.new
if [ "$?" -eq "0" ]; then
cp /tmp/sudoers.new /etc/sudoers
fi
rm /etc/sudoers.tmp
visudo, как предполагается, является интерфейсом пользователя для редактирования /etc/sudoers
. Можно достигнуть того же путем замены файла непосредственно, но необходимо заботиться сами о параллельном редактировании и проверке синтаксиса. Следите эти r--r-----
полномочия.
Настройте пользовательского редактора. В основном это будет сценарий, который принимает имя файла (в этом случае/etc/sudoers.tmp), и измените и сохраните это на месте. Таким образом, Вы могли просто выписать в тот файл. Когда Вы будете сделаны, выйдете из сценария, и visudo будет заботиться об изменении фактического sudoers файла для Вас.
sudo EDITOR=/path/to/my_dummy_editor.sh visudo