我正在尝试为 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:在第 31 行附近的 /etc/sudoers 中解析错误 sudo:找不到有效的 sudoers 源,退出 sudo:无法初始化策略插件
如何在不破坏我的 sudoers 文件的情况下执行此操作?
编辑: 这里要求的是我的 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
请注意,脚本运行后无法执行此操作。
编辑 2:
解决方案是将 $user 定义为user=$(whoami)