歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> UNIX系統管理-第三章:定制用戶帳號

UNIX系統管理-第三章:定制用戶帳號

日期:2017/2/28 11:22:45   编辑:關於Unix


目標
學完這一章,你將能夠做以下事情:
列出在登錄過程中讀取的配置文件
更改默認的用戶PATH
更改默認的用戶終端類型
更改用戶提示符
更改用戶命令行編輯器
更改用戶默認打印機
管理/etc/skel中默認的配置文件
為什麼要定制用戶帳號
設置用戶終端類型
定制用戶提示符
設置用戶默認終端,定制用戶PATH變量
定義一個命令行編輯器
如果只是簡單地在/etc/passwd和/etc/group文件中創建條目可能不能滿足用戶所有需求,例如:
你可能需要定義用戶的終端類型,以便應用程序可以正確地輸出到用戶的屏幕上。
你可能需要定制用戶的提示符。因為許多的用戶喜歡在提示符中顯示他們當前所在路徑名
雖然系統管理員定義了一個系統默認打印機,但是有些用戶可能會要求使用另外的打印機。
如果用戶要使用第三方的軟件,你可能需要修改他們的PATH變量,以便shell可以找到這些應用程序。
如果用戶希望使用命令行編輯和命令歷史機制,需要特殊的配置。你可能希望為新用戶配置這些功能。
一些例子
export TERM='vt100'
export PS1='$PWD $'
export LPDEST='laser'
export PATH=$PATH:/usr/local/bin
export EDITOR=vi
export HISTSIZE=40
export HISTFILE=~/.sh_history
上例中提到的特性是在登錄的時候,通過“環境”變量來定義的。一些經常修改的環境變量如下
TERM   
TERM變量定義了用戶的終端類型。如果TERM變量設置不正確。應用程序就可能不能正確地寫到用戶的終端。有效的終端類型全部在/usr/lib/terminfo/*目錄下列出。你可以使用如下類似的命令來准確的設置一個TERM類型:
export TERM=vt100      #對應一個vt100類型的終端
export TERM=hp       #對應一個HP ASCII終端
export TERM=dtterm     #對應一個dtterm終端模擬窗口
你也可以使用ttytype命令來設置你的終端變量。這個命令通常可以自動識別你的終端類型。以下的代碼可以加入到你的登錄時運行的腳本中,為你設置你的終端類型:
if [ "$TERM = "" -0 \
    "#TERM" = "unknown" -o \
    "#TERM" = "dialup" -o \
    "#TERM" = "network" ]
  then
      eval 'ttytype -s -a '
  fi
  export TERM
PS1
PS1變量定義你的shell提示符。這個提示符也可以由用戶自己來修改。一些有用的PS1的值如下所示:
export PS1='S'            #使用一個簡單的"$"提示符
export PS1='$PWD $'         #在提示符內包括用戶的pwd
export PS1='$PWD ($LOGNAME) $'    #同時包括用戶的用戶名
LPDEST
LPDEST定義了用戶默認打印機。在LPDEST中設置的打印機會優先於系統管理員設置的系統范圍內的默認打印機。例子 :
export LPDEST=laser
export LPDEST=printera
PATH
用戶每次輸入一個命令,shell就必須去查找這個命令的可執行文件的位置。PATH變量中包含有一個以“:”分割的路徑的列表,shell在這些列表中查找可執行文件。如果用戶需要使用一個新的應用和工具,你也許會需要修改你的PATH變量。你可以使用以下類似的語法來在用戶的PATH中增加新的目錄:
PATH=$PATH:/usr/local/bin     # 在已存在的PATH中增加/usr/local/bin這一個路徑
初始化的PATH變量通常取自/etc/PATH文件。通常安裝一個應用會自動更新/etc/PATH文件,所以不用單獨地設置用戶的PATH。
EDITOR
如果你的用戶想要使用命令行編輯,需要定義三個變量:
export EDITOR=vi
export HISTFILE=~/.sh_history
export HISTSIZE=50
EDITOR定義用戶選擇的命令行編輯器。emacs和vi是唯一允許的兩個值。HISTFILE代表記錄用戶輸入的命令的文件名。HISTSIZE決定保存在shell的命令緩沖區內的命令的數量。
這些僅僅是你能為你的用戶定義的普通的環境變量的一部分。其它的環境變量的定義可以在POSIX shell的幫助中查找,你的用戶也可能需要用到其它的變量。
環境變量可以在命令行中定義,但是更通常的做法是在登錄配置文件中定義,這會在以下的章節中介紹。
用戶登錄的時候發生了什麼?
雖然定制一個用戶的登錄環境的環境變量可以在命令行中定義,但是通常是在登錄過程中執行的腳本中定義,典型的,有三個腳本被用於在用戶登錄時初始化環境。
第一個腳本是由系統管理員維護的一個腳本文件,用來為所有的用戶定制通用的環境變量。
第二個腳本是每個用戶自己維護的本地腳本文件,本地登錄腳本能覆蓋和修改系統默認的腳本。
另一個可選的腳本:附加的本地登錄腳本能夠定義附加的環境變量或者設置附加的shell特征。在POSIX shell中,附加的腳本通常用來定義shell別名。
登錄腳本的名字在各種shell中都是不同的。以下是POSIX,Korn,和C shells的登錄腳本的詳細討論:
Shell環境初始化的順序
1. shell運行正確的系統登錄腳本,這個腳本初始化用戶的環境。系統登錄腳本定義一個默認的環境,這個腳本可以由系統管理員定制。
如果shell是..... 系統登錄腳本是....
Bourne(/usr/old/bin/sh) /etc/profile
korn(/usr/bin/ksh) /etc/profile
POSIX(/usr/bin/sh) /etc/profile
限制的shell(/usr/bin/rshr,/usr/bin/rksh /etc/profile
C (/usr/bin/csh) /etc/csh.login
這些腳本定義和輸出的環境變量有PATH,TZ,TERM,其來源於/etc/PATH,/etc/MANPATH,/etc/TIMEZONE,/etc/SHLIB_PATH這些文件。由於這個系統登錄腳本在所有用戶登錄的時候都會運行,系統管理員可以通過修改這個文件來為所有用戶設置默認環境變量。
這種特性還可以讓每一個用戶在登錄系統時執行一些基本的命令。
2. 顯示/etc/copyright 和/etc/motd文件中的內容。
3. 提示用戶沒有閱讀的新聞:
  news:news_filename
4. shell運行在用戶的home目錄下的用戶的本地登錄腳本(如果存在)。
如果shell為..... 本地登錄腳本為....
Bourne(/usr/old/bin/sh .profile
Korn(/usr/bin/ksh) .profile
POSIX(/usr/bin/sh .profile
限制的shell(/usr/bin/rsh,/usr/bin/rksh .profile
C (/usr/bin/csh) .login
注意:在典型情況下,系統管理員在最初創建用戶帳號時,會為每個用戶創建一個本地的登錄腳本。如果使用useradd命令來添加一個用戶,它會拷貝默認本地登錄腳本文件(/etc/skel/.profile)到這個用戶的home目錄下。用戶可以自己繼續修改這個文件來定制他們的環境變量,以滿足自己的需要。
在這個腳本之外,POSIX,Korn,和C shells可能(通常都會)有另外的本地登錄腳本:
-POSIX和korn shell-: 如果定義了ENV變量,shell會運行在ENV中定義的文件(典型的,.shrc在開啟一個新的shell的時候執行,許多程序(例如,vi,和mailx)運行用戶在程序執行中開啟一個shell;這被稱為一個shell escape,一個shell escape會要求重新執行一次ENV文件,而.profile只會在登錄的時候執行。ENV文件(.kshrc或者.shrc)會在登錄時,.profile文件執行後執行。
- C shell:在一個新的C shell啟動的時候運行.cshrc文件。這和Korn shell ENV文件的工作方式類似。.login 文件只在登錄的時候運行,每一次開啟一個新的C shell的時候會重新運行.chsrc文件。
一旦所有的初始化工作都完成後,shell會出現一個提示符等待用戶的輸入。
/etc/skel目錄
當使用useradd命令創建一個新用戶帳號的時候,系統會拷貝一些默認的配置文件到新用戶的home目錄下。/etc/skel目錄下的默認的配置文件包括:
/etc/skel/.profile     #ksh/posix本地登錄腳本
/etc/skel/.login      #csh 本地登錄腳本
/etc/skel/.cshrc      #csh 附加登錄腳本
/etc/skel/.exrc      #vi 啟動配置文件
如果你想要修改自動拷貝到新用戶home目錄中的默認配置文件,你可以修改/etc/skel中的文件。對/etc/skel目錄下的文件的修改不會影響已經存在地用戶的home目錄下的文件。
如果你的應用要求在新用戶的home目錄下自動創建一些配置文件,你同樣也可以通過在/etc/skel目錄下添加文件來實現。
Copyright © Linux教程網 All Rights Reserved