コマンドを別の名前にコピーするとはどういう意味ですか?

コマンドを別の名前にコピーするとはどういう意味ですか?

「!」の制限演算子

ALLから「減算」のために「!」演算子の使用は通常効果がありません。ユーザーは目的のコマンドを別の名前にコピーし、そのコマンドを実行してこの問題を簡単に回避できます。たとえば、

ビルALL = ALL、!SU、!SHELLS

BillがSUまたはSHELLSにリストされているコマンドを実行するのを実際に防ぐ方法はありません。なぜなら、彼は単にコマンドを別の名前にコピーしたり、エディタや他のプログラムのシェルエスケープを使うことができるからです。したがって、そのような制限はせいぜい勧告と見なされるべきです(そして政策によって強化されるべきです)。

通常、ユーザーがsudo ALLを使用している場合、ユーザー仕様の「!」要素に関係なく、ルートシェルを提供する独自のプログラムの作成(または独自のシェルコピーの作成)を防ぐことはできません。

何ですか

このコマンドを別の名前にコピーするだけです。

意味は?コマンドの別名ですか、それとも別のものですか?

答え1

コマンドは通常(*)ファイルであり、ファイルは別の名前でコピーできます。

例えば

$ cp /bin/ls /tmp/lslsls
$ % /tmp/lslsls -l /tmp/lslsls
-rwxr-xr-x  1 ilkkachu  wheel  187040 Dec  5 20:03 /tmp/lslsls

これで、ルート以外のものをsudo実行することが許可されていても、実行を続けることができ、lsまったくlslsls同じ内容を持つようになります。元のファイルを実行可能(読み取り不可能)にするだけでは、通常は同じ操作を実行する別のバイナリを見つけることができるため、あまり役に立ちません。 (一度は実行を許可しないように設定されたsudoシステムを使用する必要がありましたが、実行を含む他のすべてが機能していたので、zshのインストールだけを検討しました。)/bin/sh/bin/bashapt-get

(*シェルの組み込みと関数は例外です。)

マニュアルページには、「エディタまたは他のプログラムからのシェルのエスケープ」の使用に関する言及もあります。これは、viで、またはのようなコマンドを使用するか、単にまたは:shell(少なくともGNU AWKでは)を使用することを意味します。これらのどれもsudoによって課される制限の影響を受けません。:!bashsudo perl -e 'exec "sh"'sudo awk 'BEGIN { system("sh") }'

関連情報