一部のユーザで、特定のコマンドのみを利用できるようにして、そのほかのコマンドは実行できないようにしたい。
そんなときは、対象のユーザのログインシェルをrbashというシンボリックリンクにしてやることで実現可能だ。
まず、bashのシンボリックリンクとしてrbashを「/opt/bin」配下に作成する。
mkdir /opt/bin ln -s /bin/bash /opt/bin/rbash
次に、rbash用のユーザを作成する。
useradd rbash_test -s /opt/bin/rbash passwd rbash_test
rbash用のユーザが利用できるコマンド(シンボリックリンク)のみを格納したディレクトリを作成する。
ここでは、ping、lsのみを許可してみる。
mkdir /opt/bin/rbash_test/ ln -s $(which ping | grep bin) /opt/bin/rbash_test/ ln -s $(which ls | grep bin) /opt/bin/rbash_test/
最後に、.bash_profileを書き換えてPATHに先ほど作成したディレクトリのみを指定する。
chown root:root /home/rbash_test/.bash_profile chmod 755 /home/rbash_test/.bash_profile sed -i '/^PATH=/cPATH=/opt/bin/rbash_test/' /home/rbash_test/.bash_profile
あとはログインするだけだ。
対象のユーザでログインしてみよう。
Last login: Sun Sep 25 09:19:23 2016 from XXX.XXX.XXX.XXX [rbash_test@BS-PUB-CENT7-02 ~]$ ls -la 合計 16 drwx------. 2 rbash_test rbash_test 79 9月 25 09:18 . drwxr-xr-x. 3 root root 23 9月 25 09:16 .. -rw-------. 1 rbash_test rbash_test 128 9月 25 09:19 .bash_history -rw-r--r--. 1 rbash_test rbash_test 18 8月 3 01:00 .bash_logout -rwxr-xr-x. 1 root root 181 9月 25 09:18 .bash_profile -rw-r--r--. 1 rbash_test rbash_test 231 8月 3 01:00 .bashrc [rbash_test@BS-PUB-CENT7-02 ~]$ ls -la /opt/ 合計 4 drwxr-xr-x. 3 root root 16 9月 25 09:16 . dr-xr-xr-x. 17 root root 4096 1月 2 2016 .. drwxr-xr-x. 3 root root 35 9月 25 09:17 bin [rbash_test@BS-PUB-CENT7-02 ~]$ cd -rbash: cd: 制限されています [rbash_test@BS-PUB-CENT7-02 ~]$ ping -c 1 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=117 ms --- 8.8.8.8 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 117.210/117.210/117.210/0.000 ms
確かにcdはできないし、制限はできてるようだ。
ただまぁ、chrootを行っているわけではないので、/homeより上は見えるようだ。ということはPATHを書き換えたり、「/bin」配下のコマンドを直接実行できるのか?というと
[rbash_test@BS-PUB-CENT7-02 ~]$ PATH=$PATH:/bin -rbash: PATH: 読み取り専用の変数です [rbash_test@BS-PUB-CENT7-02 ~]$ /bin/touch aaa -rbash: /bin/touch: 制限されています: `/' をコマンド名の中に指定できません
ちゃんと実行できないようになっているようだ。
![[改訂新版]プロのためのLinuxシステム構築・運用技術 (Software Design plus)](http://ecx.images-amazon.com/images/I/61%2BvBxCb0zL._SL160_.jpg)