CentOS 8
Sponsored Link

初期設定 : Sudo の設定
2019/09/25
 
root 権限の委譲や権限の分離、root パスワードの使いまわし防止のため Sudo を設定しておきます。
なお、Sudo は最小構成インストールでもデフォルト構成に含まれているため、新たにインストールする必要はありません。
[1] root 権限を特定のユーザーに全て委譲する。
[root@dlp ~]#
# 最終行に追記: [cent] は root権限を全て利用できる

cent  ALL=(ALL)       ALL
# 書式 ⇒ 委譲先 ホスト=(委譲元) コマンド
# ユーザー [cent] で動作確認

[cent@dlp ~]$
/usr/bin/cat /etc/shadow

/usr/bin/cat: /etc/shadow: Permission denied  
# 正常に拒否される
[cent@dlp ~]$
sudo /usr/bin/cat /etc/shadow

Password:    
# 自身のパスワード
.....
.....
chrony:!!:18163::::::
tcpdump:!!:18163::::::  
# 実行できた
[2] [1] の設定に加えて、しかし、特定のコマンドは許可しない。
[root@dlp ~]#
# 49行目あたりに追記

# 例として システム停止系のコマンドエイリアスを設定

Cmnd_Alias SHUTDOWN = /usr/sbin/halt, /usr/sbin/shutdown, \
/usr/sbin/poweroff, /usr/sbin/reboot, /usr/sbin/init, /usr/bin/systemctl

# [1] の設定部分に追記 ( エイリアス [SHUTDOWN] は許可しない )

cent  ALL=(ALL)       ALL, !SHUTDOWN

# ユーザー [cent] で動作確認

[cent@dlp ~]$
sudo /usr/sbin/reboot

[sudo] password for cent:
Sorry, user cent is not allowed to execute '/usr/sbin/reboot' as root on dlp.srv.world.  
# 拒否された
[3] root 権限が必要な特定のコマンドを特定のグループに属するユーザーに委譲する。
[root@dlp ~]#
# 51行目あたりに追記

# 例として ユーザー管理系のコマンドエイリアスを設定

Cmnd_Alias USERMGR = /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, \
/usr/bin/passwd

# 最終行: グループ [usermgr] に属するユーザーに [USERMGR] で定義したコマンドの許可を追記

%usermgr ALL=(ALL) USERMGR
[root@dlp ~]#
groupadd usermgr

[root@dlp ~]#
usermod -G usermgr redhat

# ユーザー [redhat] で動作確認

[redhat@dlp ~]$
sudo /usr/sbin/useradd testuser

[redhat@dlp ~]$
sudo /usr/bin/passwd testuser

Changing password for user testuser.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.  
# 実行できた
[4] root 権限が必要な特定のコマンドを特定のユーザーに委譲する。
[root@dlp ~]#
# 最終行: 設定したい各ユーザーに特定のコマンドの許可を追記

fedora  ALL=(ALL)       /usr/sbin/visudo
ubuntu  ALL=(ALL)       /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, /usr/bin/passwd
debian  ALL=(ALL)       /usr/bin/vi

# 例として ユーザー [fedora] で動作確認

[fedora@dlp ~]$
sudo /usr/sbin/visudo
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##  
# 実行できた
[5] デフォルトでは [/var/log/secure] に Sudo の実行ログが残りますが、Sudo のログを別ファイルに記録したい場合は以下のように設定します。
[root@dlp ~]#
# 最終行に追記

# 例として、ファシリティ [local1] にログを出力する

Defaults syslog=local1
[root@dlp ~]#
vi /etc/rsyslog.conf
# 46,47行目: 追記

*.info;mail.none;authpriv.none;cron.none;local1.none   /var/log/messages
local1.*                /var/log/sudo.log

# The authpriv file has restricted access.
authpriv.*              /var/log/secure

[root@dlp ~]#
systemctl restart rsyslog

関連コンテンツ