ユーザーが「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ユーザーや管理者はマッスルメモリを持っているかもしれないので、何も考えずに使うこともある。

答え2

この質問に答える:ユーザーがsudo suの代わりにsudo suを実行できるようにするのはいつ便利ですか?

suハイフンの後ろと前ユーザー名現在のユーザーがユーザー名の環境を継承できるように su に指示します。をするクラーケン環境には、実行するために必要な環境変数が設定されています。スーパーマン、実行する必要はありませんsudo su - superman

これを許可しない正当な「理由」は、システム管理者がこれがセキュリティ上のリスクを引き起こすと信じている可能性sudo su - supermanがあります。sudo su - supermanこれは、sudo su -ユーザー名を指定しないと、次にログインするように求められます。ユーザーの皆さん、これはおそらくシステム管理者が避けようとしているものです。実際にハイフンを追加すると、これらのリスクが発生するかどうかはわかりませんが、セキュリティにとってはそうです。申し訳ありませんより安全

この設定をどのように設定/解除しますか?

構成は/etc/sudoersファイルで定義されます。

関連情報