用戶分類
- 分類
用戶類別 | 用戶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內把密碼粘貼。