buntu Server 12.04のAWSイメージのubuntu
ユーザーは、/etc/sudoers
?に設定がない場合、すべてのコマンドに対してパスワードなしSudo
を持っていますか?
AmazonでUbuntuサーバー12.04を使用しています。デフォルトのUbuntuユーザーと同じ動作を持つ新しいユーザーを追加したい。具体的には、この新しいユーザーのパスワードなしSudo
が必要です。
そこで、新しいユーザーを追加し、/etc/sudoers
を編集しました(もちろんvisudoを使用)。そのファイルを読むと、デフォルトのubuntu
ユーザーはSudo
グループのメンバーであるため、パスワードなしadmin
を取得しているように見えました。そこで、新しいユーザーを追加しました。うまくいきませんでした。次に、NOPASSWD
ディレクティブをsudoers
に追加してみました。これも機能しませんでした。
とにかく、今私は興味があります。 ubuntu
ユーザーは、/etc/sudoers
で定義されていない場合、パスワードなしの特権をどのように取得しますか。これを可能にするメカニズムは何ですか?
さて、私は答えを発見しましたので、完全を期すためにここに置いてください。 /etc/sudoers
の最後に、単なるコメントだと思ったものがあります。
#includedir /etc/sudoers.d
ただし、これには実際にはそのディレクトリの内容が含まれます。内部にはファイル/etc/sudoers.d/90-cloudimg-ubuntu
があります。期待される内容を持っている
# ubuntu user is default user in cloud-images.
# It needs passwordless Sudo functionality.
ubuntu ALL=(ALL) NOPASSWD:ALL
そのため、デフォルトのubuntuユーザーのSudo設定が存在します。
このファイルは、visudoを使用して編集する必要があります。次のコマンドを使用すると、visudoで正しいファイルを編集できます。
Sudo visudo -f /etc/sudoers.d/90-cloudimg-ubuntu
そして、次のような行を追加します。
aychedee ALL=(ALL) NOPASSWD:ALL
最後に。
複数のサーバー間でこの動作を簡単に複製するために、最も簡単なことは次のとおりであることがわかりました。
Sudo visudo
この行を変更します。
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
この行に:
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL
そして、以下の行の下に移動します:
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
あなたは今これを持っているはずです:
# 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 mail_badpass
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
# Allow members of group Sudo to execute any command
%Sudo ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) NOPASSWD:ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
次に、パスワードを使用してSudoアクセスが必要なすべてのユーザー:
Sudo adduser <user> Sudo
そして、Sudoアクセスを必要とするすべてのユーザーとパスワードなし:
Sudo adduser <user> admin
そして最後に、これを実行します:
Sudo service Sudo restart
以上です!
Edit:adminグループはデフォルトでは存在しないと思われるため、追加する必要があるかもしれません。
Sudo groupadd admin
次のコマンドを使用して、デフォルトのAWS ubuntu
ユーザーをadmin
グループに追加することもできます。
Sudo usermod ubuntu -g admin
注: @ hata のように、使用しているUbuntuのバージョンに応じて、管理グループ名としてadm
を使用する必要がある場合があります。
/etc/sudoers.d/ディレクトリの下に独自のファイルを作成します-Amazon Cloudによって作成されたファイルは、更新の場合に上書きされる可能性があります。 /etc/sudoers.dにファイルを作成した後、このエントリを追加し、
<your user name> ALL=(ALL) NOPASSWD:ALL
システムを再起動すると、これが機能します。
エディタを使用せずに短い回答(bashでテスト済み、リモートホストで実行するのは非常に危険)。
現在のユーザーのパスワードなしで動作するようにSudoを構成します。
echo "$USER ALL=(ALL) NOPASSWD:ALL" | Sudo tee -a /etc/sudoers
以下を使用して編集を確認します。
Sudo visudo -c
パスワードなしでSudoを使用できるかどうかを確認します。
Sudo cat /etc/sudoers | grep "$USER"
...または単に試してみてください:
Sudo <anything>