web-dev-qa-db-ja.com

パスワードなしでSudoコマンドを実行する方法は?

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で定義されていない場合、パスワードなしの特権をどのように取得しますか。これを可能にするメカニズムは何ですか?

231
aychedee

さて、私は答えを発見しましたので、完全を期すためにここに置いてください。 /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

最後に。

329
aychedee

複数のサーバー間でこの動作を簡単に複製するために、最も簡単なことは次のとおりであることがわかりました。

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を使用する必要がある場合があります。

94
jiminikiz

/etc/sudoers.d/ディレクトリの下に独自のファイルを作成します-Amazon Cloudによって作成されたファイルは、更新の場合に上書きされる可能性があります。 /etc/sudoers.dにファイルを作成した後、このエントリを追加し、

<your user name> ALL=(ALL) NOPASSWD:ALL

システムを再起動すると、これが機能します。

4
WaughWaugh

エディタを使用せずに短い回答(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>
2
user315445