Linux使用者和使用者組管理 使用者管理相關檔案
組資訊檔案 /etc/group
組密碼檔案 /etc/gshadow
使用者資訊檔案 /etc/passwd
這個檔案中儲存的就是系統中所有的使用者及其對應的使用者主要資訊。
檔案格式 :
第1欄位 | 第2欄位 | 第3欄位 | 第4欄位 | 第5欄位 | 第6欄位 | 第7欄位 |
使用者名稱稱 | 密碼標誌 | 使用者ID | 組ID | 使用者說明 | 家目錄 | 登陸後的Shell |
例如:root:x:0:0:root:/root:/bin/bash lizhouwei:x:1000:1000:lizhouwei:/home/lizhouwei:/bin/bash |
使用者名稱稱
第1個欄位是使用者名稱稱,使用者名稱稱只是為了方便管理員記憶,Linux 系統是通過使用者 ID (UID) 來區分不同使用者、分配使用者許可權的。而使用者名稱稱和 UID 的對應正是通過 /etc/passwd 這個檔案來定義的。
密碼標誌
第2個欄位是密碼標誌,這裡的"x"代表的是密碼標誌,表示使用者是擁有密碼的,而不是真正的密碼,真正的密碼是儲存在 /etc/shadow 檔案中的。由於這個檔案的許可權是 644,查詢命令如下:
[[email protected] /]# ls -l etc/passwd
-rw-r--r--. 1 root root 2282 Nov 5 20:19 etc/passwd
所有使用者都可以讀取 /etc/passwd 檔案,這樣非常容易導致密碼的洩露。雖然密碼是加密的,但是採用暴力破解的方式也是能夠進行破解的。所以現在的 Linux 系統把真正的加密密碼串放置在影子檔案/etc/shadow中,而影子檔案的許可權是 000,查詢命令如下:
[[email protected] /]# ls -l etc/shadow
----------. 1 root root 1266 Nov 5 20:19 etc/shadow
這個檔案是沒有任何許可權的,但因為我是 root 使用者,所以讀取許可權不受限制。當然,用強制修改的方法也是可以手工修改這個檔案的內容的。只有 root 使用者可以瀏覽和操作這個檔案,這樣就最大限度地保證了密碼的安全。
所以在 /etc/passwd 中"x"只是密碼標誌,代表使用者是擁有密碼的,具體的密碼要去 /etc/shadow 檔案中查詢。如果刪除了密碼標誌"x",那麼系統會認為這個使用者沒有密碼,從而導致只輸入使用者名稱而不用輸入密碼就可以登陸(使用者無密碼時遠端是不可以登陸的)。
UID
第3個欄位就是使用者 ID(UID),在Linux中系統是通過 UID 來識別不同的使用者和分配使用者許可權的。這些 UID 是有使用限制和要求的:
0:超級使用者 UID。如果使用者 UID 為 0,則代表這個賬號是管理員賬號。在 Linux 中只需把其他使用者的 UID 修改為 0 就可以把普通使用者升級成管理員了。
1~499:系統使用者(偽使用者)UID。這些 UID 是系統保留給系統使用者的 UID,也就是說 UID 是 1~499 範圍內的使用者是不能登入系統的,而是用來執行系統或服務的。其中,1~99 是系統保留的賬號,系統自動建立;100~499 是預留給使用者建立賬號的,但是這些使用者同樣也不能被刪除,因為一旦刪除,依賴這些使用者執行的服務或程式就不能正常執行,會導致系統問題。
500~65535:普通使用者 UID。建立的普通使用者 UID 從 500 開始,最大到 65535。
說明:在2.6.x 核心以後的 Linux 系統使用者 UID 已經可以支援 232 個使用者了。
GID
第4個欄位就是使用者的組 ID(GID),這個組ID是指使用者的初始組的標誌號。在Linux 中使用者可以同時加入初始組和附加組。
初始組:指使用者一登陸錄就立刻擁有這個使用者組的相關許可權。每個使用者的初始組只能有一個,在新增使用者時如果不指定初始組,則系統會建立一個與使用者名稱相同的組作為使用者的初始組。例如:我們手工新增使用者 lizhouwei,在建立使用者 lizhouwei 的同時就會建立 lizhouwei組作為 lizhouwei 使用者的初始組。
附加組:指使用者可以加入多個其他的使用者組,並擁有這些組的許可權。每個使用者只能有一個初始組,除初始組以外,把使用者再加入其他的使用者組,這些使用者組就是這個使用者的附加組。附加組可以有多個,而且使用者可以有這些附加組的許可權。例如:剛剛的 lizhouwei 使用者除屬於初始組 lizhouwei 外,我又把它加入了 users 組,那麼 lizhouwei 使用者同時屬於 lizhouwei 組、users 組,其中 lizhouwei 是初始組,users 是附加組。當然,初始組和附加組的身份是可以修改的,但是我們在工作中不修改初始組,只修改附加組,因為修改了初始組有時會讓管理員邏輯混亂。
使用者說明
第5個欄位是這個使用者的簡單說明,沒有什麼特殊作用,可以不寫。
家目錄
第6個欄位是這個使用者的家目錄,也就是使用者登入後有操作許可權的訪問目錄,我們把這個目錄稱為使用者的家目錄。
普通使用者家目錄: /home/ 使用者名稱
超級使用者的家目錄: /root 目錄
說明:在psswd中即使將用id(UID)改為0使用者管理員,其家目錄的位置是不變的,還是/home/使用者名稱
登入之後的Shell
Shell 就是 Linux 的命令直譯器。將Linux的命令翻譯成系統可以識別的機器語言,同時把系統的執行結果翻譯為使用者可以識別的 高階語言。Linux 的標準 Shell 就是 /bin/bash。
在 /etc/passwd 檔案中,大家可以把這個欄位理解為使用者登入之後所擁有的許可權。如果寫入的是 Linux 的標準 Shell,/bin/bash 就代表這個使用者擁有許可權範圍內的所有許可權。例如:
[[email protected] /]# vim etc/passwd
lizhouwei:x:1000:1000:lizhouwei:/home/lizhouwei:/bin/bash
例如:lizhouwei 使用者,它的登入 Shell 是 /bin/bash,那麼這個使用者就可以使用普通使用者的所有許可權。如果把 lizhouwei 使用者的 Shell 修改為 /sbin/nologin,那麼這個使用者就不能登入了,因為 /sbin/nologin 就是禁止登入的 Shell。如果我在這裡放入的系統命令,如 /usr/bin/passwd,那麼這個使用者可以登入,但登入之後就只能修改自己的密碼。
說明:在使用者的 Shell中不能隨便寫入和登陸沒有關係的命令,如 ls,否則系統不會識別這些命令,也就意味著這個使用者不能登入。
影子檔案 /etc/shadow
這個檔案中儲存著使用者的實際加密密碼和密碼有效期等引數。我們已經知道這個檔案的許可權是 000,所以除 root 使用者外,其他使用者是不能檢視的,這樣做有效地保證了密碼的安全。欄位之間使用":"作為分隔符。
第1欄位 | 第2欄位 | 第3欄位 | 第4欄位 | 第5欄位 | 第6欄位 | 第7欄位 | 第8個欄位 | 第9個欄位 |
使用者名稱稱 | 密碼 | 密碼最後一次修改曰期 |
密碼的兩次修改間隔時間 (和第3個欄位相比) |
密碼的有效期 (和第3個欄位相比) |
密碼修改到期前的警告天數 (和第5個欄位相比) |
密碼過期後的寬限天數 (和第5個欄位相比) |
賬號失效時間 |
保留 |
例如:lizhouwei:bIUmABK6YbB4k1w6Ai::0:99999:7::: |
使用者名稱稱
第1個欄位中儲存的是使用者名稱稱,和 /etc/passwd 檔案的使用者名稱稱相對應。
密碼
第2個欄位中儲存的是真正加密的密碼。在Linux 的密碼採用的是 SHA512 雜湊加密演算法。如果使用者密碼是"!!"或"*",代表沒有密碼是不能登入。例如:所有偽使用者的密碼都是"!!"或"*",代表沒有密碼是不能登入的。新建立的使用者如果不設定密碼,那麼它的密碼項也是"!!",代表這個使用者沒有密碼,不能登入。
密碼最後一次修改曰期
第3個欄位是密碼的修改日期,數值表示 當前日期 到 1970年1月1日的天數, 366 代表的就是 1971 年 1 月 1 日。
密碼的兩次修改間隔時間(和第三個欄位相比)
第4個欄位是密碼的兩次修改間隔時間。這個欄位要和第3個欄位相比,也就是說密碼被修改後多久不能再修改密碼。如果是 0,則密碼可以隨時修改。如果是 10,則代表密碼修改後 10 天之內不能再次修改這個密碼。
密碼的有效期(和第三個欄位相比)
第5個欄位是密碼的有效期。這個欄位也要和第三個欄位相比,也就是說密碼被修改後可以生效多少天。預設值 99999,也就是 27 年,大家可以認為永久生效。如果改為 90,那麼密碼被修改 90 天之後就必須再次修改,否則該使用者就不能登入了。我們在管理伺服器的時候可以通過這個欄位強制使用者定期修改密碼。
密碼修改到期前的警告天數(和第五個欄位相比)
第6個欄位是密碼修改到期前的警告天數。這個欄位要和第五個欄位相比,就是密碼到期前需提前幾天修改。預設值是7,也就是說從密碼到期前的 7 天開始,每次登入系統都會警告該使用者修改密碼。
密碼過期後的寬限天數(和第五個欄位相比)
第7個欄位是密碼過期後的寬限天數。也就是密碼過期後,使用者如果還是沒有修改密碼,那麼在寬限天數內使用者還是可以登入系統的;如果過了寬限天數,那麼使用者就無法再使用該密碼登入了。天數如果是 10,則代表密碼過期 10 天后失效;如果是 0,則代表密碼過期後立即失效;如果是 -1,則代表密碼永遠不會失效。
賬號失效時間
第8個欄位是用法的賬號失效時間。這裡同樣要寫時間戳,也就是用 1970 年 1 日 1 日進行時間換算。如果超過了失效時間,就算密碼沒有過期,使用者也就失效,無法使用了。
保留
這個欄位目前沒有使用。