Я пытаюсь создать скрипт после установки для Linux, и я хочу, чтобы скрипт редактировал файл sudoers, чтобы пользователям не нужно было делать sudo visudo
и редактировать его вручную.
В сценарии у меня есть:
if [[ ! `sudo -l -U "$user" 2>&1 | grep "ALL"` ]]; then
su -c "echo '$user ALL=(ALL) ALL' >> /etc/sudoers"
su -c "echo '$user ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers"
fi
проблема в том, что когда я sudo whoami
после запуска скрипта я получаю этот вывод:
sudo: >>> /etc/sudoers: синтаксическая ошибка в строке 31 ‹‹‹ sudo: ошибка синтаксического анализа в /etc/sudoers в строке 31 sudo: действительные источники sudoers не найдены, выход из sudo: невозможно инициализировать плагин политики
Как мне это сделать, не испортив файл sudoers?
EDIT: В соответствии с просьбой вот мой файл sudoers:
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
Имейте в виду, что невозможно выполнить cat /etc/sudoers
после запуска скрипта.
EDIT 2: решение состоит в том, чтобы определить $user как user=$(whoami)
sudoers
, очень реален и определенно актуален здесь, ИМХО. - person tripleee   schedule 29.04.2013