ユーザーが「sudo su」は実行しますが、「sudo su -」は実行できない場合はいつですか?

ユーザーが「sudo su」は実行しますが、「sudo su -」は実行できない場合はいつですか?

私には次のことが起こりました。

$ sudo su - superman

Sorry, user clarkkent is not allowed to execute '/bin/su - superman' as root in krypton101.

しかし、以下は正常に機能します。

$ sudo su superman

ユーザーが何かをすることを許可しますが、実行しないようにするのはいつsudo su役に立ちますかsudo su -?この設定をどのように設定/解除しますか?私は読んだこのページしかし、これは役に立ちません。

詳細は:

  • 私は管理者ではありません。
  • アクセスできません。/etc/sudoers
  • ディストリビューションはCentos 7です。

ベストアンサー1

viaが許可するコマンドを指定するときは、基本的にsudo2つの簡単なオプションがあります。

  • 特定のコマンドを許可どのパラメータまたは
  • 特定のコマンドを許可正確に指定してくださいパラメータセットのみが適用されます。

したがって、ファイルには2つのエントリが許可されており、sudo su - superman必須です。管理者がこれらのうちの1つだけを提供したようです。sudo su supermansudoers

実際、ファイルsudoers構文では、管理者はワイルドカードまたは正規表現制限オプションを使用して特定のコマンドを指定することはできません。これらの仕様は、悪用するのが簡単すぎるからです。アンドリューが言ったように、申し訳ありませんより安全方法はここにあります。

ただし、元のユーザーが実行を許可する必要があるsudo su supermanことに注意してください。sudosu superman rootユーザーとして。実際、IDの切り替えは1回ではなく2回行われます。まず、元のユーザーからroot byにsudo、次にrootからsupermanbyに切り替えますsu。ファイルの仕様は次のとおりですsudoers

original_user ALL=(root) su superman

一方、sudoersユーザーがコマンドの使用法に集中しすぎない場合、構文はユーザーが特定のユーザーとしてすべてのコマンドを実行できるようにするより簡単な方法を提供しますsu

sudoers仕様が次のように書かれている場合:

original_user ALL=(superman) ALL

その後、ユーザーはsudo -u superman -s次のように近い(しかし不正確かもしれない)同等の結果を得ることができます。sudo su superman そして sudo -u superman -i達する精密sudo su - superman.

なぜ人々はコンストラクタに固執する代わりにそれを使用しないのですかsudo su -!の以前のバージョン-iにはこのオプションがないためです。sudo

2000年以降に出てきたので、今は役に立たないこのsudo su -構造を依然として推奨する古い文献がたくさんあります。もちろん、以前のUNIXユーザーや管理者はマッスルメモリを持っているかもしれないので、何も考えずに使うこともある。

おすすめ記事