Unix系統中按需定制用戶工作環境
在Windows操作系統中,可以通過相關設置來定義用戶的默認工作環境。其實在Unix操作系統中,也可以實現類似的定制。而且從某種角度來說,其定制的內容比Windows操作系統更加的廣泛。如可以定制用戶的默認打印機,定制用戶的默認終端類型,定制用戶的默認PATH環境變量等等。筆者這篇文章就告訴各位系統工程師,如何做好這方面的工作。
一、設置一個合適的終端。
有時候系統工程師需要手動的為用戶或者自己設置一個合適的終端,以便應用程序的結果可以正確的輸出到終端上。要實現這個目的,就需要用到系統中的TERM環境變量。這個環境變量的作用只有一個,就是指定用戶默認情況下采用的終端類型。也就是說,登陸操作系統后其需要采用的終端。對于某些應用程序來說,如果TERM環境變量設置錯誤的話,則應用程序就可能不能夠順利的把結果寫輸出到終端上。在設置這個默認環境變量的時候,系統工程師需要知道兩個內容,首選需要知道當前可用的終端類型有哪些;其次就是如何給用戶指定一個終端。
如果系統工程師想知道哪些終端是可以用的,則可以查看系統目錄/usr/lib/terminfo。(不同版本的Unix操作系統可能目錄有所不同)。在這個目錄中,存儲著Unix操作系統所支持的所有有效的終端類型。如果要為用戶指定一個默認的終端設備,則可以在啟動配置文件中,利用exprot TERM=終端類型的方式來設置一個默認的終端設備。在使用這個命令的時候,需要注意英文單詞TERM必須為大寫。如果采用小寫的話,可能就會發生錯誤。
不過有時候系統工程師也希望操作系統能夠自動識別終端的類型。如此的話,用戶每次更改終端,我們系統工程師也不用每次都進行重新配置了。此時系統工程師可以使用ttytype命令。這個命令可以幫助用戶在啟動操作系統的時候自動識別終端類型。我們往往把這個命令使用在用戶登錄時運行的腳本中。
二、為用戶定義可用的命令集合。
有時候系統工程師需要為用戶定義可用的命令集合或者工具。如在命令行中輸入vi命令就會自動打開一個文本編輯器。對于Unix操作系統來說,其支持的文本編輯器有很多。為此系統工程師可能需要用戶采用其指定的文本編輯器。此時除了通過刪除軟件包的方式來實現,還有其他的方式呢?因為如果把某個程序的軟件包刪除了,那么這個操作系統中的所有用戶都無法使用這個應用程序。而現在系統工程師只想為某個用戶指定特定的文本編輯器,而不影響其他用戶的使用。可見,此時通過刪除軟件包的方式來實現的話,并不是很好的方式。其實,此時系統工程師可以通過PATH環境變量來實現這方面的控制。
當用戶在shell中輸入vi命令的時候,操作系統會從某些目錄中查找這個命令的可執行文件的位置。而這些目錄就是環境變量PATH所決定的。在Unix操作系統中,環境變量也分為系統級別的環境變量與用戶級別的環境變量。默認情況下,當某個用戶登錄到系統時其采用的是系統級別的PATH環境變量。因為此時沒有配置用戶級別的PATH環境變量。在PATH環境變量中,定義著幾個目錄,目錄之間會用冒號進行分割。操作系統就會從幾個命令中去查找相關的可執行文件。如用戶安裝了某個應用程序,往往需要更改這個PATH環境變量,才可以正常運行這個應用程序。
所以,我們可以通過在用戶級別設置這個PATH環境變量,來限制其可用的應用程序。如我們可能只允許用戶使用郵件、PIS(一種即時聊天工具)等應用程序。系統工程師可以先建立一個文件夾,然后將這個文件夾下建立這些應用程序可執行文件的連接。最后把PATH目錄指定到這個新建立的文件夾中即可。由于操作系統執行命令的時候,會從PATH環境變量指定的目錄中去查找可執行文件。如果找不到的話,則就會提示錯誤信息。為此通過這種方式可以定義用戶可以使用命令的集合。當然,系統工程師也可以通過為用戶設置可執行文件的權限來實現。不過相對來說,還是這種方法簡單、直觀一點。
三、利用vipw命令來代替vi命令。
通常情況下,用戶的帳號信息都是保存在passwd文件中。注意這個文件名字看起來好像是保存用戶密碼的。其實用戶的密碼并不是保存在這個文件中,而是保存在shadow等類似的文件中。這主要是為了提高密碼的安全性。不過在passwd文件中也留有一些蛛絲馬跡。如果某個用戶的密碼為空,則這個用戶對應的記錄密碼字段就為空白。如果用戶設置了密碼,則這個密碼就會以X等字符來代替。而真正的密碼就以加密的形式保存在其他文件中。
通常情況下,其他用戶可以修改自己的密碼。此時就會用到這個passwd文件。如果當系統工程師利用vi命令來編輯這個文件,而恰巧這個時候有某個用戶正在更改密碼,此時用戶更改密碼的操作就會被拒絕。系統可能不會提示錯誤信息,但是最終用戶的更改不會被保存到這個文件中。為了避免這種情況,筆者建系統工程師在修改這些比較特殊文件的時候,則最好能夠使用vipw命令。這個命令會把一個passwd文件拷貝為passwd.tmp 文件,然后會對原有的文件進行鎖定。如果此時有一個用戶需要更改密碼的話,則就會被提示某個文件正在被使用。當修改完成之后,系統會根據某些規則來檢查這些臨時文件。如果沒有問題的話,則就會將這個臨時文件的內容同步到原文件中,并解除對原文件的鎖定。
雖然這最終的結果是一樣的。用戶與系統工程師不能夠同時對Passwd文件進行更改。但是后者能夠給用戶提供一個出錯的信息,能夠讓用戶明白錯在哪里。而采用vi命令的話,則操作系統會不聲不響的拒絕用戶的操作,這不是很好。
四、為類似的用戶提供相同的權限。
由于Unix操作系統是一個真正的多任務多用戶操作系統,其允許在同一個時刻內多人共用一臺操作系統。此時系統工程師就遇到了一個挑戰。即不同的用戶其使用同一臺電腦上的文件、應用程序,那么如何來保障其工作的相對獨立性,特別是其自身的文件不會被其他用戶意外刪除或者修改呢?但是,這個規則也不是決定的。如果同屬于一個部門的用戶,在其可以共享彼此的文件,可以修改等等。遇到這種情況的話,系統工程師該如何處理?
其實這個處理也比較簡單,就是可以根據用戶性質,為其設置不同的組。如把幾個銷售員歸屬于銷售員組。然后對這個組設置相關的權限,允許這個組內的成員彼此可以修改對方的文件,甚至可以進行刪除(這個刪除是可行的,但是需要慎重)。同時設置不同組的成員只可以查看對方的文件,而不能夠進行刪除或者修改。當然也可以設置連查看都不行。設置好之后,只需要把用戶加入到特定的組中,則這個用戶默認情況下就會具有這個組的相關權限。而不需要再為用戶進行一一的設置。也就是說,在大部分情況下,系統工程師需要學會在組的級別上為類似的用戶設置權限。而盡量減少為個別用戶設置權限。對組進行權限控制,要比針對用戶進行權限設置方便的多,也安全的多。
總而言之,系統工程師可以通過環境變量、組權限控制等手段,來根據需要定義用戶的工作環境。Windows操作系統中可以實現的用戶環境定義,在Unix操作系統中都可以通過以上手段來實現。而且其控制的范圍更加的齊全。如在Unix操作系統中,可以控制用戶所使用的終端類型;可以在不刪除應用程序的情況下,把用戶可以使用的應用程序限制在最小的范圍之內。但是Windows操作系統則不行,或者說實現起來很困難。
