(今回の記事は M.K さんの作ってくれた設定書を参考にしています)
su コマンドで root 権限を取得してしまうと何でもできてしまいます。
一般ユーザーに特定の管理コマンドのみの実行を許可したい場合は sudo コマンドを利用します。sudo コマンドを使えば任意の管理者コマンドを任意のユーザーに許可することができます。(今回は各ユーザーに root とほぼ同様の権限を与える)
sudo の設定
sudo コマンドの利用設定をするには、root ユーザーで visudo コマンドを実行します。すると、デフォルトのエディタで /etc/sudoers ファイルが開かれます。(エディタで直接 /etc/sudoers ファイルを開かないでください。root ユーザーですら書き込み権限がないファイルです)
CentOS 7.6の場合、デフォルトでは下記のような設定になっています。
root ユーザーで # visudo
(~前略~) ## Next comes the main part: which users can run what software on (ここからがメインパートです) ## which machines (the sudoers file can be shared between multiple ## systems). ## Syntax: ## ## user MACHINE=COMMANDS ## ## The COMMANDS section may have other options added to it. ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL (root はなんでもできるよ) ## Allows members of the 'sys' group to run networking, software, ## service management apps and more. # %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS ## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL (wheel グループに root権限が必要なすべてのコマンドを実行する許可を与える:要パスワード) ## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL (同上:パスワードも不要) ## Allows members of the users group to mount and unmount the ## cdrom as root # %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom ## Allows members of the users group to shutdown this system # %users localhost=/sbin/shutdown -h now
その他の例として、
hrs ALL=(ALL) /sbin/shutdown (hrs ユーザーのみ、shutdown コマンドが実行できるように設定する)
hrs ALL=(ALL) ALL (hrs ユーザーに対し、root権限が必要なすべてのコマンドの実行を許可)
このようにユーザー毎に権限を付与してもよいのですが、今回は各ユーザーを wheel グループに所属させることで sudo が使えるようにします。
http://codaholic.org/?p=1757 より引用
[Linux] なぜ sudo する権限のあるグループが「 wheel 」という名前なのか
sudo コマンドを使えるようにするため、ユーザーを wheel グループに追加し権限を付与しましょう、とどこを見ても書いてあるんですが、なぜ wheel って名前なんだろう、と思ったことはないでしょうか?
調べてみたところ、諸説あるようですが個人的に納得したのが big wheel から由来している説です。big wheel というのは「大物」とか「実力者」とかそういった意味のある言葉のようですので、sudo できる権限をもった者という意味では納得がいきます。
id コマンド
UID,GID,所属グループ名を表示する(引数のユーザー名を省略した場合は、現在のユーザーについて表示する)
# id hrs uid=1000(hrs) gid=1000(hrs) groups=1000(hrs)
よって現在はまだ sudo は使用できません。無理やり使うと
$ sudo yum update [sudo] hrs のパスワード: hrs は sudoers ファイル内にありません。この事象は記録・報告されます。
と言われます。
また、sudo -l でも自分が sudo を使用可能か調べることもできます。
[test@localhost ~]$ sudo -l あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1) 他人のプライバシーを尊重すること。 #2) タイプする前に考えること。 #3) 大いなる力には大いなる責任が伴うこと。 [sudo] hrs のパスワード: 残念ですが、ユーザー hrs は localhost 上で sudo を実行できません。
usermod で一般ユーザーを wheel グループに追加する
既存のユーザーアカウントを変更する。/etc/passwd や /etc/group ファイルの該当フィールドを書き換えた場合と同じ。
# usermod -aG wheel hrs -a or (--append): 所属するサブグループを追加する。-G: サブグループを変更する。-g: プライマリグループを変更する。 [root@localhost ~]# id hrs uid=1000(hrs) gid=1000(hrs) groups=1000(hrs),10(wheel) (← wheel グループが追加された) (サブグループの削除コマンドはない。# usermod -G hrs hrs のように、消したいサブグループを除き再度 usermod -G コマンドを使うか、/etc/group ファイルを直接編集して wheel グループから消したいユーザーを削除する)
一旦ログアウトし、再度ログインすると一般ユーザーで sudo を利用して管理者コマンドが使えるようになります。
[hrs@localhost ~]$ sudo yum update あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1) 他人のプライバシーを尊重すること。 #2) タイプする前に考えること。 #3) 大いなる力には大いなる責任が伴うこと。 [sudo] hrs のパスワード: (ここで入力するのは root パスワードではなく、ユーザーパスワード) 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile ~(後略)~
ちなみに、wheel ユーザーへの追加は、CentOSのインストール時にもできる。 ルートユーザーと一般ユーザーのパスワードを登録する際に、一般ユーザーで「このユーザーを管理者権限にする」とかなんとかいう部分にチェックを付ける。 すると初めから wheel ユーザーに追加され sudo が使える。(キャプチャ撮り損ねた)
また、前述のように sudo 実行権限がないユーザーが sudo を使おうとすると「hrs は sudoers ファイル内にありません。この事象は記録・報告されます。」となり、root ユーザーに通知メールが飛びます。 root ユーザーで mail コマンドを打つことでメールを閲覧できます。
新しいメールが /var/spool/mail/root にあります [root@localhost ~]# mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/root": 1 messages 1 new > N 1 test@localhost.local Sun Jan 13 14:42 16/683 "*** SECURITY information for localhost.localdomain ***" & 1 (←読みたいメールの番号) Message 1: From root@localhost.localdomain Sun Jan 13 14:42:21 2019 ~(中略)~ Subject: *** SECURITY information for localhost.localdomain *** Date: Sun, 13 Jan 2019 14:42:21 +0900 (JST) Status: R localhost.localdomain : Jan 13 14:42:21 : test : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/test ; USER=root ; COMMAND=/bin/yum update & q で終了
su コマンドを利用できるユーザを制限する
su コマンドを利用できるユーザを制限するには、pam_wheel.so を使います。pam_wheel.so は、su コマンドを利用できるユーザを wheel グループに所属するユーザに限定します。 pam_wheel.so を有効にするには
/etc/pam.d/su
というファイルで、以下のようにコメントになっている部分があるので先頭の # を消して設定を有効化します。# auth required pam_wheel.so use_uidこれで、wheel グループに所属するユーザのみが su コマンドを使えるようになります。
(「Linuxセキュリティ標準教科書」より)