root@debian:/home/debian8# cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
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
# 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
行27では、#文字が1つだけ削除され、元の形式は次のとおりです。
#includedir /etc/sudoers.d
#文字だけを削除しました。
root@debian:/home/debian8# ls /etc/sudoers.d
myRules README
root@debian:/home/debian8# cat /etc/sudoers.d/myRules
debian8 ALL=(ALL:ALL) NOPASSWD:ALL
どうすれば修正できますか?
答え1
#includedir /etc/sudoers.d
コメントではなく#includedir
指示です。ハッシュ記号はその一部です。もう一度追加してください。
答え2
man sudoers
何を使うべきかによると@includedir
:
sudoersに別のファイルを含める@includeおよび@includedirディレクティブを使用して、現在解析中のsudoersファイル内に他のsudoersファイルを含めることができます。 1.9.1以前のsudoバージョンとの互換性のために、#includeと#includedirも許可されています。
@includedirディレクティブを使用すると、システムパッケージマネージャは、パッケージのインストールの一部としてsudoersファイルルールを配置できるsudoers.dディレクトリを作成できます。たとえば、次のようになります。
@includedir /etc/sudoers.d
sudoは現在のファイルの処理を一時停止し、/etc/sudoers.dの各ファイルを読み込み、「~」で終わるか、「.」を含むファイル名はスキップします。パッケージマネージャまたはエディタの一時/バックアップファイルに問題が発生しないように文字を使用してください。ファイルは語彙順に解析されます。つまり、/etc/sudoers.d/01_first は /etc/sudoers.d/10_second より先に解決されます。ソートは数値ではなく語彙なので、/etc/sudoers.d/1_whoopsは/etc/sudoers.d/10_secondの後にロードされます。ファイル名の前にゼロを一貫して使用すると、これらの問題を回避できます。ディレクトリ内のファイルを解析した後、@includedirディレクティブを含むファイルに制御権が返されます。
@includeを介して含まれているファイルとは異なり、visudoは構文エラーがない限り@includedirディレクトリ内のファイルを編集しません。 -fフラグでvisudoを実行してファイルを直接編集することはできますが、他のファイルにも存在するエイリアスのオーバーライドをキャプチャすることはできません。