創建和管理用戶帳號
目標
完成這一章,你能做以下事情:
列出建立一個用戶帳號步驟
理解/etc/passwd文件的每一個字段的含義
理解/etc/group文件的每一個字段的含義
創建、修改和刪除用戶的帳號
啟用和禁用一個用戶帳號
1.1 用戶與用戶組 — 使用系統資源和數據
為了使用系統的資源,用戶首先要登錄系統,系統管理員可以控制其它用戶登錄系統,可以阻未授權的用戶運行程序,消耗系統資源,還可以控制其它人對存儲在系統中的數據的存取。
系統中的用戶被分成一個或多個用戶組。一種典型的情況是:文件可以被一個組的用戶存取,但是不能被用戶組之外的用戶存取。用戶對文件和目錄的存取都是基於他所屬的組的定義。
你為每一個使用你的系統的用戶分配一個用戶名(或叫登錄名),同樣也能選擇組和決定哪一個用戶被分配到哪一個組。
用戶可以使用命令/usr/bin/id來檢查自己的用戶ID和所屬的組ID。
1.2 用戶帳號的定義
用戶想要登錄一個系統,必須要有一個有效的用戶名,用戶ID 號,密碼,和在/etc/passwd中定義的其它的帳號信息。通過修改文件/etc/group,用戶可以屬於其它的組。最後,多數的用在/home目錄下都有一個目錄,在這個目錄下,他們可以存儲屬於自己的文件和目錄。
你可以通過命令行 useradd,userdel,和usermod或者用vi 編輯器來管理用戶的帳號。
1.3 /etc/passwd文件
/etc/passwd文件中包含用戶登錄所必須的信息。文件的每一行代表系統中的一個有效用戶。所有的域以冒號(:)作為分割符。
用戶名 用戶名是用戶在登錄時候使用的命令。用戶名的長度應在1到8個字符之間,第一個字符必須是字母。如果用戶名超過8個字符,只有前8個字符有效。
密碼 經過加密處理的口令。當用戶使用passwd命令設置密碼的時候,系統 會對用戶輸入的口令進行加密。密碼應該是6到8個字符,其中應該有一個數字或其他特殊字符。如果密碼這個域為空,登錄的時候就不需要密碼,但這會使系統很容易被入侵。密碼域為星號的用戶帳號無效,因為你鍵入的任何字符都不能被加密成為星號,所以沒有人可以使用這個帳號登錄系統。
用戶ID 系統中每一個用戶都被分配一個用戶ID號。ID 號為0是為root保留的。UID號1-99是為系統其它預定義的帳號保留的。
組ID 號 組ID號(GID)。這個號碼對應/etc/group文件中一行信息。
ID 字符竄 這是一個注釋字段,你可以在這裡加上關於這個用戶的其他的信息。例如用戶的全名,電話號碼,部門,和門牌號,行打印緩沖系統和finger命令會使用這個字段中的內容。
Home目錄 當用戶登錄時所在的目錄的絕對路徑名。如這個目錄不存在,或是無效,用戶就不 能登錄系統。
shell 當用戶登錄系統時要執行的命令的絕對路徑名,典型的情況下,這個命令是shell,通常使用的shell是/user/bin/sh,/usr/bin/ksh,和/usr/bin/csh。如果這個字段為空,系統會默認為/usr/bin/sh。命令字段不必都是一個shell,例如,你可以在/etc/passwd文件中創建一個條目:
date:rc70x.4.hgjdc:20:1::/:/usr/bin/date
在這裡命令字段為/usr/bin/date。如果使用date作為登錄名,然後鍵入正確的密碼,系統會運/bin/date命令。然後退出系統登錄。
注意;passwd文件的許可權限只能被設置為只讀(r—r—r--)同時屬主必須為root。
編輯/etc/paswd文件
當你正在用vi命令來編輯/etc/passwd文件時,一個用戶正試圖更改他的密碼,這個用戶的更改不會寫到這個文件中,為了避免這種情況出現,在編輯/etc/passwd文件時請使用vipw命令
$ vipw
這個命令通過拷貝/etc/passwd文件為/etc/passwd.tmp文件,並對/etc/passwd文件進行鎖定。如果這時有一個用戶想要更改密碼,他會被告之passwd文件正在使用。當你使用完vipw,系統會進行一些檢查,如果你的修改正確,臨時文件會被移動到/etc/passwd中。否則,/etc/passwd文件會繼續保持不能被修改的狀態。
檢查/etc/passwd文件
使用/usr/sbin/pwck命令可以檢查/etc/passwd文件的一致性。它會檢查每一行的域的數目,登錄的目錄和登錄執行的程序是否存在,驗證登錄名,用戶ID和組ID。
1.4 /etc/group 文件
/etc/group文件中包含有組的定義,組的字段使用冒號(:)分割。
組名 一個關於這個組的助記符。如果你對一個文件使用ls -l 命令,你會看到在“組” 域中的名字會顯示出來。
密碼 通常都沒有被使用,所以為空。如果你需要要設置組的權限,這個域可以是一個經過加密的組密碼。
組ID 組ID(GID)。這個號碼就是在文件/etc/passwd中的組ID字段中的號碼。這個號碼為組的成員共享,推薦系統管理員在創建組ID號的時候大於100,這樣可以避免同當前和將來的系統需求沖突。
組員列表: 組的成員的用戶名的一個列表。在有的unix操作系統中,不是所有的組的成員都在/etc/group文件中列出。用戶初始登錄組是在/etc/passwd文件的第四個域中定義,而不是在/etc/group 中定義。
請注意,一個用戶可以同時屬於不同的組,使用newgrp命令可以切換到不同的組中去。
$newgrp group_name
命令執行後,這個新組會成為用戶的有效組。切換到新的組不會不會更改/etc/passwd文件中的關於用戶的主組的定義,而僅僅會更改在使用newgrp命令後,用戶創建的任何文件的組的定義。不帶任何參數執行newgrp名會返回這個用戶在/etc/passwd文件中被分派的組。
使用/usr/sbin/grpck命令可以檢查/etc/group文件的一致性。這個命令可以檢查每一行的域的數目,和是否所有的登錄名都在/etc/passwd中存在。
1.5 使用命令行管理用戶帳號
useradd,usermod,userdel
groupadd,groupmod,groupdel
管理帳號和組的一種方式是使用命令。使用useradd命令會在/etc/passwd和/etc/group中增加一行,使用這個命令還可以選擇同時創建用戶的home目錄、shell和自動拷貝一個目錄下的文件到用戶的home目錄下。
語法;
useradd [ -u uid [-o]] [-g group] [-G group [group]] [-d dir] [-s shell]
[ -c command] –m [ -k skel dir]] login
其中-o選項允許多個UID,-m選項使建立home目錄。其中的許多的選項都是默認的。
例子:
1) 為用戶renay創建一個帳號,並且建立一個/home/renay的home目錄。使用/etc/skel作為框架目錄,/usr/bin/sh作為shell。並且使用下一個最高的UID。
useradd –m –s /usr/bin/sh renay
2)為名叫Tracy的用戶創建一個帳號。Tracy的主組為staff,tracy同時也是pe和chemistry組的成員。創建一個home 目錄,而剩下的項目都使用默認值。
useradd –m –g staff – G pe,chemistry tracy
顯示useradd命令的默認值。
useradd –D
更改默認的組為其他的組
useradd –D –g others
使用userdel命令刪除用戶。語法為:
userdel –r login
-r選項:在刪除用戶帳號的同時會刪除用戶的home目錄。
groupadd命令語法為:
groupadd [-g gid [-o]] group
例子:
增加一個叫economics的組。使用大於ID號100,並且最接近100的有效的組ID號。
groupadd economics
1.6 使用命令行方式更改用戶的密碼
任何用戶(普通用戶和超級用戶)更改密碼都需要使用passwd命令。通常用戶都能更改自己的密碼(但是不可以修改別人的密碼)。當使用這個命令的時候,用戶被提示輸入當前的密碼,然後再輸入新的密碼,然後系統會要求你再輸入一次新密碼,目的是為了驗證和避免輸入錯誤。如果第二個密碼同第一個密碼不一致,密碼不會被修改,並會會退出到shell提示符下。
如果用戶忘記了他的密碼,他必須尋求系統管理員的幫助。系統管理員可以通過passwd命令修改任何用戶的密碼。
有一個選項在創建用戶帳號的時候可以禁止用戶修改他們的密碼。在這種情況下,只有超級用戶可以修改這個用戶的密碼。
當更改或是分配一個用戶的密碼的時候請注意以下事情:
密碼至少6個字符。雖然可以超過6個字符,但只有前6個有有效。
密碼中必須要有兩個字母(大寫或小寫字母),至少有一個數字或特殊的字符,這主要為了密碼的安全性考慮。
注意:當你使用passwd命令的時候,系統會創建/etc/passwd文件的一個拷貝名為/etc/opasswd的文件。
你也可以用passwd命令來更改一個密碼的時限。
passwd –f –n min –x max name
min和max都是以天為單位。-f選項會強迫用戶在下一次登錄的時候修改他的密碼。
例子:
限制帳號fontana的密碼的有效期限
passwd -n 7 -x 35 fontana
強迫用戶buddy在下一次登錄的時候修改他的密碼:
passwd –f buddy