SUDO設定
ROOTアカウントのパスワードを共有して利用する事はリスクになります。
SUDO機能を利用することでROOTパスワードの多人数利用を防ぎ、ROOT権限で実行できるコマンドを制限します。
ここでは簡単なSUDOの利用設定についてのみ記述していますが、
SUDO自体は非常に多機能であり、MANページを見ることで様々なニーズにこたえる設定があります。
SUDOの基本設定
sudoの設定作業はコマンドで行い、またsudoは外部設定ファイルを読み込む事もかのうです。
まず外部読み込みファイルが有効化されている事を確認します。
# visudo
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
sudoはでデフォルトで入力されたパスワードキャッシュを5分間保持します。
セキュリティ上パスワードのキャッシュを持たれるのは良くないためキャッシュを無効化します。
# visudo
Defaults timestamp_timeout = 0
またデフォルトではsudo時の認証は3回まで失敗する事が出来ますが、 その回数を変更する事も出来ます。小さい値にしてもロックされるわけではないので注意。
# visudo
Defaults passwd_tries = 3
sudoの実行ログはsecure
ログに出力されますが、別のファイルに指定する事も可能です。
# visudo
Defaults !syslog, logfile = /var/log/sudo.log, log_year
またリモートからスクリプト等でsudo実行する場合、sudoはセキュリティでttyを持たない接続からの実行を拒否します。
そうあるべきですが、Jenkinsなどプロビジョニングツールで問題がある場合無効化することもできます。
# visudo
Defaults requiretty
SUDOコマンド制限
ユーザー単位、グループ単位で与えるSUDO権限を制御します。
ここでは外部読み込みファイルを利用して設定します。
- グループ単位で指定する場合
# visudo -f /etc/sudoers.d/hostmaster
%グループ名 ALL=(ALL) ALL
- ユーザー単位で指定する場合
User_Alias
変数を利用して複数ユーザーに対して同じ権限を与えます。
# visudo -f /etc/sudoers.d/hostmaster
User_Alias HOSTMASTER = ユーザー名
HOSTMASTER ALL=(ALL) ALL
- コマンド単位で指定する場合
コマンドを指定してsudo制御したい場合は下記のように記述します。
下記の場合READ
変数に入れたコマンドはNOPASSWD
パスワード認証無しでROOT権限実行を許可しています。
Cmnd_Alias READ = /bin/cat, /bin/more, /bin/grep, /bin/ls, /usr/bin/diff, /bin/find, /usr/bin/tail, /bin/cp
%グループ名 ALL = (root) NOPASSWD: READ