推特 Q1 營收 12 億美元,淨利潤 5.13 億美元約為馬斯克收購價的 1.1%
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中的個人資料
以下命令較為簡單,請自行查閱!