linux-權限管理
- 一、權限的基本類型
- 二、權限的表示方式
- 1. 字符形式(rwx)
- 2. 數字形式
- 三、權限管理常用命令
- 1. chmod
- 2. chown
- 3. chgrp
- 四、隱藏權限
- 1. lsattr
- 2. chattr
- 五、權限掩碼
- 六、特別權限位
- 1. suid
- 2. sgid
- 3. Sticky Bit
- 七、權限委托
- 1. 授權用戶
- 2. 授權組里的用戶
- 3. 使用命令別名授權
- 八、ACL
- 1.getfacl
- 2. setfacl
- 總結
一、權限的基本類型
讀(r) | 寫(w) | 執行(x) | |
---|---|---|---|
文件 | 查看內容cat | 修改內容vim | 作為命令使用 |
文件夾 | 列出目錄內容ls | 添加、刪除touch、rm | 進入文件夾或搜索cd |
二、權限的表示方式
1. 字符形式(rwx)
-rw- r-- r-- root root /etc/passwd
用戶 組 其他人 用戶 組
第一個位置
- 表示文件的類型是普通的文件
d 表示文件的類型是文件夾 directory
r read 讀文件
w write 寫文件、修改、刪除
x execute 執行權限
- 沒有權限
3類人
user —》owner 擁有者
group 組
others 其他人
all 所有人
2. 數字形式
r : 4
w :2
x : 1
- : 0
三、權限管理常用命令
1. chmod
修改權限(讀、寫、執行)
chmod 任何用戶都可以使用
[huang@feng ~]$ vim test.sh 編輯一個test.sh的腳本
echo “hello,world”
[huang@feng ~]$ ll
-rw-r–r–. 1 huang huang 43 5月 8 20:19 test.sh
[huang@feng ~]$ ./test.sh 執行當前文件夾下的test.sh腳本
-bash: ./test.sh: 權限不夠
授予test.sh文件可執行權限
[huang@feng ~]$ chmod +x test.sh
[huang@feng ~]$ ll
-rwxr-xr-x. 1 huang huang 43 5月 8 20:19 test.sh
[huang@feng ~]$ ./test.sh 執行腳本
hello,world
使用 + 、- 增加或減少權限,可指定哪一類人(u、g、o)加,不指定則都加
[root@feng lianxi]# chmod o+w zhang.txt
[root@feng lianxi]# ll zhang.txt
-rw-r–rw-. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod a+x zhang.txt
-rwxr-xrwx. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod a-x zhang.txt
-rw-r–rw-. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod +x zhang.txt
-rwxr-xrwx. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod -x zhang.txt
=或數字 賦予對應權限
[root@feng lianxi]# chmod a=rwx zhang.txt
[root@feng lianxi]# chmod 777 zhang.txt
[root@feng lianxi]# ll zhang.txt
-rwxrwxrwx. 1 root root 0 5月 8 20:29 zhang.txt
-R 遞歸修改
[root@feng lianxi]# chmod -R a=rwx liu
# 將liu目錄下的所有的文件或者子文件夾里的文件的權限,全部修改
[root@feng liu]# chmod -R 644 fan.txt
2. chown
修改文件的歸屬(用戶、組)
chown 只能root用戶使用
chown user:group file
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 root root 0 5月 8 20:37 zhang.txt
[root@feng liu]# chown huang:huang zhang.txt
?????????????????????????????????????? 用戶 ? 組
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 huang huang 0 5月 8 20:37 zhang.txt
[root@feng liu]# useradd zhang
[root@feng liu]# id zhang # 查看zhang用戶的信息 uid和gid
用戶id=1001(zhang) 組id=1001(zhang) 組=1001(zhang)
[root@feng liu]# chown zhang zhang.txt
???????????????????????????????????????用戶
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 zhang huang 0 5月 8 20:37 zhang.txt
[root@feng liu]# chown :root zhang.txt
???????????????????????????????????????組
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 zhang root 0 5月 8 20:37 zhang.txt
-R 遞歸修改
[root@feng lianxi]# chown -R zhang:zhang liu
3. chgrp
專門用于修改文件或目錄的用戶組
chgrp group file
四、隱藏權限
1. lsattr
查看文件的隱藏權限
lsattr - list file attributes on a Linux second extended file system
-d List directories like other files, rather than listing their contents.
2. chattr
chattr - change file attributes on a Linux file system
設置文件的隱藏權限
chattr +/-i
chattr +/-a
immutable (i) 不能修改 --》不能刪除和增加、修改
append only (a) 只能在文件或者文件夾里追加內容,不能刪除
授予不能修改的權限
root@sanchuang:~# mkdir /feng
root@sanchuang:~# ll -d /feng
drwxr-xr-x 2 root root 4096 May 15 19:18 /feng/
root@sanchuang:~# chattr +i /feng
root@sanchuang:~# lsattr /feng
root@sanchuang:~# lsattr -d /feng
----i---------e------- /feng
root@sanchuang:~# cd /feng
root@sanchuang:/feng# mkdir sc
mkdir: cannot create directory ‘sc’: Operation not permitted
root@sanchuang:/feng# rm -rf /feng
rm: cannot remove ‘feng’: Operation not permitted
取消不能修改的權限
root@sanchuang:/feng# chattr -i /feng
root@sanchuang:/feng# lsattr -d /feng
--------------e------- /feng
root@sanchuang:/feng# mkdir sc
root@sanchuang:/feng# ls
sc
授予文件夾可追加的權限
root@sanchuang:/feng# chattr +a changsha
root@sanchuang:/feng# lsattr
-----a--------e------- ./changsha
root@sanchuang:/feng# cd changsha/
root@sanchuang:/feng/changsha# mkdir furong
root@sanchuang:/feng/changsha# ls
furong
root@sanchuang:/feng/changsha# rm -rf furong
rm: cannot remove ‘furong’: Operation not permitted
取消可追加權限
root@sanchuang:/feng# chattr -a changsha
root@sanchuang:/feng# lsattr
--------------e------- ./changsha
五、權限掩碼
umask 0022
控制新文件和目錄的默認權限
計算方式:默認權限(文件 666,目錄 777)減去 umask 值
正常情況下,新建一個文件的默認權限 644
新建一個文件夾的默認權限 755
在內核級別,文件的初始權限為666
文件夾的初始權限為777
[root@hz lianxi]# umask
0022
[root@hz lianxi]# touch test.txt
[root@hz lianxi]# ll
-rw-r–r-- 1 root root 0 7月 7 21:20 test.txt
[root@hz lianxi]# umask 077 # 修改用戶的umask值,從而達到設置默認文件或文件夾的權限
[root@hz lianxi]# umask
0077
[root@hz lianxi]# touch test2.txt
[root@hz lianxi]# ll
-rw------- 1 root root 0 7月 7 21:21 test2.txt
-rw-r–r-- 1 root root 0 7月 7 21:20 test.txt
六、特別權限位
1. suid
普通用戶在執行命令的時候,會享有root用戶的權限,因為linux系統里的所有的命令都是歸root用戶所有
[root@fengdeyong /]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 32656 5月 15 2022 /usr/bin/passwd
授予mkdir命令suid權限位
[root@fengdeyong sc]# which mkdir
/usr/bin/mkdir
[root@fengdeyong sc]# ll /usr/bin/mkdir
-rwxr-xr-x. 1 root root 69872 4月 21 2024 /usr/bin/mkdir
[root@fengdeyong sc]# chmod u+s /usr/bin/mkdir
[root@fengdeyong sc]# ll /usr/bin/mkdir
-rwsr-xr-x. 1 root root 69872 4月 21 2024 /usr/bin/mkdir
取消suid權限位
[root@fengdeyong /]# chmod u-s /usr/bin/mkdir
[root@fengdeyong /]# ll /usr/bin/mkdir
-rwxr-xr-x. 1 root root 69872 4月 21 2024 /usr/bin/mkdir
權限數字授權
chmod mnnn 文件
m為4時,對應suid,2對應sgid,1對應粘滯位,可疊加
[root@rocky shell]# ll get_info_cpu_mem.sh
-rw-r–r-- 1 root root 705 7月 9 17:56 get_info_cpu_mem.sh
[root@rocky shell]# chmod 4755 get_info_cpu_mem.sh
[root@rocky shell]# ll get_info_cpu_mem.sh
-rwsr-xr-x 1 root root 705 7月 9 17:56 get_info_cpu_mem.sh
s 小寫的s 表示原來的文件具有可執行權限
S 大寫的S 表示原來的文件沒有可執行權限
[root@fengdeyong test]# touch hello.sh
[root@fengdeyong test]# ll
-rw-r–r–. 1 root root 0 5月 22 20:55 hello.sh
# 沒有可執行權限 -> S
[root@fengdeyong test]# chmod +s hello.sh
[root@fengdeyong test]# ll
-rwSr-Sr–. 1 root root 0 5月 22 20:55 hello.sh
?
[root@fengdeyong test]# chmod u+s hello.sh
[root@fengdeyong test]# ll
-rwSr–r–. 1 root root 0 5月 22 20:55 hello.sh
[root@fengdeyong test]# chmod u-s hello.sh
[root@fengdeyong test]# ll
-rw-r–r–. 1 root root 0 5月 22 20:55 hello.sh
?
# 設置可執行權限 -> s
[root@fengdeyong test]# chmod +x hello.sh
[root@fengdeyong test]# ll
-rwxr-xr-x. 1 root root 0 5月 22 20:55 hello.sh
[root@fengdeyong test]# chmod u+s hello.sh
[root@fengdeyong test]# ll
-rwsr-xr-x. 1 root root 0 5月 22 20:55 hello.sh
2. sgid
此目錄下創建的文件會繼承該目錄的用戶組
chmod g+s
3. Sticky Bit
粘滯位(t) --》如果一個文件夾具有粘滯位權限,任何人都只能刪除自己創建的文件或者文件夾
root@sanchuang:~# ll -d /tmp
drwxrwxrwt 15 root root 4096 May 22 19:12 /tmp/
/tmp 臨時文件夾,任何用戶都可以在這個目錄下創建文件和文件夾
temporary 臨時
授予粘滯位
root@sanchuang:~# ll -d /sky
drwxrwxrwx 2 root root 4096 May 22 20:45 /sky/
root@sanchuang:~# chmod +t /sky
root@sanchuang:~# ll -d /sky
drwxrwxrwt 2 root root 4096 May 22 20:49 /sky/
七、權限委托
sudo
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
1. 授權用戶
root用戶授權一個普通用戶zhangmx去實現新建用戶和刪除用戶的權限
- 新建用戶zhangmx并且設置密碼為123456
[root@fengdeyong /]# useradd zhangmx
[root@fengdeyong /]# echo “zhangmx:123456” |chpasswd
[root@fengdeyong /]# su - zhangmx
[zhangmx@fengdeyong ~]$ useradd zhangmx1
useradd: Permission denied.
useradd:無法鎖定 /etc/passwd,請稍后再試。
注銷
- 進行委托授權
/etc/sudoers 授權書
授予zhangmx可以執行/usr/sbin/useradd, /usr/sbin/userdel 命令
[root@fengdeyong /]# vim /etc/sudoers
zhangmx ALL=/usr/sbin/useradd, /usr/sbin/userdel
- 驗證sudo授權
[root@fengdeyong /]# su - zhangmx
上一次登錄: 四 5月 15 20:10:31 CST 2025 pts/0 上
[zhangmx@fengdeyong ~]$ useradd zhangmx1
useradd: Permission denied.
useradd:無法鎖定 /etc/passwd,請稍后再試。
[zhangmx@fengdeyong ~]$ sudo useradd zhangmx1
我們信任您已經從系統管理員那里了解了日常注意事項。
總結起來無外乎這三點:
#1) 尊重別人的隱私。
#2) 輸入前要先考慮(后果和風險)。
#3) 權力越大,責任越大。
[sudo] zhangmx 的密碼:
# 第一次使用sudo命令的時候,需要輸入普通用戶的密碼
[zhangmx@fengdeyong ~]$ id zhangmx1
用戶id=1033(zhangmx1) 組id=1034(zhangmx1) 組=1034(zhangmx1)
[zhangmx@fengdeyong ~]$ sudo useradd zhangmx2
[zhangmx@fengdeyong ~]$ id zhangmx2
用戶id=1034(zhangmx2) 組id=1035(zhangmx2) 組=1035(zhangmx2)
[zhangmx@fengdeyong ~]$ sudo userdel -r zhangmx2
只要是使用sudo去執行命令,會記錄日志–》記錄到/var/log/secure日志里
[root@fengdeyong /]# tail -20 /var/log/secure
2. 授權組里的用戶
新建一個wudang組,新建用戶wuji 屬于wudang組,設置密碼為123456
然后授權wudang組可以執行任何的命令
- 新建組wudang
[root@fengdeyong /]# groupadd wudang
[root@fengdeyong /]# useradd -g wudang wuji
[root@fengdeyong /]# id wuji
用戶id=1035(wuji) 組id=1028(wudang) 組=1028(wudang)
[root@fengdeyong /]# echo “wuji:123456”|chpasswd
- 修改授權書,授予權限
[root@fengdeyong /]# vim /etc/sudoers
## Allows people in group wheel to run all commands
%wudang ALL=(ALL) ALL
- 驗證授權
[root@fengdeyong /]# su - wuji
[wuji@fengdeyong ~]$ sudo useradd wuji1
我們信任您已經從系統管理員那里了解了日常注意事項。
總結起來無外乎這三點:
#1) 尊重別人的隱私。
#2) 輸入前要先考慮(后果和風險)。
#3) 權力越大,責任越大。
[sudo] wuji 的密碼:
[wuji@fengdeyong ~]$ id wuji1
用戶id=1036(wuji1) 組id=1036(wuji1) 組=1036(wuji1)
3. 使用命令別名授權
命令別名 : 一般是大寫的
Cmnd_Alias 將很多命令放到一個別名里,然后授予用戶或者組可以使用這個命令別名
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
授予zhangfan用戶,可以使用yum、ip、useradd、userdel、mount命令,別名定義為ZHANGCMD
- 新建zhangfan用戶,并且設置密碼123456
[root@fengdeyong /]# useradd zhangfan
[root@fengdeyong /]# echo “zhangfan:123456”|chpasswd
- 定義別名并授權
先用which查找命令存放的地方
Cmnd_Alias ZHANGCMD = /usr/bin/yum, /usr/sbin/ip, /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/mount
# 授予zhangfan可以使用命令別名ZHANGCMD
zhangfan ALL=ZHANGCMD
- 驗證
[zhangfan@fengdeyong ~]$ sudo yum install vim -y
我們信任您已經從系統管理員那里了解了日常注意事項。
總結起來無外乎這三點:
#1) 尊重別人的隱私。
#2) 輸入前要先考慮(后果和風險)。
#3) 權力越大,責任越大。
[sudo] zhangfan 的密碼:
上次元數據過期檢查:1:43:52 前,執行于 2025年05月15日 星期四 19時03分34秒。
軟件包 vim-enhanced-2:8.2.2637-21.el9.x86_64 已安裝。
依賴關系解決。
無需任何處理。
完畢!
[zhangfan@fengdeyong ~]$ sudo useradd zhangfan1
[zhangfan@fengdeyong ~]$ id zhangfan1
用戶id=1039(zhangfan1) 組id=1039(zhangfan1) 組=1039(zhangfan1)
八、ACL
access control list
文件權限的訪問控制列表: 寫明哪些用戶哪些組有哪些權限
可以單獨對某個人或者組進行限制
對原來的權限進行擴展
1.getfacl
獲取文件的訪問控制列表權限 --》查看文件的訪問控制列表
[root@fengdeyong sc]# getfacl sc
# file: sc
# owner: zhangsanfeng
# group: wudang
user::rwx
group::rwx
other::—
2. setfacl
設置文件的訪問控制列表權限
setfacl - set file access control lists
[root@fengdeyong sc]# setfacl -m u:songqingshu:--- /sc
-m 作用是修改 modify
u 用戶 user
[root@fengdeyong sc]# getfacl /sc
getfacl: Removing leading ‘/’ from absolute path names
# file: sc
# owner: zhangsanfeng
# group: wudang
user::rwx
user:songqingshu:---
group::rwx
mask::rwx
other::---
驗證用戶是否還有權限
[root@fengdeyong sc]# su - songqingshu
上一次登錄: 四 5月 22 21:09:20 CST 2025 pts/0 上
[songqingshu@fengdeyong ~]$ cd /sc
-bash: cd: /sc: 權限不夠
讓其他組的某個用戶有權限
[root@fengdeyong sc]# groupadd shaolin
[root@fengdeyong sc]# useradd -g shaolin huang1
[root@fengdeyong sc]# id huang1
用戶id=1048(huang1) 組id=1040(shaolin) 組=1040(shaolin)
[root@fengdeyong sc]# su - huang1
[huang1@fengdeyong ~]$ cd /sc
-bash: cd: /sc: 權限不夠
[root@fengdeyong sc]# setfacl -m u:huang1:rwx /sc
[root@fengdeyong sc]# su - huang1
上一次登錄: 四 5月 22 21:18:01 CST 2025 pts/0 上
[huang1@fengdeyong ~]$ cd /sc
[huang1@fengdeyong sc]$ mkdir huang
[huang1@fengdeyong sc]$ ls
huang qingshu wuji
[huang1@fengdeyong sc]$ ll
drwxr-xr-x. 2 huang1 shaolin 6 5月 22 21:19 huang
drwxr-xr-x. 2 songqingshu wudang 6 5月 22 21:09 qingshu
drwxr-xr-x. 2 zhangwuji wudang 6 5月 22 21:08 wuji
對組修改
[root@fengdeyong sc]# groupadd emei
[root@fengdeyong sc]# setfacl -m g:emei:rwx /sc
[root@fengdeyong sc]# getfacl sc
# file: sc
# owner: zhangsanfeng
# group: wudang
user::rwx
user:songqingshu:—
user:huang1:rwx
group::rwx
group:emei:rwx
mask::rwx
other::—
刪除組的 ACL 權限
[root@fengdeyong sc]# setfacl -x g:emei /sc
刪除所有 ACL 權限
[root@fengdeyong sc]# setfacl -b /sc
總結
拒絕權限高于一切
權限管理是 Linux 系統安全的基石,其核心價值在于平衡安全性與可用性:通過精細的權限控制,既保護系統和數據免受未授權訪問,又允許用戶高效完成工作。合理的權限策略能顯著降低安全風險、提升運維效率