歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux下的帳戶系統文件

linux系統中,用戶和組的相關系統都保存在用戶和組數據庫文件中,主要有“/etc/passwd”、“/etc/shadow”、“/etc/group”和“/etc/gshadow”四個文件。

(1),用戶帳號文件-passwd
/etc/passwd文件也稱為密碼文件,是於基本的用戶數據庫文件,它列出了所有有效用戶的相關信息。passwd文件需要能夠被所有用戶訪問。該文件內每個用戶占一行,被分為7個字段:
(1) 用戶名;
(2) 密碼,采用加密形式;
(3) UID;
(4) GID;
(5) 帳號信息,也叫GECOS。
(6) 用戶主目錄;
(7) 登錄shell。

/etc/passwd中UID很重要,系統使用UID而不是用戶名來區別用戶。0-99為系統UID,如果passwd文件中有兩個不同用戶具有相同的UID,則這兩個用戶對相互的文件具有相同的存取權限。

/etc/passwd文件qq格式可以使root能夠要求用戶定期修改他們的口令。passwd文件中,有些加密口令項中有“,”號,“,”號後字符的意義為:
(1)第一個字符,口令有效期的最大周數,
(2)第二個字符,再次修改口令前原口令需使用的最小周數,
(3)其余字符表示口令最新修改時間。
steve:xyDfccTrt180x,M.y8:0:0:admin:/:/bin/sh
pat:xmotTVoyumjls:0:0:admin:/:/bin/sh

口令中“,”後字符是根據passwd_esc計數器計算的,計算的方法為:
:=0
/=1
0~9=2~11
A~Z=12=37
a~z=38~63
root需要將前兩個字符放進/etc/passwd文件中,以要求用戶定期修改口令,另外兩個字符在用戶修改口令時由passwd自動寫入。可在“,”後加入“..”,使用戶在下次登錄時必須修改口令。有兩種特殊情況:
(1)第一字符小於第二字符,則不允許用戶修改口令,僅root可以修改;
(2)前兩個字符都是“.”,用戶下次登錄時將被要求修改口令,修改後passwd命令將“.”刪除,以後不再要求用戶修改口令。

(2),用戶口令文件-shadow
在影子口令機制中,加過密的口令數據項被從passwd文件中轉移到shadow文件中,passwd文件仍然可以被系統上所有用戶訪問,shadow文件只能被具有root權限的用戶訪問。shadow文件包含著口令失效期和帳號是否被禁用等信息,分為9個字段:
(1) 用戶名;
(2) 加過密的口令。如果為空則登錄時不需要口令,如果含有不屬於口令集{.,/,0-9,A-Z,a-z}中的字符,則對應的用戶不能登錄;
(3) 從1970年1月1日起計算,到用戶最後一次修改口令時的天數(時間起點會因系統不同而不同);
(4) 兩次修改口令之間所需的最小天數,即一次修改後需要再過多少天才能修改這個口令;
(5) 口令保持有效的最大天數,即一次修改後需要再過多少天這個口令必須被修改;
(6) 警告天數,需要在這個口令失效前多少天對用戶發出警告;
(7) 口令失效後多少天禁用此帳號,另外的解釋是用戶沒有登錄活動但帳號仍能保持有效的天數;
(8) 從1970年1月1日起計算,該口令已經被禁用多少天,另外的解釋是帳號從設置開始可使用的天數;
(9) 保留。

(3),用戶組帳號文件-group
每個用戶至少會屬於一個分組,也就是他缺省的用戶分組。在需要的情況下,用戶還可以分配到其他分組中去。group文件也需要能夠被所有用戶訪問,因為這樣應用程序才能測試用戶與分組之間的關聯性。分組名不允許超過8個字符,每個分組ID也必須是唯一的。/etc/group包含著每個每個用戶缺省的分組ID(GID),分為4個字段:
(1) 分組名;
(2) 加過密的分組口令;
(3) GID;
(4) 以“,”分隔的分組成員清單

(4),使用vipw和vigr命令編輯用戶帳號文件和組帳號文件
vipw或vigr啟動vi編輯器打開文件的一個副本,每次只允許一個人編輯passwd或group文件,可以防止用戶在passwd文件被編輯的時候修改他們的口令。當編輯結束時,用副本代替原文件。可以使用“vipw -s”給shadow文件加入對應的項。

(5),使用pwck和grpck驗證用戶和組帳號文件
pwck命令檢查密碼文件passwd和shadow的完整性,以確認文件中的信息都有正確的格式、各數據域有合法的信息。對於不正確的信息建議用戶刪除。
grpck命令檢查group和gshadow文件的完整性,以確認文件中的信息都有正確的格式、各數據域有合法的信息。

2,用戶帳號維護命令

(1),useradd命令
#useradd [參數] 用戶名
useradd命令允許一次添加一個用戶到系統中,如果命令中不定義參數,則使用各參數的默認值,可以使用“useradd-D”命令查看各參數的默認值。
-c 其他信息 (在GECOS域中設置用戶全名,與其它參數一樣,如果設置值中間有空格,必須在兩端加上引號)
-d 主目錄 (缺省情況下,用戶主目錄被定義為/home/用戶名,此參數可以改變主目錄)
-e 失效日期 (缺省情況下,帳號永不失效,此參數可以設置用戶失效日期,日期格式為MM/DD/YY,2000年用00表示)
-f 天數 (此參數定義口令失效後該帳號還能夠使用的天數,0表示立刻禁用,-1表示永不禁用,缺省值為-1)
-g 分組名或GID (此參數定義用戶的缺省分組,後面可以跟分組名或GID,但分組必須已經在group文件中定義)
-G 分組名或GID (此參數把用戶添加到其他的分組中去,可用“,”分隔,定義多個分組)
-M (不建立用戶登錄子目錄)
-n (redhat把建立一個與新用戶同名的分組做為用戶添加工作的一部分,此參數禁止這種行為)
-s shell路徑 (此參數可定義用戶的登錄shell,缺省為/bin/bash)
-u UID (缺省情況下,程序會自動找出一個可用的UID分配給新用戶,此參數可將指定UID分配給新用戶)
#useradd -c “H.D.core” -g admin -G sopport,root -s /bin/tcsh hdc
(添加一個名為hdc的用戶,命名為H.D.cor,缺省分組為admin並屬於sopport和root組,登錄shell為/bin/tcsh)

(2),usermod命令
#usermod [參數] 用戶名
usermod命令允許修改現有用戶的信息,它的工作原理與useradd類似,參數作用相同。在使用-l和-u參數時應注意,必須確認被修改的用戶當前沒有登錄上機或運行任何程序,否則會引起不便。
-l 新用戶名 (此參數可修改現有用戶的登錄名)

(3),userdel命令
#userdel [-r] 用戶名
userdel命令可刪除現有用戶,此命令只有-r一個可選參數。在不加參數時,將只刪除passwd、shadow和group中關於此用戶的項目,加-r參數將遞歸地刪除以上項目和登錄子目錄中該用戶的所有文件。

3,組帳號維護命令:

(1),groupadd命令
對於用戶分組進行操作的命令類似於對用戶進行操作的命令,但他們並不作用於單個用戶,而是作用於/etc/group文件中列出的分組。改變分組並不會改變該分組中用戶的屬性。
#groupadd [參數] 分組名
-g GID (指定新分組的GID,缺省情況下系統會把GID指定為找到的第一個可用值)
-r (缺省情況下,系統會自動搜索第一個大於499的GID值,此參數告groupadd命令這個一個系統分組,需要使用第一個小於499的可用值)
-f (在添加新分組時,如果該分組已經存在,命令會自動退出執行,使用此參數,在退出執行前不會修改分組的設置值)
#groupadd -g 800 test (添加一個GID為800,名為test的分組)

(2),groupmod命令
groupmod命令可以修改某個現有分組的屬性。
#groupmod [參數] 分組名
-g 新GID (改變現有分組的GID為新GID)
-n 新組名 (改變現有分組的分組名為新組名)
#group -g 1000 -n new test (將test分組的GID和分組名分別改為1000和new)

(3),groupdel命令
#groupdel 分組名 (刪除指定分組,此命令沒有可選參數)

4,口令維護命令

(1),passwd命令
root可以使用passwd命令修改任何用戶的口令。passwd會提示用戶輸入一個新口令,並需要重復輸入一次,如果輸入的口令過於簡單,passwd會發出抱怨,要求用戶使用復雜一些的口令。
#passwd [參數] 用戶名
-k或–keep-token (保持沒有到期認證的令牌)
-d或–delete (從指定的用戶名刪除口令,root only)
-l或–lock (鎖住指定的用戶名,root only)
-u或–unlock (解鎖指定的用戶名,root only)
-f或–force (強制操作)
-x或–maximum=DAYs (最大密碼生存天數,root only)
-n或–minimum=DAYs (最小密碼生存天數,root only)
-w或–warning=DAYs (密碼失效前對用戶發出警告的天數,root only)
-i或–inactive=DAYs (密碼失效後多少天禁用此帳戶,root only)
-S或–status (報告指定帳戶的口令狀態,root only)
–stdin (從stdin讀取新的令牌,root only)
–usage (顯示簡短的使用信息)

(2),gpasswd命令
類似於passwd命令,root可用gpasswd修改任何組的口令。
#gpasswd 分組名

(3),chfn命令
chfn用來改變finger信息,該信息是存放在/etc/passwd檔內的GECOS信息,可使用finger命令來顯示。linux的finger顯示4段信息:真實姓名、工作地點、辦電和宅電。
#chfn [參數] [用戶名]
-f 姓名 (改變指定用戶的姓名)
-o office (改變指定用戶的工作地)
-p phone (改變指定用戶的辦電)
-h homephone (改變指定用戶的宅電)

(4),chsh命令
chsh用來改變用戶的登錄shell,如果在命令列沒有指定shell,chsh會提示一個有效shell給用戶。
#chsh [參數] [用戶名]
-s (更改指定用戶的登錄shell)
-l (列出記錄在/etc/shells文件中的shell)

5,用戶和組狀態命令

(1),id命令
id命令用於顯示指定用戶的實際ID和有效ID。
#id [參數] [用戶名]
-a (忽略,用於兼容其他版本)
-g (只顯示有效{effective}GID)
-G (顯示所有GID)
-n (顯示用戶名而不是數字,不可單獨使用)
-r (顯示實際ID而不是有效ID)
-u (只顯示有效UID)

(2),whoami命令
whoami命令用於查看當前用戶名。

(3),su命令
使用su命令可以從當前用戶切換為其他用戶,如不加用戶名,則切換為root用戶。出於安全的考慮,系統一般禁止root從除系統控制台外的其他方式登錄,以root身分登錄一般使用su命令。從root切換到其他用戶時不需要輸入口令。su不記錄以root身份做了什麼,它會創建一條日志說明誰在什麼時候變成了root。
#su [參數] [用戶名]
-,-l,–login (類似重登錄為新用戶,以新用戶改變環境變量及登錄目錄)
-c 命令(變為新用戶,執行一條“命令”後再變回原用戶)
-f(不讀取啟動文件,如“csh,cshre”等,僅用於csh或tcsh兩種shell)
-m,-p(不改變環境變量)

(4),groups命令
groups命令用來顯示指定用戶的屬組。
#groups 用戶名

6,臨時禁用帳號
在不刪除帳號的情況下臨時禁用它,可以先編輯tail腳本,然後將該帳號的登錄shell改為此腳本,此腳本需設置可執行位。
#mkdir /usr/local/lib/no-login/ (建立no-login目錄)
#vi /usr/local/lib/no-login/deny (建立deny文件,加入以下內容)

#!/usr/bin/tail +2 (#!表示該行是一條命令,需要執行,+2表示顯示第2行以後的內容)
This account has been closed!
Please call 13995096098.

#chomd 755 /usr/local/lib/no-login/deny (給deny文件添加可執行位)

#chsh -s /usr/local/lib/no-login/deny 用戶名 (改變需要禁用的帳號的登錄shell為deny)

Copyright © Linux教程網 All Rights Reserved