歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Solaris中的Shell和用戶權限


  
  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的命令。
  
Copyright © Linux教程網 All Rights Reserved