'!を付けてもsudoでルートシェルを起動できるのはなぜですか?'シャドウエントリにありますか?


9
$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash

$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::

シャドウファイルの2番目のフィールドでは、!rootユーザーはログインできないことを意味しますが、なぜrootユーザーにログインできるのsudo suですか?

su rootまたはでrootユーザーにログインできないのはなぜsu -ですか?


1
「シャドウファイルの2番目のフィールドでは、!はrootユーザーがログインできないことを意味します」いいえ、そうではありません。どこで聞いたの?
軌道の軽さの競争

@LightnessRacesinOrbit、それはどういう意味ですか?
ジョージウドセン2017

@George:muruは彼の回答でマニュアルを引用し、詳細に説明しました。あなたはドキュメントを読むべきです!
Orbitの

回答:


15

!shadowのエントリの暗号化されたパスワードフィールドの手段にはパスワードがそれに対して認証することはできませんことを。からman shadow

If the password field contains some string that is not a valid
result of crypt(3), for instance ! or *, the user will not be able
to use a unix password to log in (but the user may log in the
system by other means).

マニュアルにあるように、これルートとしてログインできないことを意味するものではありません。これは、rootアカウントのパスワードを使用してrootとしてログインできないことを意味します。(たとえば、アカウントがロックされている場合でも、以前に設定した場合は、SSHキーを使用してSSH経由でrootとしてログインできます。)

sudo通常、rootではなくパスワードで認証します。これは、のいずれかの設定によって変更することができtargetpwrootpwまたはrunaspw中をsudoers。これらのオプションの1つを設定し、パスワードがロックされているときにパスワードを使用しようとすると、失敗します。


すごい、それは私が自分のパスワードを使ってsudoで任意のユーザーに切り替えることができることを意味します。
シヌーシュ2017

1
@Sinooshは他の制限を想定していない、はい
muru

4

次に、それに応じてコマンドを見てみましょう。

  1. sudo su

    • sudosuroot権限でコマンド(代替ユーザー)を実行するので、たとえそれが/etc/shadow持ってroot:!:17179:0:99999:7:::いても、root権限でコマンドを実行できます。
  2. su -またはsu root

    • これは実際には、ファイルからログインできないrootユーザー切り替わるため、これらのコマンドを使用しても機能しません。それらを機能させたい場合は、パスワードを与えることでrootアカウントのロックを解除する必要があります。/etc/shadow

概要:

su -0r su rootはユーザーrootに切り替えますが、存在しないため発生することはありませんが、特権を使用してスイッチコマンドsudo su実行するため、この場合はグループに属している場合に移動します。あなたが実際に同じように機能し、この場合にはrootでログインしていないルート、それは行きますので。rootsudo

出典:「su-」と「su root」の違いは何ですか?


ありがとう、それはsudo suシャドウファイルにパスフィールドが表示されないことを意味しますか?
シヌーシュ2017

1
@Sinoosh sudo suは、sudo shまたはを実行するための間違った方法sudo bashです。
Bakuriu 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.