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)