FreeBSD 14
Sponsored Link

初期設定 : Sudo の設定2023/12/15

 
Sudo を利用することにより、root 権限の委譲や権限の分離、root パスワードの使い回しを防止できる等々、セキュリティを高めることができます。
[1] Sudo をインストールします。
root@dlp:~ #
pkg install -y sudo

[2] root 権限を特定のユーザーに全て委譲する。
root@dlp:~ #
visudo
# 最終行に追記 : [freebsd] はroot権限を全て利用できる
# 書式 ⇒ 委譲先 ホスト=(委譲元) コマンド

freebsd    ALL=(ALL:ALL) ALL

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

freebsd@dlp:~ $
ls -l /root

total 0
ls: /root: Permission denied
# 拒否される

freebsd@dlp:~ $
sudo ls -l /root

Password:   # freebsd のパスワード
total 64
-rw-r--r--  2 root wheel 1011 Nov 10 17:11 .cshrc
-rw-r--r--  1 root wheel   66 Nov 10 17:49 .k5login
-rw-r--r--  1 root wheel  316 Nov 10 17:11 .login
-rw-r--r--  2 root wheel  495 Nov 10 17:11 .profile
-rw-------  1 root wheel  932 Dec 15 10:46 .sh_history
-rw-r--r--  1 root wheel 1174 Nov 10 17:11 .shrc
-rw-------  1 root wheel 3233 Dec 15 10:45 .viminfo
-rw-------  1 root wheel  564 Dec 15 10:41 mbox
# 正常に実行できた
[3] [1] の設定に加えて、しかし、特定のコマンドは許可しない。
root@dlp:~ #
visudo
# システム停止系のコマンドエイリアス追記

# Cmnd alias specification
Cmnd_Alias SHUTDOWN = /sbin/halt, /sbin/shutdown, \
/sbin/poweroff, /sbin/reboot, /sbin/init

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

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

freebsd@dlp:~ $
sudo /usr/sbin/reboot

Password:
Sorry, user freebsd is not allowed to execute '/sbin/reboot' as root on dlp.srv.world.
# 拒否された
[4] root 権限が必要な特定のコマンドを特定のグループに属するユーザーに委譲する。
root@dlp:~ #
visudo
# ユーザー管理系のコマンドエイリアス追記

# Cmnd alias specification
Cmnd_Alias USERMGR = /usr/sbin/adduser, /usr/sbin/pw, /usr/sbin/rmuser, \
/usr/bin/passwd

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

root@dlp:~ #
pw groupadd usermgr

root@dlp:~ #
pw groupmod usermgr -m freebsd
# ユーザー [freebsd] で動作確認

freebsd@dlp:~ $
sudo /usr/sbin/pw useradd testuser

freebsd@dlp:~ $
freebsd@dlp:~ $
sudo /usr/bin/passwd testuser

Changing local password for testuser
New Password:
Retype New Password:
# 正常に実行完了した
[5] root 権限が必要な特定のコマンドを特定のユーザーに委譲する。
root@dlp:~ #
visudo
# 最終行 : それぞれのユーザーに特定のコマンドの許可設定追記

openbsd   ALL=(ALL:ALL) /usr/local/sbin/visudo
dragonfly ALL=(ALL:ALL) /usr/sbin/adduser, /usr/sbin/pw, /usr/sbin/rmuser, \
                        /usr/bin/passwd
linux     ALL=(ALL:ALL) /usr/bin/vi

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

openbsd@dlp:~ $
sudo /usr/local/sbin/visudo
# 正常に保存編集が可能

## sudoers file.
##
## This file MUST be edited with the 'visudo' command as root. ## Failure to use 'visudo' may result in syntax or file permission errors ## that prevent sudo from running. ..... .....
# ユーザー [dragonfly] で動作確認

dragonfly@dlp:~ $
sudo /usr/sbin/pw userdel testuser -r

dragonfly@dlp:~ $    
# 正常に完了
# ユーザー [linux] で動作確認

linux@dlp:~ $
sudo /usr/bin/vi /root/.profile
# 正常に保存編集が可能

#
HOME=/root
export HOME
.....
.....
[6] Sudo のログは、デフォルトでは [/var/log/auth.log] に記録されますが、Sudo のログのみを別ファイルに記録したい場合は以下のように設定します。
root@dlp:~ #
visudo
# 最終行に追記

Defaults syslog=local1
root@localhost:~#
vi /etc/syslog.conf
# 10, 11行目 : 追記
local1.*                                        /var/log/sudo.log
auth.info;authpriv.info;local1.none             /var/log/auth.log

root@dlp:~ #
touch /var/log/sudo.log

root@dlp:~ #
chmod 600 /var/log/sudo.log

root@dlp:~ #
service syslogd reload
関連コンテンツ