用戶管理是系統的重要組成部分,每個登錄到系統中的用戶都有一個用戶帳號,一般同時還有一個密碼(在一個安全的系統中,一個有效的用戶必須帶有一個密碼)。如果密碼正確,該用戶就能夠以這個帳號登錄,獲得該帳號的各種特權。用戶的密碼保存在/etc/passwd 和/etc/security/passwd 文件中。
用戶組是對一個受保護資源共享存取權限的用戶集合。用戶組帶有一個標識符,由成員和管理員組成。創建組的人通常是該用戶組的第一個管理員。用戶組有三種類型:
用戶定義組:這種用戶組用於在系統中共享文件的人員,例如:同一部門中或同一項目下工作的人員。通常情況下這種用戶不要創建太多。
系統管理員組:這種用戶組對應於 SYSTEM 用戶組。SYSTEM 用戶組的成員允許不具備超級用戶權限的管理員執行一些系統維護任務。
系統定義組:有一些用戶組是操作系統定義的,系統所創建的非管理員用戶的缺省用戶組為 STAFF。SECURITY 用戶組具有執行安全管理的特權。
1、用戶管理命令
下面是一些用於系統管理的重要命令:
mkuser 創建新用戶。
passwd 創建或修改用戶口令。
chuser 修改除了用戶口令外的用戶屬性。
lsuser 顯示用戶屬性。
rmuser 刪除用戶。
login 用戶登錄。
chfn 修改用戶的描述信息,用戶可以任意填寫諸如地址、全名、別名等信息。
Finger 命令會顯示用戶的描述信息。
chsh 修改用戶的 Shell。
who 顯示當前登錄的用戶。
2、/etc/passwd 文件
/etc/passwd文件中保存用戶的基本信息。這個 ASCII 文件中包含所有用戶的入口。每個入口定義了用戶的基本屬性。用mkuser命令添加用戶時,會自動更新/etc/passwd 文件。
/etc/passwd 文件中每個入口用冒號(:)分割不同的屬性,格式如下:
Name:Password: UserID:PrincipleGroup:Gecos: HomeDirectory:Shell
Password 字段的值如果是星號(*)表明密碼無效;如果是感歎號(!)表明密碼在影子文件/etc/security/passwd 中。一般情況下,該字段是一個感歎號(!)。如果password 字段是星號(*),同時要求認證用戶,那麼用戶將無法登錄系統。
Shell 字段指明用戶調用 login或su 命令時所執行的初始程序或 shell。Korn shell是 AIX 操作系統標准的登錄 shell,與 Bourne shell 向後兼容。如果用戶沒有定義,缺省使用/usr/bin/sh(Bourne shell)。 Bourne shell 是 Korn shell 的子集。
用 mkuser 創建用戶時,password 字段總是初始化為星號(*)——標明一個無效的密碼。要用 passwd 或 pwdadm 命令設置密碼。一旦設置好密碼,感歎號(!)將填入/etc/passwd 文件,表明在/etc/security/passwd 文件中有加密的密碼。
3、/etc/environment 文件
/etc/environment 文件包含所有進程要用到的基本環境變量。每啟動一個新進程,exec 函數按 Name=Value 格式生成一個稱為“環境”的字符串排列,每個字符串左邊的 Name 叫做環境變量或 shell 變量。每個命令在開始運行前都會去檢查環境變量。登錄時,系統在讀取用戶的登錄腳本。profile 之前,先根據 environment 文件設定環境變量。
下面是構成基本環境的部分變量:
HOME:用戶登錄的完整路徑或用戶主目錄。Login 程序根據/etc/passwd 文件中的相應字段來設置該值。
LANG:用戶所在的國際區域設置。在系統安裝時,該變量設置在/etc/environment文件中。
PATH:當不按完整路徑執行命令時,將到 PATH 指定的一系列目錄中去搜尋所執行的命令。PATH 中不同的目錄名用冒號隔開。
TZ:時區信息。TZ 環境變量在/etc/environment 中設置。
4、創建和修改用戶密碼
passwd命令在/etc/security/passwd文件中創建一個加密的passwd入口,然後把/etc/passwd 文件中的相應 Password 字段從星號(*)改成感歎號(!)。下面例子顯
示該命令如何修改用戶密碼:
passwd
如果有舊密碼,並且不是超級用戶,passwd命令先提示輸入舊密碼,之後命令兩次提示輸入新密碼(用於確認)。
5、顯示當前登錄用戶
who 命令顯示當前本地系統中在線的所有用戶信息,包含登錄名、登錄終端名、登錄日期和時間。輸入 whoami 或 who am I 顯示自己登錄的名名、終端名、日期和時間。如果是從遠程登錄的用戶,同時還會顯示遠程主機名。who 命令還能顯示至上次鍵盤活動以來流逝的時間和命令解釋器(shell)、登錄進程等在初始化過程中產生進程的進程號。
下面例子顯示 who命令的不同用法:
(1)顯示目前登錄到系統中的所有用戶的信息:
# who
root pts/0 Nov 17 10:20(sv1166a.itsc.aus)
root pts/2 Nov 23 10:45(sv1121c.itsc.aus)
root pts/3 Nov 23 10:48(sv1121c)
(2)顯示自己的用戶名:
# who am I
root pts/3 Nov 23 10:48(sv1121c)
(3)顯示當前系統的運行級別:
# who -r
. run-level 2 Nov 17 10:19 2 0 S
查看本欄目更多精彩內容:http://www.bianceng.cn/OS/unix/
(4)顯示由 init 產生並且當前活動的進程
# who -p
rc . Nov 17 10:19 4:12 2896 id=rc
fbcheck . Nov 17 10:19 4:12 2898 id=fbcheck
srcmstr . Nov 17 10:19 4:12 2900 id=srcmstr
rctcpip . Nov 17 10:19 4:12 4648 id=rctcpip
rcnfs . Nov 17 10:19 4:12 4650 id=rcnfs
cron . Nov 17 10:19 4:12 4652 id=cron
piobe . Nov 17 10:19 4:12 4984 id=piobe
qdaemon . Nov 17 10:19 4:12 4986 id=qdaemon
writesrv . Nov 17 10:19 4:12 4988 id=writesr
uprintfd . Nov 17 10:19 4:12 4990 id=uprintf
pmd . Nov 17 10:19 4:12 8772 id=pmd
dt . Nov 17 10:19 4:12 9034 id=dt
id 命令也可以顯示用戶當前登錄信息
6、修改用戶的登錄 Shell
chsh 命令修改用戶的登錄 shell 屬性,該屬性定義了用戶登錄後運行的初始程序。該屬性在/etc/passwd文件中指定。缺省情況下 chsh 命令修改的是調用命令者的登錄 shell。chsh 命令是交互式的。運行時,系統列出可用的 shell 及用戶當前的 shell 屬性,然後提示修改 shell,輸入時必須包含可用 shell 的完整路徑。只要具有 chuser 命令的可執行權限,就可以修改別的用戶的登錄 shell。
7、修改 SHELL 提示符
shell 使用下述三種提示符變量:
PS1:正常的系統提示符。
PS2:當 shell 等待輸入時的提示符。
PS3:運行 select 子命令時的提示符。
對這些 shell 變量的修改一直作用到用戶退出。在。env 文件中對這些變量設置可使提示符的改變永久有效。
下列命令顯示當前的 PS1 變量的值:
# echo "prompt is $PS1":
prompt is $
下列命令顯示把當前提示符改成 Ready>:
export PS1="Ready> "
下列命令顯示把要求繼續的提示符改成 Enter more->:
export PS2="Enter more->"
下列命令顯示把運行 select 子命令提示符改成 Root->:
export PS3="Root->”