web-dev-qa-db-ja.com

コマンド「Sudo bash」または「Sudo -s」がパスワードを要求しないのはなぜですか?

管理者以外のユーザーとしてログインしているときでも、Sudo bashまたはSudo -s、システムはパスワードを要求しません。コマンド履歴で、以前にSudoのパスワードを入力していません(つまり、Sudoはユーザー資格情報をキャッシュしなかったため、このセッションで再度パスワードを要求されない可能性があります)。

なぜこの奇妙な動作ですか?また、すべてのSudoおよびsuコマンドに対応するパスワードが必要であることを確認するにはどうすればよいですか?そして、どのユーザーもrootパスワードを入力せずにroot権限を取得できないことを厳密に保証する方法は?

これが私の/etc/sudoersファイル:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group Sudo to execute any command
%Sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
ALL ALL=(ALL) NOPASSWD:ALL
3
codeofnode

これは、/etc/sudoersファイルの最後の行が原因です。

ALL ALL=(ALL) NOPASSWD:ALL

...「すべてのユーザーがパスワードなしでルートとしてすべてのコマンドを実行できる」ことを意味します。

その行がどのようにそこに入ったのかわかりませんが、削除すると通常の動作に戻ります。 注:編集にvisudoを使用して、そこで構文エラーが発生しないようにします。つまり、コマンドを実行します。

Sudo visudo

ポップアップするエディターを使用してファイルを編集します。

4
Malte Skoruppa