Restricted Shell 的使用方法

之前有個需求, 就是希望要限制登入linux的使用者只能使用我們期望的指令, 其餘的指令都不准使用.
上網查了一些資料, 發現有Restricted shell這樣的東西.

進入Restricted shell的方法有很多

bash -r
bash --restricted
rbash
sh -r
rsh
ksh -r
rksh

這些都可以進入Restricted 模式.
在這個模式下, 使用者不被允許做下列動作

  • changing directory
  • specifying absolute pathnames or names containing a slash
  • setting the PATH or SHELL variable
  • redirection of output

乍看之下, 似乎有點捆住使用者的手腳了, 但是單獨使用Restricted shell,根本是雞肋. 只要使用者再執行一次bash, 就完全解脫束縛了.
看下面例子就知道:

user@host:~$ rbash
user@host:~$ cd /
rbash: cd: restricted
user@host:~$ bash
user@host:~$ cd /
user@host:/$

因此, 要好好的發揮Restricted shell 的功能, 需要再加上一些動作才行.

  1. 首先, 我們先修改 /etc/passwd , 把使用者的shell改為/etc/rbash , 如此, 使用者登入時就已經在Restricted mode下了.
  2. 在使用者的家目錄中,建立一個 叫做 program 的目錄

  3. 接下來修改使用者的~/.bashrc , 在最後的地方 加上 export PATH=${HOME}/program 如此一來, 就強制PATH的路徑只能夠找到~/program這個目錄而已.

  4. 最後, 將開放給使用者執行的程式copy到program 這個目錄下.

這樣即可.

當使用者登入時, 就已經在Restricted mode 的狀態下, 而且PATH又不能被修改, 所以幾乎沒有指令可以執行了, 連ls指令都不能跑, 呵呵, 超級可憐的. 只剩下program 目錄裡的程式可以用. 而且還看不到這個目錄有哪些程式, 實在夠悲哀了..

參考資料:

This entry was posted in Linux, Security, shell script, 架站 and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *