小さなユーティリティプログラムを書いています。sudo
必要に応じて、何かを実行しようと思います。
つまり、ファイルのアクセス許可で現在のユーザーが特定のファイルを操作できない場合(およびsudo
ルールで許可されている場合)sudo
、ファイルの所有者としてユーティリティを実行する必要があります。
システムログが失敗したsudo
試行のノイズでいっぱいにならないようにしたいので、この機能を事前に確認したいと思っています。それsudo
自体が失敗について報告するように:「この事件は報告される」
だから、私はプログラムでチェックしたいと思っています:経由で実行できuser <x>
ますか?command <y>
sudo
ここに問題があり/etc/sudoers
ます:そのマッピングが含まれていますが、それはroot所有であり、通常のユーザーは読み取ることができません。
実行するサブプロセスを生成することを検討していましたsudo -l
(現在のユーザーがsudo実行できるコマンドを出力します)。次に、これの出力を解析します。ただし、これは少し壊れやすいようです。出力には必要な情報が含まれていますが、それは人間が読むために設計されたようです(プログラムによる消費用ではありません)。出力が将来同じ形式に従うか、または異なるプラットフォーム間で保証されるかどうかはわかりません。
プログラムによるsudo -l
出力の解析は安全ですか?そうでない場合、sudoコマンドが成功するかどうかを事前に判断するためのより良いオプションはありますか?
(X / Yの背景:このユーティリティは、アクセスが制限されたロールアカウントで使用するためのものです。他の一部のユーザーは、sudoルールを使用して、アクセスが制限されたアカウントがファイルを操作できるように効果的にオプトインすることを期待しています。しかし、他のどのユーザーが適切なsudoルールを設定しているかを事前に知りません)