sudoers でコマンドの許可を与える
そういえば、昔sudoers の記事書いてたけど、コマンドの許可を与える具体例書いてなかったよね。と思いだしたので、メモを書いておく。
### Cmnd_Alias USER_MANAGEMENT = /usr/sbin/adduser, /usr/sbin/useradd , /usr/sbin/usermod , /usr/bin/passwd User_Alias MANAGER = takuya, takahiro , yuzuru MANAGER USER_MANAGEMENT
逆に、◯◯以外のコマンドの許可を与える
べつに何しても良いんだけど、reboot はやめてね!とか
### Cmnd_Alias REBOOT = /sbin/reboot, /sbin/halt, /sbin/shutdown naoya ALL=ALL(ALL), !REBOOT # 再起動関連はやらせない %devops REBOOT ## 再起動だけ許可する。
これだけではカンペンきではなく、そりゃ、sudoers を変更すればできちゃうんだけど、そこまでしてreboot したら「確信犯」ということでボツに出来るよね。
root 権限を付与するユーザー
root 以外の名前で、root 権限のユーザー作るには、こうする。
root ALL=ALL(ALL) takuya ALL=ALL(ALL)
ただし、root の uid で制御される部分や実行権限で制御されるファイルがあるので、完璧な root 代替には成り得ないが、殆ど全てのことが出来る。
root 権限を付与するグループ
root ALL=ALL(ALL) %admin ALL=ALL(ALL)
admin グループにはsudo を許可してすべてのコマンドを実行できるようにする。もちろんuidやパーミッションが設定されたファイルはその限りではないが、chown / chmod ができるので、まぁなんでもアリになる。
わざわざ chown することも少ないだろうけど・
環境変数
sudo や su のときに、まぁオプションを付ければ、環境変数をリセットできるんだけどね。
## 環境変数はリセットを基本とする Defaults env_reset
sudoers に記述しておけば、環境変数はリセットされて便利ですね。(むしろ、個人用途のOSなら不便なんだけどさ)
関連資料
su/sudo したときの環境変数が気になったので調べた。 - それマグで!
sudo した時に、指定の環境変数を引き継ぎ - それマグで!
参考資料
https://www.sudo.ws/man/sudoers.man.html#sudoers_options
ユーザの実行権限を柔軟に割り当てるsudoのリスクとメリット 2ページ | OSDN Magazine
あれこれ
sudoers についてまとめてあるサイトのURLをみつけたので、そこをもとにまとめ直しておいた。
ユーザーごとの権限管理とか流行遅れですか。そうですか。残念です。
係員ごとにLXCの1コンテナを割り当てて処理しちゃえばいいですもんね。わかりやす。
でもさー、LXCとか仮想化って結局はプロセスを「ユーザー毎」ではなく「コンテナ毎」に分けてるわけで、結局は似たようなもんじゃん?OpenVZがそうだったようにVZのコンセプトが生きてるものはそうだよね。プロセスをわけられるなら、ユーザーも1つの「分離単位」として十分なわけですし。
だったら、ユーザーごとの管理ってやっぱり便利だと思うんだよね。