用戶和組管理

用戶分類

  1. 分類
用戶類別 用戶ID
管理員 0
普通用戶 1-65535

其中普通用戶又分爲系統用戶和登錄用戶兩種:

用戶類別 用戶ID
系統用戶 1-499(爲守護類進程獲取系統資源而完成權限指派的用戶)
登錄用戶 500-60000(爲了完成交互式登錄使用的用戶)

用戶組類別

用戶組類別 特性
主組 創建用戶時,如果沒有爲其指定所屬的組, 系統會自動爲其創建一個與用戶名相同的組
附加組 默認組以外的其它組

認識配置文件

配置文件 作用
/etc/passwd 用戶及其屬性信息(名稱、uid、基本組id等等)
/etc/shadow 用戶密碼及其相關屬性
/etc/group 組及其屬性信息
/etc/gshadow 組密碼及其相關屬性。在用戶執行基本組切換時使用
  • 用戶及附屬信息
[root@localhost ~]# cat /etc/passwd
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
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
[root@localhost ~]# 

一共有7個字段,分別代表着 用戶名 、 控制密碼、UID、GID、註釋、用戶家目錄、登錄shell

用戶名(如第一行中的root就是用戶名),代表用戶賬號的字符串。

存放的就是該賬號的口令,爲什麼是 ‘x’ 呢?早期的unix系統口令確實是存放在這裏,但基於安全因素,後來就將其存放到 ‘/etc/shadow’ 中了,在這裏只用一個 ‘x’ 代替。

這個數字代表用戶標識號,也叫做uid。系統識別用戶身份就是通過這個數字來的,0就是root,也就是說你可以修改test用戶的uid爲0,那麼系統會認爲root和test爲同一個賬戶。

表示組標識號,也叫做gid。這個字段對應着/etc/group 中的一條記錄,其實/etc/group和/etc/passwd基本上類似。

註釋說明,該字段沒有實際意義,通常 useradd -c “註釋信息” wyh

用戶的家目錄,當用戶登錄時就處在這個目錄下。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

新增/刪除用戶和用戶組

[root@localhost ~]# head -n 3 /etc/shadow
root:$6$htJvSx/4ZVQWgMSW$pEWDszCMrOOX9N.Fy6kiBeag3ujYk6dviXj0P220j4739A5GVHYoxgQ.xe4sKbc9siGONzvSVP/h9sfLtM1Nz0::0:99999:7:::
bin:*:17632:0:99999:7:::
daemon:*:17632:0:99999:7:::
[root@localhost ~]# 

再來看看/etc/shadow這個文件,和/etc/passwd類似,用 ‘:’ 分割成9個字段。
  • 每個字段的含義是:

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.作爲保留用的,沒有什麼意義。

創建/修改一個用戶的密碼

  • 命令 : groupadd

  • 語法 : groupadd [-g GID] groupname

[root@localhost ~]# groupadd test  #創建一個名字叫test的組
[root@localhost ~]# tail -n 1 /etc/group
test:x:502:

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

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

  • 命令 : useradd
    語法 : useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]

‘-u’ 自定義UID

‘-g’ 使其屬於已經存在的某個組,後面可以跟組id, 也可以跟組名

‘-d’ 自定義用戶的家目錄

‘-M’ 不建立家目錄

‘-s’ 自定義shell
[root@localhost ~]# groupadd admin
[root@localhost ~]# useradd -u 666 -g admin -M -s /sbin/nologin haha  
# 創建一個haha用戶,屬組爲admin ,且沒有家目錄,不能登錄
[[root@localhost ~]# tail -n 2 /etc/passwd
haha:x:666:1000::/home/haha:/sbin/nologin

useradd’ 不加任何選項直接跟用戶名,則會創建一個跟用戶名同樣名字的組。

[root@localhost ~]# useradd xiaofan
[root@localhost ~]# ls /home/
xiaofan
[root@localhost ~]#
  • 刪除賬戶
  • 命令 : userdel

語法 : userdel [-r] username

[root@localhost ~]# ls /home/
hbs  xiaofan
[root@localhost ~]# userdel xiaofan
[root@localhost ~]# ls /home/
hbs  xiaofan
[root@localhost ~]# tail -n 2 /etc/passwd
haha:x:666:1000::/home/haha:/sbin/nologin
hbs:x:1001:1002::/home/hbs:/bin/bash
[root@localhost ~]# 
  • userdel -r
[root@localhost ~]# userdel -r hbs
[root@localhost ~]# ls /home/
xiaofan
[root@localhost ~]# tail -n 2 /etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
haha:x:666:1000::/home/haha:/sbin/nologin
[root@localhost ~]# 

加 -r 可以刪除家目錄,不加-r 家目錄不會刪除

創建/修改一個用戶的密碼

  • 命令 : passwd

語法 : passwd [username]

等創建完賬戶後,默認是沒有設置密碼的,雖然沒有密碼,但該賬戶同樣登錄不了系統。只有設置好密碼後方可登錄系統。爲用戶創建密碼時,爲了安全起見,請儘量設置複雜一些。你可以按照這樣的規則來設置密碼:

長度大於10個字符; 
密碼中包含大小寫字母數字以及特殊字符 ‘*’, ‘&’, ‘%’ 等; 
不規則性(不要出現root, happy, love, linux, 7758520, 111111等等單詞或者數字); 
不要帶有自己名字、公司名字、自己電話、自己生日等。 
[root@localhost ~]# passwd
更改用戶 root 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd: 所有的身份驗證令牌已經成功更新。
“passwd” 後面不加username則是修改當前賬戶的密碼。如果你登陸的是root賬戶,後面可以跟普通賬戶的名字,意思是修改指定賬戶的密碼。

修改user11 的密碼

[root@localhost ~]# passwd user11
更改用戶 user11 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd: 所有的身份驗證令牌已經成功更新。
只有root纔可以修該其他賬戶的密碼,普通賬戶只能修改自己的密碼,其他賬戶的密碼是不可以修改的。
  • 命令 : mkpasswd

這個命令經常用來生成密碼,省的自己去想。默認你的Linux是沒有這個命令的,需要安裝一個包 “expect”, 如果你的CentOS可以上網,請使用命令 yum install -y expect 即可完成安裝。安裝好後,輸入命令:

[root@localhost ~]# mkpasswd
HXut8oy*8

生成的隨機字符串就可以作爲一個密碼,只不過這個密碼不容易記憶,沒有關係,等會介紹一個小工具來幫你記錄密碼,而且很安全。

用戶身份切換

Linux系統中,有時候普通用戶有些事情是不能做的,除非是root用戶才能做到。這時就需要臨時切換到root身份來做事了

[root@localhost ~]# useradd xixi   #創建用戶嘻嘻
[root@localhost ~]# echo "123456"|passwd --stdin xixi 給用戶更改密碼
Changing password for user xixi.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# 
這裏介紹了另外一種改密碼方式echo "xx"|passwd --stdin xx

切換用戶身份:

  • su
[root@localhost ~]# su xixi  
[xixi@localhost root]$ 

[root@localhost ~]# su - xixi
Last login: Fri Nov 15 21:10:02 CST 2019 on pts/0
[xixi@localhost ~]$ 


注意:root用戶是“#”,普通用戶模式“$”
如果不加 ‘-‘ 切換到root賬戶下時,當前目錄沒有變化,
而加上 ‘-‘ 切換到root賬戶後,當前目錄爲root賬戶的家目錄,這跟直接登陸root賬戶是一樣的。
當用root切換普通用戶時,是不需要輸入密碼的。這也體現了root用戶至高無上的權利
  • sudo

用su是可以切換用戶身份,如果每個普通用戶都能切換到root身份,如果某個用戶不小心泄漏了root的密碼,那豈不是系統非常的不安全?沒有錯,爲了改進這個問題,產生了sudo這個命令。使用sudo執行一個root才能執行的命令是可以辦到的,但是需要輸入密碼,這個密碼並不是root的密碼而是用戶自己的密碼。默認只有root用戶能使用sudo命令,普通用戶想要使用sudo,是需要root預先設定的,即,使用 visudo 命令去編輯相關的配置文件/etc/sudoers. 如果沒有visudo這個命令,請使用 yum install -y sudo 安裝。

默認root能夠sudo是因爲這個文件中有一行 “root ALL=(ALL) ALL” 在該行下面加入 “test ALL=(ALL) ALL” 就可以讓test用戶擁有了sudo的權利。

[root@localhost ~]# visudo  # =可以使用 vi  /etc/sudoers
visudo: /etc/sudoers.tmp unchanged
[root@localhost ~]# 
……
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
xixi    ALL=(ALL)      /usr/sbin/useradd,/usr/sbin/userdel

[root@localhost ~]# grep xixi /etc/sudoers
xixi    ALL=(ALL)      /usr/sbin/useradd,/usr/sbin/userdel   
#xixi 可以怎加,刪除用戶
[root@localhost ~]# 

記錄密碼的軟件

  • 官網地址:http://www.keepass.info
    這款軟件是免費的、開源的、容易使用輕量級的密碼管理工具
  • 使用教程:
安裝好後,運行keepass,首先創建一個新的密碼庫文件。 
點菜單欄 “file” 然後選擇 “new” , 爲密碼庫文件找一個安全的地方存放。接下來,爲我們的密碼文件創建一個 “master password” , 這個密碼以後每次我們查看密碼的時候都需要輸入,輸入正確後纔可以查看,這樣的設計也是爲了安全。設置好密碼後連續點兩個 “ok” 完成創建密碼庫文件。

增加一個group 
鼠標選中左側的 “NewDatebase”, 點右鍵選擇 “Add Group”, 單擊後創建新組,然後更改組名,比說叫做 “test”. 當然組下面還可以創建組,方法一樣的。

創建一個Entry 
鼠標左鍵先點一下剛纔創建的組 “test” , 然後在右側空白處右鍵單擊,選擇 “Add Entry”. 彈出一個會話窗口,Title 自定義,方便我們以後查找; User name 用來記錄密碼的用戶是誰; Password 這個默認就存在了,也可以更改,點一下後面的 ”...” 圖標可以查看密碼的內容,再點一下變爲不可見狀態; URL 用來記錄網址,方便我們跳轉,比如這個密碼爲某個網站的某個會員的密碼,那如果在這裏填寫了該網址地址,則可以直接跳轉到那個網站,可以留空;Notes 用來寫一些與這個密碼相關的信息,方便我們記憶,可以留空。

修改Entry信息 
在右側窗口,選中要修改的Entry那行,鼠標移動到Title區域,雙擊則會跳出一個會話窗口,我們可以更改Entry的各項信息。

獲取Entry密碼 
同樣是在右側窗口,選中要獲取的密碼那行,鼠標移動到Password區域,直接雙擊,就把密碼複製到剪切板了,密碼會在剪切板中保存12s,過期會失效,所以你應該在12s內把密碼粘貼。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章