Solaris可以支持三種正常的shell,Bourne Shell ( /bin/sh或/sbin/sh )、C Shell ( /bin/csh )和Korn Shell ( /bin/ksh )。使用這些作為登錄shell時,用戶的權限僅由文件的讀、寫、執行權限和ACL控制。這種控制方式比較簡單,文件明確規定了主人、同組人和他們的權限,而所有其他人都用第三組權限。這很難劃分比較細致的權限級別,在很多情況下這不能滿足管理員的要求。 管理員可能希望設置某些特殊用戶,某用戶只管關機;某用戶只能通過POP3使用郵件服務,該用戶登錄的唯一目的是改自己的口令;某個用戶只能在家目錄下創建文件(比如通過FTP下載文件),不能修改已有文件,不能浏覽文件系統、不能刪除文件…… 所有這些都可以在登錄shell上做文章。 例一, 一個關機用戶 要關機,必須有關機權限。什麼人有關機權限?root。但不能把root口令告訴普通用戶,怎麼辦?創建一個特殊的超級用戶,他的登錄shell是一個定制的文件:一條關機命令。具體做法如下: # vi /etc/passwd shutdown:x:0:1:shutdown user:/:/bin/shutdown 添加一個用戶 # vi /etc/shadow shutdown:::::::: # vi /bin/shutdown /usr/sbin/shutdown -y -g0 -i5 把別的用戶logout,試著用shutdown用戶登錄。輸入完用戶名和口令後,系統就開始關機。 例二, 一個郵件用戶,該用戶登錄時只能改口令 比如此用戶為user1,添加完該用戶後,修改他的登錄shell,方法如下: # vi /etc/passwd user1:x:……..:/bin/passwd 試著從另外一台機器telnet過來,有什麼現象?用戶一登錄上來,系統就讓用戶改口令。改完後,網絡連接自動斷掉。 例三, 一個用戶只能在家目錄下創建文件(比如通過ftp下載文件),不能修改已有文件,不能浏覽文件系統、不能刪除文件…… 這種用戶的實現可以借助於一種/usr/lib/rsh稱為restricted shell的文件。這種shell其實是Bourne shell的一種變形。除了以下特點以外,它和Bourne shell完全相同: 使用此種shell的用戶不能: 改變自己的工作路徑,因此只能呆在家目錄下; 不能修改PATH變量,所以一旦PATH被管理員設定後,用戶只能執行指定目錄下的命令; 指明路徑和命令時不能用“/”; 不能重定向輸出。 這樣,為了實現上面規定的功能,可以按下面的做法: 1. 首先按一般方法( admintool )創建此用戶,但登錄shell寫/usr/lib/rsh 2. 修改其家目錄下的.profile文件,最重要的是其中的PATH變量,例如: PATH= . ; eXPort PATH 3. # cp –p /usr/bin/ftp . # cp –p /usr/bin/telnet . # cp –p /usr/bin/ls . # cp –p /usr/bin/pwd . # cp –p /usr/bin/more . # cp –p /usr/bin/file . 拷貝一系列該用戶需要使用的命令到其家目錄下。但是切記不要包括rm 、vi等有可能使用戶自己修改.profile的命令。