修正する

修正する

コマンドラインの次の行は、私のユースケースを説明しています。

コマンドラインパラメータのワイルドカード文字は慎重に使用する必要があります。コマンドライン引数は単一の接続文字列で一致するため、ワイルドカード文字(「?」)または「*」は複数の単語と一致できます。たとえば、sudoers エントリが次の場合:

     %operator ALL = /bin/cat /var/log/messages*

 will allow command like:

     $ sudo cat /var/log/messages.1

 It will also allow:

     $ sudo cat /var/log/messages /etc/shadow

これは私たちが望むものではないかもしれません。

オペレータに始まるすべてのファイルを表示させるにはどうすればよいですか/var/log/messages

ファイル名にスペースは表示されません。

*私はPCREのように振る舞いたい\S*

修正する

正規表現はサポートされていないので、sudoここで新しい質問を作成しました。https://softwarerecs.stackexchange.com/questions/65887/sudo-alternative-which-supports-pcre

上記の例は、man sudoers「コマンドライン引数のワイルドカード文字を慎重に使用する必要があります」セクションから得られます。

ベストアンサー1

sudoers 構文はエスケープを提供しません。ラッパースクリプトを書くことを提案することもできますが(最初の引数を除くすべてを無視してrealpath友達と正規化するなど)、とにかく機能しません。

sudo cat /var/log/messages/../../../etc/shadow

実際のユースケースを知らずに、マンページの例についてのみ言及できます。実際の解決策は、sudoをまったく使用せずにACLを使用することだと言いたいです。 ACL を使用してユーザーにディレクトリ内のすべてのエントリへのアクセス権を付与すると、ファイルシステムはそのアクセスを制限します。

おすすめ記事