質問: 経緯 --- ある人にサーバーにログインしてもらうためにユーザーを作りました。 rootのファイルを触るので、sudo 権限を付与しました。 ただ、rootユーザーでの作業はさせず、全て sudo を通して作業をして欲しいと考えました。 前提 --- OS : CentOS7系 対策したこと ------- sudoersの設定で su を実行できなくしました。 これで sudo su で、rootになることは出来ません。 ただ、sudo bash や sudo visudo などの様々なコマンドを駆使してsudoersを書き換えられるとrootになることは出来ます。 今回は、そこまですることはないと、 bash などは禁止にはしませんでした。 作業は全部sudoを使って欲しいという意思表示のつもりです。 質問したいこと -------- sudo 権限は与えたいけど、rootユーザーになることを完全に防止する方法はあるのでしょうか? 興味本位ですみませんが、よろしくお願いいたします。
回答: 質問の趣旨がはっきりしないですが、 * 絶対にrootで対話的なシェルを使わせたくないので、何コマンドを禁止すれば良いのか教えて欲しい ということでしょうか? 絶対に穴がない設定を行うのは結構確認がやっかいな気がしますので、ユーザにさせたい作業を定義し、それに必要なコマンドを洗い出して、そのコマンドだけ許可するような設定はいかがでしょう? ``` Cmnd_Alias ALLOW = /bin/cat, /usr/bin/less, /bin/netstat, /bin/ip user ALL = (root) ALLOW ``` のような感じで。 まあ、質問に例として挙がっているコマンドとか、 `/etc/shells` とかに挙がっているインストールされているシェルを禁止すればできなくはなると思いますが...(自信なし) (あとは引数付きで `vi /etc/sudoers` みたいなのも必要かも知れませんね。