web-dev-qa-db-ja.com

LinuxディストリビューションでのパスワードなしのSudoのセットアップ

最近、Fedora 28とUbuntu 18.04の両方のシステムをセットアップしました。両方のプライマリユーザーアカウントを構成して、パスワードの入力を求められることなくSudoコマンドを実行できるようにしたいと考えています。

それぞれのシステムでこれを行うにはどうすればよいですか?

18
slm

Fedoraシステムでwheelと呼ばれる特別なUnixグループを利用する場合、これはかなり簡単です。以下を実行するだけです。

  1. wheelグループにプライマリユーザーを追加する

    $ Sudo gpasswd -a <primary account> wheel
    
  2. %wheel/etc/sudoersグループに対してNOPASSWDを有効にする

    $ Sudo visudo
    

    次に、この行をコメント化します。

    ## Allows people in group wheel to run all commands
    # %wheel        ALL=(ALL)       ALL
    

    そして、この行のコメントを外してください:

    ## Same thing without a password
    %wheel  ALL=(ALL)       NOPASSWD: ALL
    

    このファイルを保存 Shift+Z+Z

  3. ログアウトして再度ログインする

    注:この最後の手順は必須であり、デスクトップと対応するトップレベルのシェルが再実行され、プライマリアカウントがwheel Unixグループのメンバーであることを示します。

28
slm

従来、Debian/Ubuntu/Mint/Kali/AntixなどのDebianベースのディストリビューションでは、SudoのデフォルトグループはSudoです。

したがって、パスワードなしのSudoが有効なユーザーをDebianベースのシステムに追加するには、次の手順に従います。

  1. Sudoをインストールする

    Debianでは、インストールオプションによっては、デフォルトでSudoがインストールされていないことがよくあります。

    パッケージSudoがインストールされていない場合(たとえば、/etc/sudoersがない場合)、rootとして実行します。

    # apt install Sudo
    
  2. ユーザーをSudoグループに追加する

    ユーザーをSudoグループにまだ追加していない場合は、ユーザーをSudoグループに追加します(Ubuntuおよび派生物は、インストールで作成されたユーザーをSudoグループに自動的に追加します)。

    最初のSudoユーザーを設定するとき、最初のユーザーはrootとして取得します。

    # gpasswd -a <primary account> Sudo
    

    Sudoユーザーが既にいる場合は、そのユーザーを介してSudoグループ内の他のユーザーを設定することをお勧めします。

    $ Sudo gpasswd -a <primary account> Sudo
    
  3. NOPASSWDディレクティブを追加するために/etc/sudoersを変更します

    次に、/etc/sudoersSudoグループのデフォルト行を次のように編集します。

    $ Sudo visudo
    

    そしてそれを次のように変更します:

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

    に:

    # Allow members of group Sudo to execute any command, no password
    %Sudo   ALL=(ALL:ALL) NOPASSWD:ALL
    
  4. ログアウトして再度ログインする

    システムにログインしている場合、目的のユーザーは、Sudoグループに属するユーザーの変更を有効にするために、ログアウトしてログインする必要があります。

注: Debianでは、グループwheelは、RedHat/SuSEベースのディストリビューションのようにsuコマンドに使用する代わりに、PAMでSudoの使用をグループに制限するためによく使用されます。

従来、Debianベースのディストリビューションでは、SudoコマンドにはSudoグループを使用します。

20
Rui F Ribeiro

ほとんどのディストリビューションでは/etc/sudoers/に次の行があります:

#includedir /etc/sudoers.d

したがって、1人のユーザーを追加する簡単な方法は、/etc/sudoers.d/ディレクトリに適切なファイルを作成することです。通常は、追加するユーザーの名前を付けます。

add_sudoer() {
    if ! test -n "$1"
    then echo "Usage: $0 <user>" >&2; return
    fi

    printf >"/etc/sudoers.d/$1" '%s    ALL= NOPASSWD: ALL\n' "$1"
}

Defaults:%s !lecture, !authenticate\nやその他のオプションをファイルに追加することもできます。

7
Toby Speight

または、Python pudo パッケージを使用できます。

インストール:

user$ Sudo -H pip3 install pudo # you can install using pip2 also

以下は、ルート権限でコマンドを実行するためのpython自動化で使用するためのコードスニペットです::

user$ python3 # or python2
>>> import pudo
>>> (ret, out) = pudo.run(('ls', '/root')) # or pudo.run('ls /root')
>>> print(ret)
>>> 0
>>> print(out)
>>> b'Desktop\nDownloads\nPictures\nMusic\n'

以下は、root権限でコマンドを実行するためのcmdの例です

user$ pudo ls /root
Desktop  Downloads  Pictures  Music
1