用戶和密碼配置文件,用戶和用戶組管理

3.1 用戶配置文件和密碼配置文件


  1. /etc/passwd是用戶配置文件


[root@localhost ~]# cat /etc/passwd | head
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
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin  
  在該文件中,每一行用戶記錄的各個數據段用“:”分隔,分別定義了用戶的各方面屬性。各個字段的順序和含義如下:

用戶名:口令:用戶標識號:組標識號:註釋說明:用戶名:用戶主目錄:命令解釋程序 

  •   用戶名(如第一行中的root就是用戶名):代表用戶賬號的字符串。用戶名字符可以是大小寫字母、數字、減號(不能出現在首位)、點以及下劃線,其他字符不合法。雖然用戶名中可以出現點,但不建議使用,尤其是首位爲點時,另外減號也不建議使用,因爲容易造成混淆。
  •   口令(passwd):存放的就是該賬號的口令,爲什麼是 ‘x’ 呢?早期的unix系統口令確實是存放在這裏,但基於安全因素,後來就將其存放到 ‘/etc/shadow’ 中了,在這裏只用一個 ‘x’ 代替。
現在的Unix/Linux系統中,口令不再直接保存在passwd文件中,通常將passwd文件中的口令字段使用一個“x”來代替,將/etc /shadow作爲真正的口令文件,用於保存包括個人口令在內的數據。當然shadow文件是不能被普通用戶讀取的,只有超級用戶纔有權讀取。
此外,需要注意的是,如果passwd字段中的第一個字符是“*”的話,那麼,就表示該賬號被查封了,系統不允許持有該賬號的用戶登錄。
  
  •   用戶標識號(UID):這個數字代表用戶標識號,也叫做uid。系統識別用戶身份就是通過這個數字來的,0就是root,也就是說你可以修改test用戶的uid爲0,那麼系統會認爲root和test爲同一個賬戶。通常uid的取值範圍是0~65535(但實際上已經可以支持到4294967294),0是超級用戶(root)的標識號,1~499由系統保留,作爲管理賬號,普通用戶的標識號從500開始,如果我們自定義建立一個普通用戶,你會看到該賬戶的標識號是大於或等於500的。
  •   組標識號(GID):表示組標識號,也叫做gid。這個字段對應着/etc/group 中的一條記錄,其實/etc/group和/etc/passwd基本上類似。
  • 註釋說明,該字段沒有實際意義,通常記錄該用戶的一些屬性,例如姓名、電話、地址等等。不過,當你使用finger的功能時就會顯示這些信息的
  •   用戶的家目錄,當用戶登錄時就處在這個目錄下。root的家目錄是/root,普通用戶的家目錄則爲/home/username,這個字段是可以自定義的,比如你建立一個普通用戶test1,要想讓test1的家目錄在/data目錄下,只要修改/etc/passwd文件中test1那行中的該字段爲/data即可。
  •   shell,用戶登錄後要啓動一個進程,用來將用戶下達的指令傳給內核,這就是shell。Linux的shell有很多種sh, csh, ksh, tcsh, bash等,而Redhat/CentOS的shell就是bash。查看/etc/passwd文件,該字段中除了/bin/bash外還有/sbin/nologin比較多,它表示不允許該賬號登錄。如果你想建立一個賬號不讓他登錄,那麼就可以把該字段改成/sbin/nologin,默認是/bin/bash.



2. /etc/shadow是密碼配置文件

/etc/shadow文件格式與/etc/passwd文件格式類似,同樣由若
幹個字段組成,字段之間用“:”隔開。通過命令行輸入sudo cat /etc/shadow進行文件內容查看:
root:!:17043:0:99999:7:::
daemon:*:16652:0:99999:7:::
bin:*:16652:0:99999:7:::
sys:*:16652:0:99999:7:::
sync:*:16652:0:99999:7:::
games:*:16652:0:99999:7:::
man:*:16652:0:99999:7:::
lp:*:16652:0:99999:7:::
mail:*:16652:0:99999:7:::
news:*:16652:0:99999:7:::
uucp:*:16652:0:99999:7:::
proxy:*:16652:0:99999:7:::
www-data:*:16652:0:99999:7:::
backup:*:16652:0:99999:7:::
list:*:16652:0:99999:7:::
irc:*:16652:0:99999:7:::
gnats:*:16652:0:99999:7:::
nobody:*:16652:0:99999:7:::
libuuid:!:16652:0:99999:7:::
syslog:*:16652:0:99999:7:::
messagebus:*:16652:0:99999:7:::
usbmux:*:16652:0:99999:7:::
dnsmasq:*:16652:0:99999:7:::
avahi-autoipd:*:16652:0:99999:7:::
kernoops:*:16652:0:99999:7:::
rtkit:*:16652:0:99999:7:::




文件中字段主要含義爲:
用戶名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌


  • 每個字段的含義是:

1,用戶名,跟/etc/passwd對應。
2,用戶密碼,這個纔是該賬號的真正的密碼,不過這個密碼已經加密過了,但是有些黑客還是能夠解密的。所以,該文件屬性設置爲000,但是root賬戶是可以訪問或更改的。
 [root@localhost ~]# ls -l /etc/shadow---------- 1 root root 719 5月  10 09:02 /etc/shadow
3,上次更改密碼的日期,這個數字是這樣計算得來的,距離1970年1月1日到上次更改密碼的日期,例如上次更改密碼的日期爲2012年1月1日,則這個值就是 ‘365 x (2012-1970) + (2012-1970)/4 + 1 = 15341’. 因爲如果是閏年,則有366天。
4,要過多少天纔可以更改密碼,默認是0,即不限制。
5,密碼多少天后到期。即在多少天內必須更改密碼,例如這裏設置成30,則30天內必須更改一次密碼,否則將不能登錄系統,默認是99999,可以理解爲永遠不需要改。
6,密碼到期前的警告期限,若這個值設置成7,則表示當7天后密碼過期時,系統就發出警告告訴用戶,提醒用戶他的密碼將在7天后到期。
7,賬號失效期限。你可以這樣理解,如果設置這個值爲3,則表示:密碼已經到期,然而用戶並沒有在到期前修改密碼,那麼再過3天,則這個賬號就失效了,即鎖定了。
8,賬號的生命週期,跟第三段一樣,是按距離1970年1月1日多少天算的。它表示的含義是,賬號在這個日期前可以使用,到期後賬號作廢。
9,作爲保留用的,沒有什麼意義。


3.2 用戶組管理


1,新增一個組

命令 : groupadd

語法 : groupadd [-g GID] groupname

[root@localhost ~]# groupadd grptest1
[root@localhost ~]# tail -n1 /etc/group
grptest1:x:502:

不加 “-g” 選項則按照系統默認的gid創建組,跟用戶一樣,gid也是從500開始的。

[root@localhost ~]# groupadd -g 511 grptest2
[root@localhost ~]# tail -n2 /etc/group
grptest1:x:502:
grptest2:x:511:
“-g” 選項可以自定義gid.


2,刪除一個組

命令 : groupdel


[root@localhost ~]# groupdel grptest2
[root@localhost ~]# tail -n3 /etc/group
testgroup:x:500:
user1:x:501:
grptest1:x:502:


該命令沒有特殊選項,但有一種情況不能刪除組:


[root@localhost ~]# groupdel user1
groupdel: cannot remove the primary group of user 'user1'
這是因爲user1組中包含user1賬戶,只有刪除user1賬戶後纔可以刪除該組。


3.3 用戶管理


1,增加賬戶


命令 : useradd
語法 : useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]
‘-u’ 自定義UID
‘-g’ 使其屬於已經存在的某個組,後面可以跟組id, 也可以跟組名
‘-d’ 自定義用戶的家目錄
‘-M’ 不建立家目錄
‘-s’ 自定義shell


[root@localhost ~]# useradd test10
[root@localhost ~]# tail -n1 /etc/passwd
test10:x:500:503::/home/test10:/bin/bash
[root@localhost ~]# tail -n1 /etc/group
test10:x:503:
‘useradd’ 不加任何選項直接跟用戶名,則會創建一個跟用戶名同樣名字的組。


[root@localhost ~]# useradd -u510 -g 513 -M -s /sbin/nologin user11
useradd: group '513' does not exist
[root@localhost ~]# useradd -u510 -g 502 -M -s /sbin/nologin user11
[root@localhost ~]# useradd -u511 -g grptest1 user12
[root@localhost ~]# tail -n2 /etc/passwd
user11:x:510:502::/home/user11:/sbin/nologin
user12:x:511:502::/home/user12:/bin/bash
[root@localhost ~]# tail -n2 /etc/group
grptest1:x:502:
test10:x:503:
‘-g’ 選項後面跟一個不存在的gid會報錯,提示該組不存在。剛剛上面說過 ‘-M’ 選項加上後則不建立用戶家目錄,但是在/etc/passwd文件中仍然有這個字段。但是你使用 ls /home/user11 查看一下會提示該目錄不存在。所以 ‘-M’ 選項的作用只是不創建那個目錄。


[root@localhost ~]# ls /home/user11
ls: 無法訪問/home/user11: 沒有那個文件或目錄
  2,刪除賬戶


命令 : userdel

語法 : userdel [-r] username

[root@localhost ~]# ls -ld /home/user12
drwx------ 3 user12 grptest1 4096 5月  11 07:12 /home/user12
[root@localhost ~]# userdel user12
[root@localhost ~]# ls -ld /home/user12
drwx------ 3 511 grptest1 4096 5月  11 07:12 /home/user12
[root@localhost ~]# ls -ld /home/test10/
drwx------ 3 test10 test10 4096 5月  11 07:09 /home/test10/
[root@localhost ~]# userdel  -r test10
[root@localhost ~]# ls -ld /home/test10/
ls: 無法訪問/home/test10/: 沒有那個文件或目錄
‘-r’ 選項的作用只有一個,就是刪除賬戶的時候連帶賬戶的家目錄一起刪除。
發佈了29 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章