
在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分別設置的權限值
| r | w | x |
|---|---|---|
| 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
