天天看點

Linux系統之進階使用者組和權限管理一、使用者的密碼政策設定二、監控系統使用者登入三、使用者的提權四、ACL權限配置五、檔案與目錄的特殊權限六、預設權限與反掩碼

Linux系統之進階使用者組和權限管理

  • 一、使用者的密碼政策設定
    • 1.使用者的密碼檔案
    • 2.使用者的密碼期限配置
      • ①檢視使用者密碼期限
      • ②修改密碼期限
      • ③強制使用者下一次修改密碼
      • ④使用者到期時間設定
    • 3.檢視目前使用者存在
  • 二、監控系統使用者登入
    • 1.檢視目前登入使用者
    • 2.使用者登入和重新開機記錄
    • 3.使用者登入失敗記錄
    • 4.登入日志
  • 三、使用者的提權
  • 四、ACL權限配置
    • 1.檢視檔案的ACL權限
    • 2.給指定使用者設定ACL權限
    • 3.給檔案擁有人設定ACL權限
    • 4.給指定使用者組設定權限
      • ①建立使用者組及添加組内使用者
      • ②設定檔案的使用者組權限
    • 5.給檔案擁有組設定權限
    • 6.給檔案其他人設定權限
    • 7.删除檔案進階權限
      • ①删除指定使用者權限
      • ②删除指定組的ACL權限
      • ③遞歸修改ACL權限
      • ④清除所有ACL權限
  • 五、檔案與目錄的特殊權限
    • 1.程序與檔案的屬主與屬組
    • 2.suid進階權限
    • 3.sgid進階權限
    • 4.sticky進階權限
  • 六、預設權限與反掩碼
    • 1.root使用者檔案的預設權限
    • 2.普通使用者檔案的預設權限
    • 3.umask配置檔案
    • 4.修改umask
    • 5.umask和mask的權限計算

一、使用者的密碼政策設定

1.使用者的密碼檔案

[[email protected] ~]# 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:65534:65534:Kernel Overflow User:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
systemd-coredump:x:999:997:systemd Core Dumper:/:/sbin/nologin
systemd-resolve:x:193:193:systemd Resolver:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
unbound:x:997:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
libstoragemgmt:x:996:993:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
setroubleshoot:x:995:992::/var/lib/setroubleshoot:/sbin/nologin
clevis:x:994:990:Clevis Decryption Framework unprivileged user:/var/cache/clevis:/sbin/nologin
cockpit-ws:x:993:989:User for cockpit-ws:/:/sbin/nologin
sssd:x:992:988:User for sssd:/:/sbin/nologin
insights:x:991:987:Red Hat Insights:/var/lib/insights:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
pesign:x:990:986:Group for the pesign signing daemon:/var/run/pesign:/sbin/nologin
chrony:x:989:985::/var/lib/chrony:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
admin:x:1000:1000::/home/admin:/bin/bash
nginx:x:988:984:Nginx web server:/var/lib/nginx:/sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
zabbix:x:987:983:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
~          

           

2.使用者的密碼期限配置

①檢視使用者密碼期限

[[email protected] ~]# 
[[email protected] ~]# chage -l user1
Last password change					: Nov 25, 2025      #最後一次密碼變更時間
Password expires					: never             # 密碼到期
Password inactive					: never             #   密碼禁止
Account expires						: never             # 賬戶到期
Minimum number of days between password change		: 0             #更改密碼的最短天數
Maximum number of days between password change		: 99999         # 更改密碼的最長天數
Number of days of warning before password expires	: 7     # 密碼到期之前警告天數
[[email protected] ~]# 

           

②修改密碼期限

[[email protected] ~]# chage -m 0 -M 90 -W7 -I 14 user1
[[email protected] ~]# chage -l user1
Last password change					: Nov 25, 2025
Password expires					: Feb 23, 2026
Password inactive					: Mar 09, 2026
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 7

           

③強制使用者下一次修改密碼

④使用者到期時間設定

[[email protected] ~]# chage -E 2021-10-01 user1
[[email protected] ~]# chage -l user1
Last password change					: password must be changed
Password expires					: password must be changed
Password inactive					: password must be changed
Account expires						: Oct 01, 2021
Minimum number of days between password change		: 0
Maximum number of days between password change		: 90
Number of days of warning before password expires	: 7
           

3.檢視目前使用者存在

[[email protected] ~]# id user1
uid=1001(user1) gid=1001(user1) groups=1001(user1)
[[email protected] ~]# 

           

二、監控系統使用者登入

1.檢視目前登入使用者

[[email protected] ~]# w
 11:54:10 up 89 days, 20:42,  1 user,  load average: 0.04, 0.05, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    183.92.102.127   11:14    0.00s  0.06s  0.00s w

           

2.使用者登入和重新開機記錄

[[email protected] ~]# last |head
root     pts/0        192.168.200.1    Fri Sep 17 22:32   still logged in
reboot   system boot  4.18.0-80.el8.x8 Fri Sep 17 22:29   still running
root     pts/0        192.168.200.1    Mon Sep 13 20:28 - crash (4+02:00)
reboot   system boot  4.18.0-80.el8.x8 Mon Sep 13 20:22   still running
root     pts/2        192.168.200.1    Wed Sep  1 20:19 - 01:04  (04:45)
root     pts/1        192.168.200.1    Mon Aug 30 23:11 - 22:59 (1+23:47)
root     pts/0        192.168.200.1    Mon Aug 30 20:04 - 22:59 (2+02:54)
reboot   system boot  4.18.0-80.el8.x8 Mon Aug 30 20:03   still running
root     pts/0        192.168.200.1    Mon Aug 30 19:59 - 20:00  (00:00)
root     pts/1        192.168.200.1    Mon Aug 30 16:36 - 19:59  (03:23)
[[email protected] ~]# 

           

3.使用者登入失敗記錄

[[email protected] ~]# lastb

btmp begins Mon Sep 13 20:23:03 2021
[[email protected] ~]#
           

4.登入日志

[[email protected] ~]# lastlog 
Username         Port     From             Latest
root             pts/0    192.168.200.1    Fri Sep 17 22:32:06 +0800 2021
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
lp                                         **Never logged in**
sync                                       **Never logged in**
shutdown                                   **Never logged in**
halt                                       **Never logged in**
mail                                       **Never logged in**
operator                                   **Never logged in**
games                                      **Never logged in**
ftp                                        **Never logged in**
nobody                                     **Never logged in**
dbus                                       **Never logged in**
systemd-coredump                           **Never logged in**
systemd-resolve                            **Never logged in**
tss                                        **Never logged in**
polkitd                                    **Never logged in**
geoclue                                    **Never logged in**
rtkit                                      **Never logged in**
pulse                                      **Never logged in**

           

三、使用者的提權

[[email protected] ~]# vim /etc/sudoers.d/user1
user1 ALL= (ALL) NOPASSWD: /usr/bin/passwd, /usr/bin/mkdir
[[email protected] ~]$ sudo mkdir file01
[[email protected] ~]$ ls -l file01
total 0
[[email protected] ~]$ ls -ld file01
drwxr-xr-x 2 root root 6 Sep 17 22:49 file01
[[email protected] ~]$ mkdir file02
[[email protected] ~]$ ls -ld file02
drwxrwxr-x 2 user1 user1 6 Sep 17 22:49 file02
[[email protected] ~]$ 




           

四、ACL權限配置

1.檢視檔案的ACL權限

通路控制清單,可以實作更細緻的通路控制

[[email protected] ~]# getfacl file
# file: file
# owner: root
# group: root
user::rw-
group::r--
other::r--

           

2.給指定使用者設定ACL權限

[[email protected] ~]# setfacl -m u:user1:rx- file
[[email protected] ~]# getfacl file
# file: file
# owner: root
# group: root
user::rw-
user:user1:r-x
group::r--
mask::r-x
other::r--

           

3.給檔案擁有人設定ACL權限

[[email protected] ~]# setfacl -m u::rwx file
[[email protected] ~]# getfacl  file
# file: file
# owner: root
# group: root
user::rwx
user:user1:r-x
group::r--
mask::r-x
other::r--

           

4.給指定使用者組設定權限

①建立使用者組及添加組内使用者

[[email protected] ~]# groupadd HR
[[email protected] ~]# groupmems -g HR -a user1
[[email protected] ~]# groupmems -g HR -l
user1 

           

②設定檔案的使用者組權限

[[email protected] ~]# setfacl -m g:HR:rwx file
[[email protected] ~]# getfacl file
# file: file
# owner: root
# group: root
user::rwx
user:user1:r-x
group::r--
group:HR:rwx
mask::rwx
other::r--

[[email protected] ~]# 

           

5.給檔案擁有組設定權限

[[email protected] ~]# setfacl -m g::rx- file
[[email protected] ~]# getfacl file
# file: file
# owner: root
# group: root
user::rwx
user:user1:r-x
group::r-x
group:HR:rwx
mask::rwx
other::r--

[[email protected] ~]# 

           

6.給檔案其他人設定權限

[[email protected] ~]# setfacl -m o::rw- file
[[email protected] ~]# getfacl  file
# file: file
# owner: root
# group: root
user::rwx
user:user1:r-x
group::r-x
group:HR:rwx
mask::rwx
other::rw-

           

7.删除檔案進階權限

①删除指定使用者權限

[[email protected] ~]# getfacl  file
# file: file
# owner: root
# group: root
user::rwx
user:user1:r-x
group::r-x
group:HR:rwx
mask::rwx
other::rw-

[[email protected] ~]# setfacl -x u:user1 file
[[email protected] ~]# getfacl  file
# file: file
# owner: root
# group: root
user::rwx
group::r-x
group:HR:rwx
mask::rwx
other::rw-

[[email protected] ~]# 

           

②删除指定組的ACL權限

[[email protected] ~]# getfacl  file
# file: file
# owner: root
# group: root
user::rwx
group::r-x
group:HR:rwx
mask::rwx
other::rw-

[[email protected] ~]# setfacl -x g:HR file
[[email protected] ~]# getfacl  file
# file: file
# owner: root
# group: root
user::rwx
group::r-x
mask::r-x
other::rw-

[[email protected] ~]# 

           

③遞歸修改ACL權限

[[email protected] ~]# getfacl ./dir01/
# file: dir01/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

[[email protected] ~]# getfacl ./dir01/test.txt 
# file: dir01/test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

[[email protected] ~]# setfacl -R -m u:user1:rw- ./dir01/
[[email protected] ~]# getfacl ./dir01/
# file: dir01/
# owner: root
# group: root
user::rwx
user:user1:rw-
group::r-x
mask::rwx
other::r-x

[[email protected] ~]# getfacl ./dir01/test.txt 
# file: dir01/test.txt
# owner: root
# group: root
user::rw-
user:user1:rw-
group::r--
mask::rw-
other::r--

[[email protected] ~]# 

           

④清除所有ACL權限

setfacl -b
           

五、檔案與目錄的特殊權限

1.程序與檔案的屬主與屬組

前提:程序有屬主和屬組;檔案有屬主和屬組;
(1) 任何一個可執行程式檔案能不能啟動為程序:取決于發起者對程式檔案是否擁有執行權限;
(2) 啟動為程序之後,其程序的屬主為發起者;程序的屬組為發起者所屬的組;
(3) 程序通路檔案時的權限,取決于程序的發起者:
(4) 程序的發起者,同檔案的屬主:則應用檔案屬主權限;
(5) 程序的發起者,屬于檔案的屬組;則應用檔案屬組權限;
(6) 應用檔案“其它”權限;
           

2.suid進階權限

ps:/usr/bin/passwd root

1.當一個檔案有suid的權限時,那麼其他使用者來執行該檔案時,臨時獲得檔案擁有人的權限
2.suid的權限隻能用在二進制的檔案上,一般是針對指令
3.隻能設定在檔案上,設定目錄上無意義
chmod u+s file
           
[[email protected] ~]# getfacl /usr/bin/passwd 
getfacl: Removing leading '/' from absolute path names
# file: usr/bin/passwd
# owner: root
# group: root
# flags: s--
user::rwx
group::r-x
other::r-x

           

3.sgid進階權限

1.當一個檔案有sgid的權限時,那麼其他使用者來執行該檔案時,臨時獲得檔案擁有組的權限。
2.當一個目錄有sgid的權限時,那麼任何人在該目錄下建立檔案(包括目錄)時,該檔案的擁有組繼承目錄的組。

chmod  g+s directory
           
[[email protected] ~]# chmod g+s dir01/
[[email protected] ~]# getfacl dir01/
# file: dir01/
# owner: root
# group: root
# flags: -s-
user::rwx
user:user1:rw-
group::r-x
mask::rwx
other::r-x

[[email protected] ~]# touch dir01/list.txt
[[email protected] ~]# getfacl dir01/list.txt 
# file: dir01/list.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

           

4.sticky進階權限

1.用在目錄上,當一個目錄有stciky的權限時,那麼其他使用者隻能删除擁有人是自己的檔案。
chmod  o+t directory
           

六、預設權限與反掩碼

1.root使用者檔案的預設權限

預設權限 umask 022
root 
檔案  644 
目錄  755
           

2.普通使用者檔案的預設權限

普通使用者 002
檔案  664
目錄  775
           

3.umask配置檔案

[[email protected] ~]# cat /etc/bashrc |grep umask
    # By default, we want umask to get set. This sets it for non-login shell.
       umask 002
       umask 022
[[email protected] ~]# 

           

4.修改umask

# .bashrc
  
# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
~         


# .bashrc
  
# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
~         
           

5.umask和mask的權限計算

[[email protected] ~]# mkdir dir02/
[[email protected] ~]# ls -ld dir02/
drwxr-xr-x 2 root root 6 Sep 18 12:30 dir02/
[[email protected] ~]# touch file02
[[email protected] ~]# ll file02
-rw-r--r-- 1 root root 0 Sep 18 12:30 file02
[[email protected] ~]# 

           

繼續閱讀