1. 程式人生 > >Linux賬號管理

Linux賬號管理

這裡寫圖片描述

Linux的賬號管理包括使用者與使用者組,它們兩者是多對多的關係,即一個使用者可以屬於多個使用者組,且一個使用者組可以包含多個使用者。一個使用者組中的使用者具有相同的許可權。
在Linux中,使用者的賬戶資訊和使用者組資訊都記錄在指定的檔案中,這些檔案構成了Linux使用者管理的基礎。下面我們就詳細介紹Linux使用者管理相關的檔案。

Linux的賬號檔案

1./etc/passwd

這個檔案雖然叫passwd,但實際存放Linux所有的賬戶資訊,其中每一行表示一個賬戶資訊,每條賬戶資訊由7個欄位構成,每個欄位用:分隔。
這個檔案中除了有root賬戶、我們自定義的使用者賬戶外,還有很多系統賬戶,如下所示:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

下面詳細介紹每個引數的含義:

1.1. 賬號名稱

1.2. 密碼

在passwd檔案中,密碼以x表示,實際的密碼存放在專門的密碼檔案/etc/shadow中。為何要這麼玩呢?
早起的Unix系統就是將密碼存放在passwd檔案中的這個位置上。但由於很多程式都需要讀這個檔案獲取使用者資訊,那麼密碼就很容易被獲取到,雖然密碼採用了MD5訊息摘要後再儲存在這裡,但仍然有被破解的風險,因此為了安全,現在的Linux系統都將密碼單獨存放在/etc/shadow中。

1.3. UID

UID=User Identifier,它是使用者的標識。Linux通過UID來區分一個個賬戶。
UID是一個0-65535範圍內的數字,不同的取值有不同的含義:

  • UID=0
    表示該賬戶為系統管理員。root的UID即為0.當然,你可把其他賬戶的UID設為0,此時該賬戶就擁有與root一樣的許可權。
  • UID=1~99
    Linux自行建立的賬戶,許可權和普通賬戶沒啥區別,只是為了規範。
  • UID=100~499
    系統操作相關的賬戶。這些賬戶是由使用者建立的,許可權和普通賬號的許可權沒啥區別,也只是為了規範。
  • UID=500~65535
    普通使用者的UID。

1.4. GID

GID=Group Identifier,他是使用者組的ID。它的取值範圍和UID遵循一樣的規範。

1.5. 賬號說明資訊

這個欄位是賬戶的說明資訊,並沒什麼卵用,只是為了看看。

1.6. 使用者主目錄

每個賬戶都有一個主目錄,使用者可以在各自的主目錄下為所欲為。
這個欄位就是設定賬戶的主目錄的路徑。

1.7. 該賬戶登入後的shell

當一個使用者登入後,Linux會給該使用者分配一個shell來和Linux核心通訊,這樣該使用者就能操控這臺計算機了。那麼Linux的shell有好多種,究竟給登入使用者分配哪個shell呢?這就是在這個引數中設定。
當然,如果不想讓使用者操控這臺計算機的話,可以將這個引數設為/sbin/nologin,這樣在使用者登入後Linux不會給他分配shell,從而該使用者無法操控這臺機器。

2./etc/shadow

這個檔案存放所有賬號的密碼,它的許可權為-r——–,也就是隻有root才能檢視這個檔案,它具體的內容如下:

root:$1$cfvc4Vwh$KuVS9yJeWOcLkEXKbTryf.:16477:0:99999:7:::
bin:*:16300:0:99999:7:::
daemon:*:16300:0:99999:7:::
adm:*:16300:0:99999:7:::
lp:*:16300:0:99999:7:::

和passwd一樣,也是一行代表一個賬號,引數之間用:分隔,每個引數的含義如下:

2.1 賬號名稱

2.2 密碼

這裡才是賬號真正的密碼存放的地方,它採用了MD5訊息摘要。

2.3 最近修改密碼的日期

這個欄位記錄了上次修改密碼的時間。
這個欄位表示從1970-1-1到上次修改密碼的天數。
如上述root密碼的修改時間為16477,也就是1970-1-1往後16477天,也就是2015年2月11日。

2.4 密碼不可以被修改的天數

這個值是從上次修改時間算起,密碼不可以被修改的天數。

2.5 密碼需要被重新設定的天數

從第三個欄位開始,經過多少天之後就需要重新設定密碼。

2.6 密碼更改期限前的發出警告的天數

2.7 密碼過期後的寬限天數

在寬限期間內賬號仍然可以登入,只不過會給出改密碼的提示。

2.8 賬號失效日期

這個值也是從1970-1-1往後的天數,到了那天,這個賬號就無法登入。
收費服務可以使用這個功能。

2.9 保留欄位

保留欄位目前還沒有任何作用。

3./etc/group

這個檔案中記錄的是GID和使用者名稱名的對應關係。具體內容如下:

root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm

3.1 使用者組名

3.2 使用者組密碼

使用者組密碼很少使用,這個密碼由使用者組管理員設定。
當然和使用者密碼一樣,使用者組的密碼也儲存在一個獨立檔案中:/etc/gshadow

3.3 GID

使用者組的ID

3.4 該組的使用者的使用者名稱

本組成員的使用者名稱。多個成員間用,隔開,注意:不能有任何空格!

4./etc/gshadow

這個檔案用於儲存使用者組的密碼,這個檔案主要作用是:如果root管理員非常忙,沒空管每個使用者組的成員,那麼可以指定幾個使用者組管理員,專門管理每組成員的新增與刪除。
本檔案具體內容如下:

root:::root
bin:::root,bin,daemon
daemon:::root,bin,daemon

4.1 使用者組名

4.2 密碼

密碼為!表示本使用者組無管理員。

4.3 本使用者組的管理員賬號

4.4 該使用者組的成員賬號

賬號管理

瞭解了這些檔案的構成後,接下來我們使用目錄來操作這些檔案,從而實現使用者賬號的管理。

1. 新增使用者:useradd

useradd [-引數 引數值] 使用者名稱

引數詳解:

1.1 -u

為賬戶指定一個UID。

1.2 -g

為賬戶指定一個初始化的GID。

1.3 -G

為賬戶指定還需要加入的使用者組。

1.4 -M

1.5 -m

1.6 -c

設定賬戶的描述資訊。

1.7 -d

設定賬戶的主目錄。

1.8 -r

建立一個系統管理員賬號。

1.9 -s

指定這個賬戶的shell。

1.10 -e

設定賬號失效日期,格式為:YYYY-MM-DD。

1.11 -f

設定密碼失效日。-1表示永不失效。

1.12 -D

檢視useradd預設的引數值。
當不用任何引數建立賬號時,會使用useradd預設的引數建立,我們可以使用useradd -D檢視預設的引數,如下:

GROUP=100#預設的使用者組GID為100
HOME=/home#預設在/home下建立使用者主目錄
INACTIVE=-1#密碼預設使用者失效
EXPIRE=#賬號也使用者失效
SHELL=/bin/bash#預設的shell為bash
SKEL=/etc/skel#將這個路徑下的目錄複製一份作為使用者主目錄
CREATE_MAIL_SPOOL=yes#是否使用者的mailbox

2. 設定密碼:passwd、chage

這兩個命令其實都是對/etc/shadow檔案中的內容進行修改。passwd能設定/etc/passwd檔案中的一部分引數,而chage能設定另一部分引數。

2.1 passwd

passwd [-引數 引數值] 使用者名稱
PS:不加使用者名錶示修改當前賬戶的密碼。

2.1.1 -l

將賬號鎖住,實則將shadow檔案中的密碼改為!

2.1.2 -u

將賬號解鎖。

2.1.3 -S

列出該使用者密碼的詳細資訊。

2.1.4 -n

設定不可以修改密碼的天數。

2.1.5 -x

設定必須要修改密碼的天數。

2.1.6 -w

設定過期前警告的天數。

2.1.7 -i

設定密碼失效日期。

2.2 chage

chage [-引數 引數值] 使用者名稱

2.2.1 -l

列出該賬號的詳細密碼資訊。

2.2.2 -d

檢視該賬號的最近一次改密時間。

2.2.3 -E

設定賬號失效日。

2.2.4 -I

設定密碼失效日。

2.2.5 -m

設定密碼不可以被修改的天數。

2.2.6 -M

設定密碼有效期。

2.2.7 -W

設定密碼過期警告的天數。

3. 修改賬戶資訊:usermod

該命令用於修改/etc/passwd和/etc/shadow中的資訊。

usermod [-引數 引數值] 使用者名稱

3.1 -L

凍結該賬號。其實將shadow的密碼改為!

3.2 -U

解凍該賬號。

3.3 其他引數請自行查閱。

4. 刪除賬戶:userdel

userdel [-r] username
-r :將使用者相關的資料均刪除,包括如下資料:
/etc/passwd和/etc/shadow中的賬戶資料
/etc/group和/etc/gshadow中的分組資訊
/home/username和/var/spool/mail/username中的個人資料

以下命令較為簡單,請自行查閱!

5. 檢視自己賬戶資訊:finger

6. 設定我的個人資訊:chfn

7. 修改自己賬戶的shell:chsh

8. 查詢指定賬戶的UID/GID:id

9. 新增使用者組:groupadd

10. 修改使用者組:groupmod

這裡寫圖片描述