CentOS 8 でパスワードなし sudo をする設定について

3 min 1,335 views

この記事について

この記事では、CentOS 8 で sudo をパスワードなしで実行できるようにする設定を説明します。vim などのテキストエディタの操作は知っている前提の説明となります。この記事を読むと、sudo に必要なパッケージの導入から設定まで分かるようになります。

そもそも sudo や visudo コマンドが見当たらない

OS の状況に依りますが、そもそも sudo コマンドや /etc/sudoers ファイルを編集する visudo コマンドがない場合があります。

# sudo dnf install epel-release
-bash: sudo: command not found
# visudo
-bash: visudo: command not found
#

これらのコマンドは sudo パッケージに入っていますので、該当する場合は sudo パッケージをインストールします。

# dnf search sudo
Last metadata expiration check: 0:33:01 ago on Tue Jan 25 11:25:00 2022.
===================================================== Name Exactly Matched: sudo ======================================================
sudo.x86_64 : Allows restricted root access for specified users
==================================================== Name & Summary Matched: sudo =====================================================
libsss_sudo.x86_64 : A library to allow communication between SUDO and SSSD
#

sudo パッケージのインストール

dnf コマンドで sudo パッケージをインストールします。

dnf -y install sudo

パスワードなしで sudo するための /etc/sudoers 編集

sudo パッケージをインストールしたら、wheel という特別なグループで全てのコマンドをパスワードなしで実行できるようにするため、/etc/sudoers ファイルを編集します。sudo 実行時にパスワード有りでも構わない場合は、この手順は不要なので次の手順を進めてください。

このファイルを安全に編集するには visudo というコマンドを使用します。visudo コマンドは、sudoers ファイルをロックして同時編集を防いだり、構文エラーチェックをしたりします。

visudo

/etc/sudoers ファイルの編集例ですが、wheel グループで全てのコマンドをパスワードなしで実行できるようにするには、”Same thing without a password” というコメント行を探し、その下にある行のコメントを外して以下のようにします(行頭の # を取り除く)。編集したら保存してファイルを閉じます。なお、この設定は wheel グループに所属する全てのユーザーで有効になるため、セキュリティの観点としては脆弱になります。設定内容を理解したうえで利用してください。

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

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

ユーザーを wheel グループに所属させる

任意のユーザーを wheel グループに所属させるには、usermod コマンドに “-a(append)” と “-G(groups)” のオプションを一緒に使用します。”-G” はサブグループに所属させるオプションです。”-a” は現在所属しているサブグループを保持したまま、サブグループを追加するオプションで、“-G” と一緒に使用します。”-G” に ”-a” を一緒に付けて実行しないと指定したサブグループ以外の所属は外れるので注意してください。

以下の例は、admin というユーザーを wheel グループに所属させる例です。この例では、admin ユーザーがプライマリーの admin グループ以外に所属していないため、usermod コマンドに ”-a” を付けなくても結果は変わりません。操作するユーザーが何らかのサブグループに所属している場合は、usermod コマンドに ”-a” も付けるように注意してください。

# id admin
uid=1000(admin) gid=1000(admin) groups=1000(admin)
# usermod -aG wheel admin
# id admin
uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel)
#

sudo の動作チェック

それでは簡単に動作チェックをしてみます。root ユーザーしか実行権限がない dnf install コマンドを admin ユーザーに sudo を付けて実行できるか確認します。sudo を付けた時とそうでない時で動作が変わると思います。

# su - admin
Last login: Tue Jan 25 16:03:32 JST 2022 on pts/0
$ dnf install sudo
Error: This command has to be run with superuser privileges (under the root user on most systems).
$ sudo dnf install sudo
Last metadata expiration check: 5:02:27 ago on Tue Jan 25 11:25:00 2022.
Package sudo-1.8.29-7.el8_4.1.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
$
関連記事