在 Linux 中,如何管理用戶、管理許可權?請看下文,謝謝配合。 ...
在Linux
中,如何管理用戶、管理許可權?請看下文,謝謝配合。
用戶、組概述
用戶分類
超級用戶:root,人為交互最高許可權用戶,
system
為最高許可權用戶。普通用戶:通過管理管理員創建,許可權受到一定限制。
程式用戶:不允許登陸,維持系統或某個程式的正常運行。
用戶配置文件
- /etc/passwd:包含用戶賬號的基本信息
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
賬號名稱:密碼占位符:UID:GID:用戶說明:家目錄:登陸shell
- /etc/shadow:包含用戶賬號的密碼信息(影子文件)
[root@localhost ~]# head -1 /etc/shadow
root:$6$4/ne8o5V38hiA2jr$6SclA1hllj8FPXqyMtfof5T4NMH1gJeDQ31AfoR4wapYPBQWlbZQKKPkuUBWoqgwA1GsuHW.1lTg59tyfrwvC/::0:99999:7:::
賬號名稱:密碼信息:上次修改密碼的時間:密碼最短有效天數:密碼最長有效天數:提前7天警告密碼將過期:密碼過期後多少天內禁用此用戶:賬號失效時間:保留欄位
- 個別詳細解釋
密碼信息
:MD5加密的密碼字串信息;為*
或!!
時,被鎖定,不能登陸;為空,無密碼。
上次修改密碼的時間
:表示從1970年1月1日到最近一次修改密碼那天所間隔的天數。
密碼最短有效天數
:修改密碼後,最少經過多少天才能再次修改密碼。預設為0
,不限制。
密碼最長有效天數
:修改密碼後,經過該天數,必須再次修改密碼。預設為99999
,不限制。
提前7天警告密碼將過期
:預設值為7
。
賬號失效時間
:指定用戶賬號作廢的天數,從1970年1月1日起計算。
組分類
基本組(私有組):伴隨用戶的創建而創建,與用戶同名。用戶只能屬於一個基本組,在
/etc/passwd
中查看。附加組(公共組):用戶可屬於多個附加組,在
/etc/group
中查看。
組配置文件
/etc/group:包含組的基本信息
/etc/gshadow:包含組的密碼信息
1.查詢root
組包含哪些用戶
[root@localhost ~]# grep "^root" /etc/group
root:x:0:
2.查詢那些組包含root
用戶
[root@localhost ~]# grep "root" /etc/group
root:x:0:
UID 和 GID
- UID:用戶識別號
用戶 | UID 範圍 |
---|---|
root | 0 |
程式用戶 | 1 ~ 999 |
普通用戶 | 1000 ~ 60000 |
- GID:組識別號
用戶、組管理
useradd
- 添加用戶賬號
-u
:指定UID
-d
:指定家目錄位置
-e
:指定賬戶失效時間,YYYY-MM-DD
或天數
。
-g
:指定基本組名稱或GID
-G
:指定附加組
-M
:不創建宿主目錄
-s
:指定用戶的登陸shell
,/bin/bash
可登錄,/sbin/nologin
不可登錄。
[root@localhost ~]# useradd -d /zhangsan zhangsan
[root@localhost ~]# useradd -e 2020-01-01 -s /sbin/nologin ftpuser
用戶賬號初始配置文件
- 來源:模板目錄
/etc/skel
- 用途:可以做一些自動運行的後臺管理任務
[root@localhost ~]# ls -a /zhangsan/
. .. .bash_logout .bash_profile .bashrc
.bash_logout
:每次退出登陸時執行
.bash_profile
:用戶每次登陸時被執行
.bashrc
:每次載入/bin/bash
時執行,包括登錄系統。
- 每次登出時清空歷史記錄
[root@localhost ~]# vi .bash_logout
# ~/.bash_logout
history -c
passwd
- 設置、更改密碼
-d
:清空賬戶密碼
-l
:鎖定賬戶
-S
:查看賬戶狀態
-u
:解鎖賬戶
[root@localhost ~]# passwd zhangsan
Changing password for user zhangsan.
New password:
BAD PASSWORD: The password is a palindrome
Retype new password:
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd -l zhangsan
Locking password for user zhangsan.
passwd: Success
[root@localhost ~]# passwd -S zhangsan
zhangsan LK 2019-08-20 0 99999 7 -1 (Password locked.)
[root@localhost ~]# passwd -u zhangsan
Unlocking password for user zhangsan.
passwd: Success
[root@localhost ~]# passwd -S zhangsan
zhangsan PS 2019-08-20 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@localhost ~]# passwd -d zhangsan
Removing password for user zhangsan.
passwd: Success
usermod
- 修改賬戶屬性,參數類似
useradd
-u
:修改用戶UID
-d
:修改家目錄位置
-e
:修改賬號失效時間
-s
:指定用戶的登陸shell
-l
:更改用戶登陸名稱
-L
:鎖定賬戶
-U
:解鎖賬戶
-g
:修改用戶的基本組(或GID
)
-G
:修改用戶的附加組(或GID
)
[root@localhost ~]# tail -1 /etc/passwd
zhangsan:x:1001:1001::/zhangsan/:/bin/bash
[root@localhost ~]# mv /zhangsan/ /home/
[root@localhost ~]# usermod -d /home/zhangsan/ zhangsan
[root@localhost ~]# tail -1 /etc/passwd
zhangsan:x:1001:1001::/home/zhangsan/:/bin/bash
[root@localhost ~]# usermod -L zhangsan
[root@localhost ~]# passwd -S zhangsan
zhangsan LK 2019-08-20 0 99999 7 -1 (Password locked.)
[root@localhost ~]# usermod -U zhangsan
[root@localhost ~]# passwd -S zhangsan
zhangsan PS 2019-08-20 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@localhost ~]# usermod -l lisi zhangsan
[root@localhost ~]# tail -1 /etc/passwd
lisi:x:1001:1001::/home/zhangsan/:/bin/bash
userdel
- 刪除用戶賬號
-r
:同時刪除家目錄
[root@localhost ~]# userdel -r zhangsan
[root@localhost ~]# ls /home/zhangsan
ls: cannot access /home/zhangsan: No such file or directory
groupadd
- 添加組賬號
-g
:指定GID
[root@localhost ~]# groupadd ftpusers
[root@localhost ~]# tail -1 /etc/group
ftpusers:x:1001:
[root@localhost ~]# groupadd -g 1005 sftpusers
[root@localhost ~]# tail -2 /etc/group
ftpusers:x:1001:
sftpusers:x:1005:
gpasswd
- 添加、設置、刪除組成員
-a
:添加組成員
-d
:刪除組成員
-M
:指定組成員,多個以,
分隔,會覆蓋原有的。
[root@localhost ~]# useradd ftp1
[root@localhost ~]# useradd ftp2
[root@localhost ~]# useradd ftp3
[root@localhost ~]# useradd ftp4
[root@localhost ~]# useradd ftp5
[root@localhost ~]# echo "000000" | passwd --stdin ftp1
Changing password for user ftp1.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp2
Changing password for user ftp2.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp3
Changing password for user ftp3.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp4
Changing password for user ftp4.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# echo "000000" | passwd --stdin ftp5
Changing password for user ftp5.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# gpasswd -a ftp1 ftpusers
Adding user ftp1 to group ftpusers
[root@localhost ~]# gpasswd -a ftp2 ftpusers
Adding user ftp2 to group ftpusers
[root@localhost ~]# groups ftp1
ftp1 : ftp1 ftpusers
[root@localhost ~]# groups ftp2
ftp2 : ftp2 ftpusers
[root@localhost ~]# grep "^ftpusers" /etc/group
ftpusers:x:1001:ftp1,ftp2
[root@localhost ~]# gpasswd -M ftp3,ftp4,ftp5 ftpusers
[root@localhost ~]# grep "^ftpusers" /etc/group
ftpusers:x:1001:ftp3,ftp4,ftp5
groupdel
- 刪除組賬號
[root@localhost ~]# groupdel sftpusers
用戶、組查詢
id
- 查詢用戶賬號的身份標識
id [username]
[root@localhost ~]# id root
uid=0(root) gid=0(root) groups=0(root)
groups
- 查詢用戶賬號所屬的組
groups [username]
[root@localhost ~]# groups root
root : root
finger
- 查詢用戶賬號的登陸屬性
finger [username]
[root@localhost ~]# finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since Tue Aug 20 16:58 (CST) on pts/0 from 192.168.128.1
6 seconds idle
No mail.
No Plan.
可能需要安裝:yum install finger -y
w、who、users
- 查詢當前主機的用戶登陸情況
[root@localhost ~]# w
17:35:34 up 2:48, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.128.1 16:58 6.00s 0.21s 0.01s w
[root@localhost ~]# who
root pts/0 2019-08-20 16:58 (192.168.128.1)
[root@localhost ~]# users
root
last
- 查詢最近登陸的用戶信息
[root@localhost ~]# last
root pts/0 192.168.128.1 Tue Aug 20 17:36 still logged in
reboot system boot 3.10.0-693.el7.x Tue Aug 20 17:36 - 17:37 (00:01)
reboot system boot 3.10.0-693.el7.x Fri Aug 16 17:18 - 17:21 (00:03)
wtmp begins Fri Aug 16 17:18:08 2019
文件、目錄許可權及歸屬
概述
[root@promote ~]# ls -l /etc/passwd
-rw-r--r--. 1 root root 846 Aug 16 17:15 /etc/passwd
-
:文件類型,-
普通文件、d
目錄、b
塊設備文件、c
字元設備文件、l
鏈接文件。
rw-
:User,屬主用戶對文件的訪問許可權。
r--
:Group,屬組內成員對文件的訪問許可權。
r--
:Other,其他用戶對文件的訪問許可權。
.
:與SELinux
有關
root
:文件屬主
root
:文件屬組
chmod
- 設置文件、目錄許可權
chmod [ugoa] [+-=] [rwx] 文件或目錄
ugoa
:u
宿主,g
屬組,o
其他用戶,a
所有用戶。
+-=
:+
增加許可權,-
減少許可權,=
設置對應的許可權。
rwx
:r
讀,w
寫,x
執行。
[root@localhost ~]# ls -l test.txt
-rw-r--r--. 1 root root 0 Aug 20 18:19 test.txt
[root@localhost ~]# chmod g+w,o+w test.txt
[root@localhost ~]# ls -l test.txt
-rw-rw-rw-. 1 root root 0 Aug 20 18:19 test.txt
chmod nnn 文件或目錄
nnn
:代表ugo分別設置的許可權值
u | g | o |
---|---|---|
4 | 2 | 1 |
[root@localhost ~]# chmod 644 test.txt
[root@localhost ~]# ls -l test.txt
-rw-r--r--. 1 root root 0 Aug 20 18:19 test.txt
chown
- 設置文件、目錄的歸屬
chown [選項] [屬主][:[屬組]] 文件或目錄
-R
:遞歸修改
[root@localhost ~]# mkdir /opt/test
[root@localhost ~]# touch /opt/test/test{1,2}.txt
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 root root 40 Aug 20 18:26 test
/opt/test:
total 0
-rw-r--r--. 1 root root 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 root root 0 Aug 20 18:26 test2.txt
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# echo "000000" | passwd --stdin zhangsan
Changing password for user zhangsan.
passwd: all authentication tokens updated successfully.
[root@localhost ~]# chown -R zhangsan /opt/test/
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 zhangsan root 40 Aug 20 18:26 test
/opt/test:
total 0
-rw-r--r--. 1 zhangsan root 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 zhangsan root 0 Aug 20 18:26 test2.txt
[root@localhost ~]# chown -R :zhangsan /opt/test/
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 zhangsan zhangsan 40 Aug 20 18:26 test
/opt/test:
total 0
-rw-r--r--. 1 zhangsan zhangsan 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 zhangsan zhangsan 0 Aug 20 18:26 test2.txt
[root@localhost ~]# chown -R root:root /opt/test/
[root@localhost ~]# ls -lR /opt/
/opt/:
total 0
drwxr-xr-x. 2 root root 40 Aug 20 18:26 test
/opt/test:
total 0
-rw-r--r--. 1 root root 0 Aug 20 18:26 test1.txt
-rw-r--r--. 1 root root 0 Aug 20 18:26 test2.txt
umask
- 指定用戶在新建文件或目錄時的許可權預設值,指預設值需要減掉的許可權。777-022=755,666-022=644。
預設:umask 022