(一)帳号管理的四個關鍵檔案
/etc/passwd //使用者資訊存放點
/etc/shadow //使用者資訊存放點,加密
/etc/group //組資訊存放點
/etc/gshadow //組資訊存放點,加密
1、 /etc/passwd檔案詳解
每一行代表一個使用者帳号。
每列用“:”号分隔,意思分别為:
使用者名:密碼:使用者ID:組ID:使用者備注資訊:使用者宿主目錄(home檔案)路徑:使用者指定的shell程式
密碼列:X,表示加密,密碼記錄在/etc/shadow中。
使用者ID:0号ID為系統管理ID,1~499為保留給系統的ID,500~65535為配置設定給使用者的ID.
例:
root:x:0:0:root:/root:/bin/bash //使用者名為root,密碼加密,使用者ID群組ID均為0表示系統管理ID,備注為root,home目錄為 /root ,使用/bin/bash作為shell程式。
khp:x:500:500:khp:/home/khp:/bin/bash
2、 /etc/shadow 詳解
使用者名:加密密碼:上次密碼變更時間(從1970.1.1日算起天數):在多長時間内不能更改密碼(天數):多長時間後必須更改密碼(天數):密碼到期前多久發送改密碼的警告資訊:密碼到期後多久失效:帳号失效時間:保留
khp:$1$CUcFhZc0$mi2fq5I5FhFKbDWcwnABO/:14587:0:99999:7:::
使用者名:khp
密碼: $1$CUcFhZc0$mi2fq5I5FhFKbDWcwnABO/
上次更改密碼時的時間:從1970年1月1日算起後的14587天,即2009年。
在多長時間内不能更改密碼:0,即随時可以更改密碼
多長時間後必須更改密碼:999,即無限期,可以一直不更改
密碼到期前多久發送改密碼的警告資訊:7,即密碼到期的前7天發送警告資訊
密碼到期多久後失效:此處為空,即不設定。假如我設定的密碼是2009年12月31日失效,此處值設為2,則到2010年1月2日後密碼就失效。
帳号失效時間:此處為空,假如我設定為2010年1月30日帳号失效,不管你有沒有改密碼,到2010年1月30日這個帳号都失效。
保留:留作以後新增其他用途。
因/etc/shadow是隻讀檔案,編輯後儲存需要用 :wq! 儲存。
3、 /etc/group詳解
每一行代表一個組ID,每列的意思分别為:
使用者組名稱:組密碼:組ID:組使用者名(即組包含哪些使用者)
khp:x:500:
4、 /etc/gshadow 詳解
使用者組名稱:組密碼:使用者組管理者帳号:組使用者名(該組的所屬帳号,即包含哪些使用者)
組密碼:當為空或為“!"時,表示為法登入
組管理帳号:有多個管理帳号,用“,”分開。
組使用者名:可以有多個組使用者,用“,”分開。
例:bin:::root,bin,daemon //組名為bin,密碼為空,使用者組管理者帳号為空,組使用者為root,bin,daemon
(二)初始化組和有效使用者組
初始化組:每個使用者建立立時就擁有了一個初始化組。/etc/passwd裡面的第四列的組名就是各使用者的初始化組。
例:khp:x:500:500:khp:/home/khp:/bin/bash //khp使用者的初始化組即為khp
有效使用者組:一個使用者可以加入到多個組中。
在/etc/group中,找到想加入的組名,然後在最後一列添加使用者,即可把這一使用者加入這一組。
例:vi /etc/group 找到 pla:x:501:khp 即把khp使用者加入到了pla組中。
這樣khp就屬于了khp 和pla兩個組了。當khp建立一個新的檔案時,這個檔案屬于哪個組呢?應該屬于有效使用者組。
groups指令檢視有效使用者組,排在第一個的組,就是有效使用者組。
例:groups
khp pla //khp屬于有效使用者組
newgroup 組名 //更改有效使用者組
newgroup pla 就可以把有效使用者組名改為pla
(三) 新增與删除使用者
新增與删除使用者有兩種方法,一種為用指令,一種是手工修改方法
1、手工修改方法
新增用使用者:
(1)用vi 編輯器打開 /etc/passwd
(2)增加一行,複制一行目前使用者資訊,然後更改使用者名和使用者ID,以及組ID即可。
(3)打開/etc/shadow 用同樣的方法增加加一行,更改使用者名。也可以在設定完/etc/passwd之後直接用 pwconv指令轉換即可。
(4)打開 /etc/group 和 /etc/gshadow,增加一行。最好的方法就是複制上面的一行,然後更改第一列的使用者名和第三列的組ID.
也可以在設定完/etc/group之後直接用 grpconv指令,生成相應使用者組在/etc/gshadow中的項目。
(5)設定新使用者的主目錄。用mkdir指令在/home目錄下建一個與使用者名相同的檔案夾
(6)用password 使用者名 指令指定新使用者的密碼
(7)複制基本初始化檔案到新使用者目錄下。初始化檔案一般都在/etc/skel下。
例:cp /etc/skel/.* /home/khp 即把/etc/skel下的所有檔案複制到新使用者目錄/home/khp下面
(8)用chown指令和chgrp指令讓新使用者擁有通路建立主目錄的權限,指定所有權
注:/etc/skel檔案,即使用者的基本初始化檔案。如windows中的docements and setting 中的all users檔案夾一樣,建立一個使用者,會把/etc/skel中的一些公用方件複制到新使用者目錄中,可以把一個新使用者的公司政策放于此資料夾中,建立 使用者時,新使用者目錄中會自動包含這引起公共檔案。
删除新使用者:
打開/etc/passwd /etc/shadow /etc/group /etc/gshadow 把相關的使用者群組資訊删除,然後把相應的使用者主目錄删除即可。
2、指令方法
(1) 新增使用者
useradd [-u UID] [-g init_group] [-G other_group] [-c 說明内容] [-mM] [-d name] [-r] [-s shell] username
-u:後面接UID,是一組數字。給這個帳号指定一個UID
-g:後面接初始使用者組
-G:後面接支援的使用者組,即有效使用者組
-c:後面接說明内容。/etc/passwd的第五列。
-m:要建立使用者目錄
-M:不要建立使用者目錄
-r:建立一個系統帳号。
-s:指定一個shell。預設是/bin/bash
如果不跟參數直接用 useradd username指令:
預設會建一個與使用者名相同的初始使用者組。但如SUSE版本的就不會建立新使用者組,而以/etc/default/useradd内的GROUP設定值作為使用者的初始使用者組。
其他相關設定參照檔案/etc/default/useradd檔案
使用者UID/GID的設定,則是參照/etc/login.defs檔案。生成新使用者時的基本參數來自/etc/login.defs配置檔案中,包含了:密碼壽命,使用者ID,組ID。生成主目錄的設定等。可以通過其他配置檔案調整這一預設配置參數。
例:useradd khp
passwd khp //新增使用者并設定密碼
(2) 删除使用者 userdel username 即可删除使用者名
(3)修改使用者 usermod username 可以修改使用者設定。 參數和 useradd中的差不多。
(4)檢視使用者參數 finger username 可檢視使用者的參數。因為這個參數比較危險,一般不裝
(5) 檢視ID号 id username 檢視ID号。
(6)groupadd [-g gid][-r] groupname //增加組名
-g :後面接某個特定的GID,用來直接給予某個GID
-r:建立系統使用者組。
(7) groupdel groupname //删除組名
(8) groupmod [-g gid][-n groupname] //修改組參數
(9) gpasswd groupname //給組設密碼,還有以下功能:
gpasswd [-ad] user groupname
-a:将某使用者加入到groupname使用者組中
-d:将某使用者從groupname使用者組中删除
gpasswd [-AMRr] groupname
-A: 設定組管理者帳号,該使用者管理該組
-M:将某些帳号加入這個使用者組中
-r:将groupname的密碼删除
-R:讓groupname的密碼欄失效,是以newgrp指令就不能用了。
gpasswd -A khp -M khp,pla elitekgroup //把khp pla兩個帳号加入elitekgroup組中,且讓khp使用者管理這個組。
(四)陰影密碼組
管理linux使用者與組的所有指令。主要有/etc/passwd與/etc/group相結合。使密碼更安全。
1、pwck //檢查/etc/passwd帳号設定檔案内容的資訊
2、轉換使用者密碼
pwconv //轉換現有/etc/passwd檔案中的所有使用者密碼到加密檔案/etc/shadow中。讓密碼變成“X”。即變成加密密碼。
pwunconv //把/etc/shadow中的密碼重新寫回到/etc/passwd中,并且把/etc/shadow檔案删除。最好不要用這個指令。
3、 轉換組密碼
grpconv:轉換現有 /etc/group檔案相關資訊到 /etc/gshadow
grpunconv:把/etc/shadow中的資訊轉換到 /etc/group中,并删除 /etc/gshadow檔案,最好不要用。
(五) 切換使用者
1、su指令
su [-lcm] username
su:切換成其他使用者身份,但變量環境仍是現在使用者名的。如果後面不加使用者名,則是變換成root身份。
su-:變化成其他使用者身份,同時變換到要變換使用者名的環境變量。如果後面不加使用者名,就是變換成root身份。
su -l :與 su -用法一樣,變換使用者身份的同時,變換變量環境。
su -m :與 su 用法一樣,變換使用者身份,但不變換變量環境。
su -c :即變換使用者身份後,在新使用者身份下執行一次指令。是以後面要接指令,一起使用。
例: su //會提示輸入root密碼,即變換成root身份,但不更改變量環境。
su - // 會提示輸入root密碼,輸入root密碼後變換成root身份,同時更改成root身份的變量環境。
su - khp //會提示輸入密碼,輸入khp使用者的密碼後變換成khp的身份,同時更改成khp身份的變量環境。
su - khp -c ls //變換到khp 使用者身份,并且更改到khp環境,然後執行ls指令,列出khp目錄下面的檔案。
2、sudo指令
執行su指令時需要知道變換使用者身份的密碼,輸入密碼正确才可以變換身份。這樣做會不安全。
sudo 在變換使用者身份時,隻輸入自已本身的密碼,而不是準備變換使用者身份的密碼。如:我在khp使用者下,準備變換到root使用者身份,則輸入khp自已的密碼即可,而不是輸入root的密碼。
但使用sudo指令是有條件的,并不是所有使用者都可以執行這個指令。使用者執行sudo指令時,會查找/etc/sudoer檔案,判斷該使用者是否有執行sudo指令的權限,有權限時輸入自已密碼就可以變換身份了。
root使用者執行sudo指令時不需要輸入密碼。預設隻有root使用者可以執行sudo指令。
此處的關鍵是/etc/sudoer檔案。用visudo 指令編這個檔案。
(1)/etc/sudoer檔案
/etc/sudoer檔案的授權:
使用者帳号 登入的主機 = (可變換的使用者或組)[NOPASSWD:] 可以執行的指令
例:khp ALL=(ALL) ALL //即khp使用者可以變換成任何身份,可以執行任何令。 最好不要這樣設定,很不安全。
khp ALL= ALL //如果忘了輸入變換的身份,則表示隻能變換成root身份。
%khp ALL = (ALL) NOPASSWD: ALL //即khp使用者組的所有使用者在變換身份時都不需要輸入密碼,就加上NOPASSWD:參數。使用者組則在前面加%.
/etc/sudoer檔案的别名規則:
上例中全用ALL表示的有的登入主機,所有的可變換身份,所有的可執行指令,這樣很不安全,但如果給一批使用者授權相同的指令,且指令很多時,就會輸入很久。
可以先用别名定義好,然後在規則中套用别名即可以,就不用重複工作。
别名類型有:
Host_Alias:定義主機名稱
User_Alias:定義使用者别名
Runas_Alias:定義變換身份别名
Cmnd_Alias:定義指令别名
例:我想授權khp使用者可切換成root,pla身份,且可以執行指令 shutdown,rm,ls指令。
Runas_Alias ad = root,pla
Cmnd_Alias down = /sbin/shutdown,/sbin/rm,/sbin/ls //指令别名必須用絕對路徑。取消某個指令的執行時,在前面加!。
khp ALL = (ad) down //授權khp使用者可切換成root,pla身份,且可以執行指令 shutdown,rm,ls指令
sudo -l指令可以檢視使用者可以執行哪些sudo指令。