本文主要講解Linux使用者和使用者組的管理
Linux系統是一個多使用者多任務的分時作業系統,使用者必須向系統管理者申請一個賬号,以這個賬号的身份才能進入系統。
每個使用者賬号都擁有一個惟一的使用者名和各自的密碼。
一、使用者賬号的管理
使用者賬号的管理工作主要涉及到使用者賬号的添加、修改和删除。
1、添加使用者賬号
在系統中建立一個新賬号,然後為新賬号配置設定使用者号、使用者組、主目錄和登入Shell等資源。
剛添加的賬号是被鎖定的,無法使用。
文法:
useradd 選項 使用者名
參數說明:
-
- -d 目錄 指定使用者主目錄,如果此目錄不存在,則同時使用-m選項,可以建立主目錄。
- -g 使用者組 指定使用者所屬的使用者組。
- -G 使用者組,使用者組 指定使用者所屬的附加組。
- -s Shell檔案 指定使用者的登入Shell。
- -u 使用者号 指定使用者的使用者号,如果同時有-o選項,則可以重複使用其他使用者的辨別号。
執行個體:
# useradd –d /usr/sam -m -s /bin/sh -g group –G adm,root sam
此指令建立了一個使用者sam,其中-d和-m選項用來為sam産生一個主目錄/usr/sam(/usr為預設的使用者主目錄所在的父目錄)。
該使用者的登入Shell是
/bin/sh
,它屬于group使用者組,同時又屬于adm和root使用者組,其中group使用者組是其主組。
增加使用者賬号就是在/etc/passwd檔案中為新使用者增加一條記錄,同時更新其他系統檔案如/etc/shadow, /etc/group等。
Linux提供了內建的系統管理工具userconf,它可以用來對使用者賬号進行統一管理。
2、修改使用者賬号
根據實際情況更改使用者的有關屬性,如使用者号、主目錄、使用者組、登入Shell等。
文法:
usermod 選項 使用者名
選項含義同添加使用者賬号指令
3、删除使用者賬号
就是要将/etc/passwd等系統檔案中的該使用者記錄删除,必要時還删除使用者的主目錄。
文法:
userdel 選項 使用者名
常用的選項是-r,它的作用是把使用者的主目錄一起删除。
4、使用者密碼(密碼)管理
使用者賬号剛建立時沒有密碼,被系統鎖定,無法使用,必須為其指定密碼後才可以使用
超級使用者可以為自己和其他使用者指定密碼,普通使用者隻能修改自己的密碼
文法:
passwd 選項 使用者名
可使用的選項:
- -l 鎖定密碼,即禁用賬号。
- -u 密碼解鎖。
- -d 使賬号無密碼。
- -f 強迫使用者下次登入時修改密碼。
若未指定使用者名,則修改目前使用者的密碼。
二、使用者組的管理
每個使用者都有一個使用者組,系統可以對一個使用者組中的所有使用者進行集中管理
使用者組的管理涉及使用者組的添加、删除和修改。組的增加、删除和修改實際上就是對/etc/group檔案的更新。
1、添加使用者組
文法:
groupadd 選項 使用者組
選項:
- -g GID 指定新使用者組的組辨別号(GID)。
- -o 一般與-g選項同時使用,表示新使用者組的GID可以與系統已有使用者組的GID相同。
執行個體:
# groupadd -g 101 group
此指令向系統中增加了一個新組group,同時指定新組的組辨別号是101。
預設新組的組辨別号是在目前已有的最大組辨別号的基礎上加1。
2、修改使用者組
文法:
groupmod 選項 使用者組
選項:
- -g GID 為使用者組指定新的組辨別号。
- -o 與-g選項同時使用,使用者組的新GID可以與系統已有使用者組的GID相同。
- -n新使用者組 将使用者組的名字改為新名字
執行個體:
# groupmod –g 10000 -n group group1
将使用者組group的組辨別号更改為10000,改名為group1
3、删除使用者組
文法:
groupdel 使用者組
4、切換使用者組
如果一個使用者同時屬于多個使用者組,那麼使用者可以在使用者組之間切換,以便具有其他使用者組的權限。
文法:
newgrp 使用者組
三、與使用者賬号有關的系統檔案
與使用者和使用者組相關的資訊都存放在一些系統檔案中,這些檔案包括/etc/passwd, /etc/shadow, /etc/group等。
1、/etc/passwd檔案
每個使用者都在/etc/passwd檔案中有一個對應的記錄行,記錄了使用者的一些基本屬性。
這個檔案對所有使用者都是可讀的
檔案内容如下:
# cat /etc/passwd
root:x:0:0:Superuser:/:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
sam:x:200:50:Sam san:/usr/sam:/bin/sh
/etc/passwd中一行記錄對應着一個使用者,每行記錄又被冒号(:)分隔為7個字段,其格式和具體含義如下:
使用者名:密碼:使用者辨別号:組辨別号:注釋性描述:主目錄:登入Shell
說明如下:
(1)使用者名長度通常不超過8個字元,不能包含:
(2)現在許多Linux 系統(如SVR4)都使用了shadow技術,把真正的加密後的使用者密碼字存放到/etc/shadow檔案中,
而在/etc/passwd檔案的密碼字段中隻存放一個特殊的字元,例如“x”或者“*”。
(3)使用者辨別号一般情況下與使用者名是一一對應的。如果幾個使用者名對應的使用者辨別号是一樣的,系統内部将把它們視為同一個使用者,但是它們可以有不同的密碼、不同的主目錄以及不同的登入Shell等。通常使用者辨別号的取值範圍是0~65 535。0是超級使用者root的辨別号,1~99由系統保留,作為管理賬号,普通使用者的辨別号從100開始
(4)組辨別号對應着/etc/group檔案中的一條記錄。
(5)注釋性描述記錄使用者的個人資訊
(6)主目錄是使用者在登入後所處的目錄。在大多數系統中,各使用者的主目錄都被組織在同一個特定的目錄下,而使用者主目錄的名稱就是該使用者的登入名。各使用者對自己的主目錄有讀、寫、執行(搜尋)權限
(7)Shell是使用者與Linux系統之間的接口,負責将使用者的操作傳給核心,是使用者登入系統後運作的指令解釋器或某個特定的程式,
系統管理者可以根據系統情況和使用者習慣為使用者指定某個Shell。如果不指定Shell,那麼系統使用sh為預設的登入Shell,即這個字段的值為/bin/sh。
(8)僞使用者在/etc/passwd檔案中也占有一條記錄,但是不能登入,因為它們的登入Shell為空
僞 用 戶 含 義
bin 擁有可執行的使用者指令檔案
sys 擁有系統檔案
adm 擁有帳戶檔案
uucp UUCP使用
lp lp或lpd子系統使用
nobody NFS使用
2、/etc/shadow檔案
該檔案儲存使用者的加密密碼,隻有超級使用者才有讀權限
/etc/shadow中的記錄行與/etc/passwd中的一一對應,它由pwconv指令根據/etc/passwd中的資料自動産生
檔案内容如下:
# cat /etc/shadow
root:Dnakfw28zf38w:8764:0:168:7:::
bin:*::0:0::::
sys:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::
檔案格式與/etc/passwd類似,由若幹個字段組成,字段之間用":"隔開。這些字段是:
登入名:加密密碼:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:标志
(1)"密碼"字段存放的是加密後的使用者密碼字,長度為13個字元。如果為空,則對應使用者沒有密碼,登入時不需要密碼;
如果含有不屬于集合 { ./0-9A-Za-z }中的字元,則對應的使用者不能登入。
(2)"最小時間間隔"指的是兩次修改密碼之間所需的最小天數。
(3)"最大時間間隔"指的是密碼保持有效的最大天數。
(4)"警告時間"字段表示的是從系統開始警告使用者到使用者密碼正式失效之間的天數。
(5)"不活動時間"表示的是使用者沒有登入活動但賬号仍能保持有效的最大天數。
(6)"失效時間"字段給出的是一個絕對的天數,期滿後,該賬号就不能登入了。
3、/etc/group檔案
将使用者分組是Linux 系統中對使用者進行管理及控制通路權限的一種手段。
每個使用者都屬于某個使用者組;一個組中可以有多個使用者,一個使用者也可以屬于不同的組。
當一個使用者同時是多個組中的成員時,在/etc/passwd檔案中記錄的是使用者所屬的主組,也就是登入時所屬的預設組,而其他組稱為附加組。
使用者要通路屬于附加組的檔案時,必須首先使用newgrp指令使自己成為所要通路的組中的成員。
使用者組的所有資訊都存放在/etc/group檔案中。
檔案内容如下:
root::0:root
bin::2:root,bin
sys::3:root,uucp
users::20:root,sam
此檔案的格式也類似于/etc/passwd檔案,由冒号(:)隔開若幹個字段,這些字段有:
組名:密碼:組辨別号:組内使用者清單
- "組名"是使用者組的名稱。與/etc/passwd中的登入名一樣,組名不應重複。
- "密碼"字段存放的是使用者組加密後的密碼字。一般Linux 系統的使用者組都沒有密碼,即這個字段一般為空,或者是*。
- "組辨別号"與使用者辨別号類似,也是一個整數,被系統内部用來辨別組。
- "組内使用者清單"是屬于這個組的所有使用者的清單,不同使用者之間用逗号(,)分隔。這個使用者組可能是使用者的主組,也可能是附加組。
四、批量添加使用者
1、按照
/etc/passwd
檔案的格式書寫,要注意每個使用者的使用者名、UID、宿主目錄都不可以相同,其中密碼欄可以留做空白或輸入x
一個範例檔案user.txt内容如下:
user001::600:100:user:/home/user001:/bin/bash
user002::601:100:user:/home/user002:/bin/bash
2、 以 root 身份執行指令
/usr/sbin/newusers
,從剛建立的使用者檔案
user.txt
中導入資料,建立使用者:
# newusers < user.txt
然後執行指令
vipw
或
vi /etc/passwd
檢查
/etc/passwd
檔案是否已經出現這些使用者的資料,并且使用者的宿主目錄是否已經建立。
3、執行指令/usr/sbin/pwunconv。
将
/etc/shadow
産生的
shadow
密碼解碼,然後回寫到
/etc/passwd
中,并将
/etc/shadow
的
shadow
密碼欄删掉。
這是為了友善下一步的密碼轉換工作,即先取消
shadow password
功能。
# pwunconv
4、編輯每個使用者的密碼對照檔案。
範例檔案
passwd.txt
内容如下:
user001:密碼
user002:密碼
5、以root身份執行指令
/usr/sbin/chpasswd
。
建立使用者密碼,
chpasswd
會将經過
/usr/bin/passwd
指令編碼過的密碼寫入
/etc/passwd
的密碼欄。
# chpasswd < passwd.txt
6、确定密碼經編碼寫入/etc/passwd的密碼欄後。
執行指令
/usr/sbin/pwconv
将密碼編碼為
shadow password
,并将結果寫入
/etc/shadow
。
# pwconv
這樣就完成了大量使用者的建立了,之後您可以到/home下檢查這些使用者宿主目錄的權限設定是否都正确,并登入驗證使用者密碼是否正确。
讓我們一起遨遊在代碼的海洋裡!