Linuxを勉強し始めて約1ヶ月経過。
ずっとrootユーザでコマンド叩いてたので、そろそろ一般ユーザで作業してパーミッションに慣れようと決意。
「管理ユーザコマンド実行したい時にはとりあえず’sudo’をコマンドの前に打てばいいんだろ? 」
と横柄な態度で望んでいたらコマンド弾かれて痛い思いしたのでその記録
理解すること
・ただsudoをコマンド文頭に打てば使えるわけでない
・システム管理コマンドの使用を一般ユーザにも許可する
⇒ /etc/sudoers
を編集する
・/etc/sudoers
は特殊ファイルなので、visudo
コマンドで編集
※vi
コマンドは使わない
・コマンドレベルの許可・ユーザレベルの許可ができる
$sudo date 121020002018
で弾かれた
システククロックの変更のため、
[yuzo@localhost ~]$ ls -l `which date`
-rwxr-xr-x. 1 root root 108640 10月 21 2021 /usr/bin/date
[yuzo@localhost ~]$ sudo date 121020002018
[sudo] yuzo のパスワード:
yuzo は sudoers ファイル内にありません。この事象は記録・報告されます。
エラーに
「yuzo は sudoers ファイル内にありません。この事象は記録・報告されます」
sudoersファイルに「現在ログインしてるユーザー(yuzo)にsudoの実行権限を付与」しないといけないようです。
話はそれますが、エラーの後半部分「この事象は記録・報告されます」のログを確認します。
Nov 3 15:05:09 localhost sudo[6381]: yuzo : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/yuzo ; USER=root ; COMMAND=/bin/date 121020002018
しっかり認証が弾かれたユーザー名とコマンドがログに残っています。
一般ユーザに管理コマンドの実行権付与する
[root@localhost] ~ 15:30:56 # ls -l /etc/sudoers
-r--r-----. 1 root root 4328 4月 20 2022 /etc/sudoers
パーミッションが440の特殊ファイルなのでvisudo
コマンドで編集します
#ファイル最終行に「システム管理コマンド"date" を"yuzo"でも使用可能にする設定」
yuzo ALL=(ALL) /usr/bin/date
設定が終わったので、yuzoでログインしてターミナルで再度sudo date 121020002018
コマンド実行
[yuzo@localhost ~]$ sudo date 121020002018
2018年 12月 10日 月曜日 20:00:00 JST
一般ユーザーyuzoにdateコマンドを使用可能にしたので今回は打てました。
ただこれだと一つ一つの管理コマンドをvisudo
で追加で手間なので全てのシステム管理コマンドを付与する場合には次のように設定
#ファイル最終行に「システム管理コマンド"date" を"yuzo"でも使用可能にする設定」
#yuzo ALL=(ALL) /usr/bin/date //コメントアウト
user2 ALL=(ALL) ALL
動作確認
一般ユーザに参照権限与えられていないログファイルやpwハッシュ化された/etc/shadowファイルが一般ユーザでsudo付ければ見れることの確認
[yuzo@localhost ~]$ sudo tail -n 1 /var/log/{messages,secure}
[sudo] yuzo のパスワード:
==> /var/log/messages <==
Nov 3 16:06:40 localhost systemd[1]: Started Fingerprint Authentication Daemon.
==> /var/log/secure <==
Nov 3 16:00:53 localhost sudo[7606]: pam_unix(sudo:session): session closed for user root
※ここで求められるパスワードはrootユーザーのpwではなく、ログインしているユーザー自身のpw