質問: システムに/etc/sudoers.dがあるのはなぜですか?編集するにはどうすればいいですか。 前回、私はこれらのリスクについて尋ねました(/ etc/sudoersにあります)。 user_name all=(all) /usr/bin/vim /etc/httpd/confs/httpd.conf %group_name all=(all) /usr/bin/vim /etc/httpd/confs/httpd.conf この問題について考えていたときに、/ etc/sudoers.dディレクトリが見つかりました。ディレクトリ内のファイルは/ etc/sudoersに似た機能を持つべきです(上のスクリプトは/etc/sudoers.dでも問題があることを意味します)が、visudoを使用してファイルを編集することはできないため、このディレクトリを使用しないでくださいその中に。つまり、ディレクトリを間違えるとsudoを使う権利がなくなります。それが本当なら、なぜ私たちは/ etc/sudoers.dを持っているのですか?それとも、/ etc/sudoers.dにあるファイルを編集する良い方法はありますか?
回答: はい、visudoを使ってこれらのファイルを編集することができます。あなたがしなければならないのは-fオプションで編集したいファイルの名前を指定することだけです。例えば:visudo -f /etc/sudoers.d/somefilename または、必要に応じてsudo visudo -f /etc/sudoers.d/somefilename ドキュメンテーションman visudoから: -f sudoers sudoersファイルの場所を指定して代替します。このオプションを指定すると、visudoはデフォルトの/ etc/sudoersの代わりにあなたが選んだsudoersファイルを編集(またはチェック)します。使用されるロックファイルは、指定されたsudoersファイルに「.tmp」を追加したものです。チェック専用モードでのみ、-fの引数は " - "になります。これはsudoersが標準入力から読み込まれることを示します。 要約すれば: 構文:visudoとvisudo -fは同じ構文検査を実行します。 権限/所有権:大規模システムの管理を補助する機能 として追加された 、visudo -fの下で編集されたファイル所有権やパーミッションのチェックは行われません。これにより、ファイルの構文チェックをオフラインで、またはリビジョン管理システムの一部として行うことができます。 なぜ/etc/sudoers.d/を使うのか通常/etc/sudoersはあなたのディストリビューションのパッケージマネージャの管理下にあります。そのファイルに変更を加え、パッケージマネージャがそれをアップグレードしたい場合は、手動で変更を調べて、それらが新しいバージョンにどのようにマージされるかを承認する必要があります。ローカルの変更を/etc/sudoers.d/ディレクトリのファイルに保存することで、この手動の手順を回避してアップグレードを自動的に進めることができます。sudoが/etc/sudoers内のファイルを無視するのはいつですか?/etc/sudoersファイルに次の行が含まれているとします。#includedir /etc/sudoers.d sudoはディレクトリ/etc/sudoers.d内のファイルを読み込みます。例外は以下のとおりです。 名前が~で終わるファイル 名前に.文字が含まれているファイル これは(a)パッケージマネージャの利便性のために行われ、(b)エディタからのバックアップファイルは無視されるようにします。