Sudo
を指定してコマンドを使用しようとすると、すべて正常に動作しますが、su
を使用してスーパーユーザーとしてログインする場合は許可されません。どうして?
su
コマンドを使用してユーザーを変更(切り替え)するには、ターゲットユーザーのパスワードを指定する必要があります。ただし、Sudo
を使用すると、独自のパスワードを使用できます。
たとえば、su -
コマンドを使用してroot
ユーザーに切り替える場合は、rootのパスワードを使用する必要があります。デフォルトではパスワードがなく、アカウントも無効になっています。
su
では、ターゲットユーザーに切り替える必要があるすべてのユーザーに単一のパスワードを提供しています。Sudo
は、この問題を克服するためのものです。
sudoers
という名前のファイルを設定し、その中で誰が何をできるかを定義します。したがって、Sudo
と彼自身のパスワードを使用するすべての人は、それが本当に彼であることを証明し、特定のコマンドを実行できます。
Sudo -i
を使用して、デフォルトのシェルをログインシェルとして、またはログインなしのシェルSudo -s
または古い学校Sudo su -
(再度ログインシェル)としてルートに切り替えることができます。
Sudo -l
を使用して、どの特権を持っているかを確認することもできます。たとえば、rootまたはユーザーbobに切り替える権限があるか、特定のマシンでjohnを使用して特定のコマンドを実行できますか?
ルートアカウントについて明確にするには:
Ubuntuマシンでは、デフォルトでルートアカウントにはパスワードがなく、同時にアカウントは無効になっています。アカウントを無効にすると、感嘆符「!」がパスワードハッシュの前に追加されるため、パスワードの有無にかかわらず、そのアカウントに誰もログインできません。
$ Sudo grep root /etc/shadow
root:!:2020:0:99999:2:::
つまり、rootにはパスワードがなく(2番目のセクション(「:」で区切られる)は空で、感嘆符のみが含まれます)、同時に無効になります。!
に注意してください。
いいえ、Sudo
には独自のパスワードを入力し、su
にはルートのパスワードを入力します。これは通常Ubuntuで無効になっています。