国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux文件權限管理詳解

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 2026-02-04 11:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、概述

1.1 背景介紹

說實話,Linux 權限這塊我踩過不少坑。記得剛入行那會兒,有次為了圖省事直接chmod 777 -R /var/www,結果被老大罵了一頓——"你這是把大門敞開讓小偷隨便進啊!"

Linux 的權限體系是整個系統安全的基石。從最基礎的 rwx 三權分立,到 SUID/SGID 這些"特權通道",再到 ACL 細粒度控制,最后是 SELinux/AppArmor 這種強制訪問控制,形成了一套層層遞進的安全防護網。

2026 年了,隨著容器化和云原生的普及,權限管理變得更加復雜。你不僅要管好宿主機的權限,還得搞清楚容器內的 UID 映射、Rootless 容器這些新玩意兒。這篇文章就把這些年我在生產環境中積累的經驗都掏出來,希望能幫你少走彎路。

1.2 技術特點

層次分明:基礎權限 → 特殊權限 → ACL → MAC,由簡到繁

向后兼容:新特性不影響老系統,平滑升級

靈活可控:從粗粒度到細粒度,滿足各種場景需求

審計友好:所有權限變更都可追溯,便于合規審計

1.3 適用場景

Web 服務器:Nginx/Apache 的目錄權限配置

多用戶開發環境:團隊協作時的代碼目錄權限管理

容器化部署:Docker/Kubernetes 中的權限映射

合規審計:滿足等保、SOC2 等安全合規要求

數據安全:敏感文件的訪問控制

1.4 環境要求

組件 版本要求 說明
操作系統 CentOS 8+/Ubuntu 20.04+/Debian 11+ 推薦使用最新 LTS 版本
內核版本 5.4+ 支持完整的 ACL 和 capabilities
文件系統 ext4/xfs/btrfs 需支持擴展屬性(xattr)
SELinux 3.0+ CentOS/RHEL 默認啟用
AppArmor 3.0+ Ubuntu/Debian 默認啟用

二、詳細步驟

2.1 準備工作

2.1.1 系統檢查

# 檢查系統版本
cat /etc/os-release

# 檢查內核版本(需要 5.4+ 以獲得完整特性支持)
uname -r

# 檢查文件系統類型
df -Th

# 檢查是否支持 ACL
grep -i acl /boot/config-$(uname -r) 2>/dev/null || zcat /proc/config.gz 2>/dev/null | grep -i acl

# 檢查 SELinux 狀態(RHEL 系)
getenforce 2>/dev/null ||echo"SELinux not installed"

# 檢查 AppArmor 狀態(Debian 系)
aa-status 2>/dev/null ||echo"AppArmor not installed"

2.1.2 安裝必要工具

# RHEL/CentOS 系列
sudo dnf install -y acl attr policycoreutils-python-utils setools-console

# Debian/Ubuntu 系列
sudo apt update
sudo apt install -y acl attr apparmor-utils auditd

2.2 核心配置

2.2.1 基礎權限:rwx 三劍客

先來復習一下基礎,這塊很多人以為自己懂了,其實細節上還是會犯錯。

# 權限的數字表示法
# r=4, w=2, x=1
# 755 = rwxr-xr-x = 所有者全權限,組和其他人只讀+執行

# 查看文件權限的詳細信息
ls -la /etc/passwd
# -rw-r--r-- 1 root root 2847 Jan 15 10:23 /etc/passwd
# │├─┤├─┤├─┤
# │ │ │ └── 其他用戶權限 (r--)
# │ │ └───── 所屬組權限 (r--)
# │ └──────── 所有者權限 (rw-)
# └────────── 文件類型 (-=普通文件, d=目錄, l=鏈接)

# 修改權限的兩種方式
# 方式一:數字法(推薦,精確控制)
chmod 644 config.yml   # rw-r--r--
chmod 755 script.sh   # rwxr-xr-x
chmod 600 .ssh/id_rsa  # rw------- (私鑰必須是600!)

# 方式二:符號法(適合微調)
chmod u+x script.sh   # 給所有者加執行權限
chmod g-w config.yml   # 去掉組的寫權限
chmod o= secret.txt   # 清空其他用戶的所有權限
chmod a+r public.html  # 所有人加讀權限

我踩過的坑:有次部署應用,死活啟動不了,查了半天發現是配置文件權限給成了000。所以現在我養成習慣,部署腳本里一定會加權限檢查。

2.2.2 目錄權限的特殊之處

目錄的權限和文件不太一樣,這點很多新手會搞混:

# 目錄權限含義:
# r - 可以列出目錄內容(ls)
# w - 可以在目錄中創建/刪除文件
# x - 可以進入目錄(cd)和訪問目錄中的文件

# 實驗:創建測試目錄
mkdir -p /tmp/perm_test &&cd/tmp/perm_test

# 場景1:只有 r 沒有 x
mkdir test_r && chmod 444 test_r
echo"hello"> test_r/file.txt 2>/dev/null # 會失敗
ls test_r/                  # 能看到文件名,但看不到詳情
cat test_r/file.txt             # 失敗,因為沒有 x 權限

# 場景2:只有 x 沒有 r
mkdir test_x && chmod 111 test_x
echo"hello"> test_x/file.txt
ls test_x/                  # 失敗,不能列目錄
cat test_x/file.txt             # 成功!知道文件名就能訪問

# 場景3:生產環境常用配置
chmod 755 /var/www/html   # Web 目錄,所有人可讀可進入
chmod 750 /app/config    # 配置目錄,組內可讀,其他人禁止
chmod 700 /root/.ssh    # SSH 目錄,僅所有者可訪問

2.2.3 特殊權限:SUID、SGID、Sticky Bit

這三個特殊權限是很多安全問題的根源,但用好了也是利器:

# SUID (Set User ID) - 數字表示:4xxx
# 執行文件時,臨時獲得文件所有者的權限
# 典型例子:passwd 命令需要修改 /etc/shadow,普通用戶執行時臨時獲得 root 權限

ls -la /usr/bin/passwd
# -rwsr-xr-x 1 root root 68208 Mar 14 2023 /usr/bin/passwd
#  ^-- 注意這個 s,表示設置了 SUID

# 設置 SUID
chmod u+s /usr/local/bin/myapp
chmod 4755 /usr/local/bin/myapp

# SGID (Set Group ID) - 數字表示:2xxx
# 對文件:執行時臨時獲得文件所屬組的權限
# 對目錄:在該目錄下創建的文件自動繼承目錄的所屬組(團隊協作神器!)

# 團隊共享目錄配置
mkdir -p /data/team_project
chown root:developers /data/team_project
chmod 2775 /data/team_project
# 現在 developers 組的成員在這里創建的文件,所屬組都是 developers

# Sticky Bit - 數字表示:1xxx
# 只對目錄有效:目錄中的文件只能被文件所有者或 root 刪除
# 典型例子:/tmp 目錄

ls -ld /tmp
# drwxrwxrwt 15 root root 4096 Jan 20 10:00 /tmp
#     ^-- 注意這個 t,表示設置了 Sticky Bit

# 設置 Sticky Bit
chmod +t /data/shared
chmod 1777 /data/shared

安全警告:SUID 是安全審計的重點關注對象。定期檢查系統中的 SUID 文件:

# 查找所有 SUID 文件
find / -perm -4000 -typef 2>/dev/null

# 查找所有 SGID 文件
find / -perm -2000 -typef 2>/dev/null

# 生產環境建議:建立基線,定期對比
find / -perm -4000 -typef 2>/dev/null | sort > /var/log/suid_baseline_$(date +%Y%m%d).txt

2.2.4 文件所有權:chown 和 chgrp

# 修改所有者
chown nginx /var/www/html/index.html

# 修改所有者和所屬組
chown nginx:www-data /var/www/html/index.html

# 只修改所屬組
chgrp www-data /var/www/html/index.html
# 或者
chown :www-data /var/www/html/index.html

# 遞歸修改(謹慎使用!)
chown -R nginx:www-data /var/www/html/

# 只修改符合條件的文件(更安全的做法)
find /var/www/html -typef -execchown nginx:www-data {} ;
find /var/www/html -typed -execchown nginx:www-data {} ;

# 參考符號鏈接的目標(默認不跟隨)
chown -h nginx:www-data /var/www/html/link # 修改鏈接本身
chown nginx:www-data /var/www/html/link  # 修改鏈接指向的文件

2.2.5 ACL:細粒度權限控制

傳統的 rwx 權限有個致命缺陷:只能設置一個所有者和一個所屬組。如果你想讓用戶 A 有讀寫權限,用戶 B 只有讀權限,用戶 C 完全沒權限,傳統權限就搞不定了。這時候 ACL 就派上用場了。

# 查看文件的 ACL
getfacl /data/project/config.yml

# 輸出示例:
# file: data/project/config.yml
# owner: root
# group: developers
# user::rw-
# userrw-    # alice 用戶有讀寫權限
# userr--     # bob 用戶只有讀權限
# group::r--
# grouprw-     # ops 組有讀寫權限
# mask::rw-
# other::---

# 設置用戶 ACL
setfacl -m urw /data/project/config.yml  # 給 alice 讀寫權限
setfacl -m ur /data/project/config.yml   # 給 bob 只讀權限

# 設置組 ACL
setfacl -m grw /data/project/config.yml   # 給 ops 組讀寫權限

# 刪除特定 ACL
setfacl -x u:alice /data/project/config.yml   # 刪除 alice 的 ACL
setfacl -x g:ops /data/project/config.yml    # 刪除 ops 組的 ACL

# 刪除所有 ACL(恢復到傳統權限)
setfacl -b /data/project/config.yml

# 遞歸設置 ACL
setfacl -R -m urwX /data/project/     # X 表示僅對目錄設置執行權限

# 設置默認 ACL(新創建的文件自動繼承)
setfacl -d -m urw /data/project/     # 目錄下新文件自動給 alice 讀寫權限
setfacl -d -m grwx /data/project/  # 目錄下新文件自動給 developers 組全權限

ACL 的 mask 機制:這是個容易被忽略但很重要的概念。mask 定義了 ACL 權限的上限。

# 查看當前 mask
getfacl /data/project/config.yml | grep mask

# 設置 mask(限制所有 ACL 的最大權限)
setfacl -m m::r /data/project/config.yml
# 即使 alice 設置了 rw 權限,實際生效的也只有 r(被 mask 限制)

# 注意:chmod 會影響 mask!
chmod 640 /data/project/config.yml
# 這會把 mask 設置為 r--,可能導致 ACL 權限失效

我的經驗:ACL 雖然強大,但也增加了復雜度。我的建議是:

能用組權限解決的,就不要用 ACL

用了 ACL 一定要做好文檔記錄

定期審計 ACL 配置,避免權限膨脹

2.3 啟動和驗證

2.3.1 權限配置驗證腳本

#!/bin/bash
# 文件名:check_permissions.sh
# 用途:驗證關鍵目錄和文件的權限配置

RED='?33[0;31m'
GREEN='?33[0;32m'
YELLOW='?33[1;33m'
NC='?33[0m'

check_permission() {
 localpath=$1
 localexpected_perm=$2
 localexpected_owner=$3
 localexpected_group=$4

 if[[ ! -e"$path"]];then
   echo-e"${RED}[FAIL]${NC}$pathdoes not exist"
   return1
 fi

 localactual_perm=$(stat-c"%a""$path")
 localactual_owner=$(stat-c"%U""$path")
 localactual_group=$(stat-c"%G""$path")

 localstatus=0

 if[["$actual_perm"!="$expected_perm"]];then
   echo-e"${RED}[FAIL]${NC}$pathpermission: expected$expected_perm, got$actual_perm"
    status=1
 fi

 if[["$actual_owner"!="$expected_owner"]];then
   echo-e"${RED}[FAIL]${NC}$pathowner: expected$expected_owner, got$actual_owner"
    status=1
 fi

 if[["$actual_group"!="$expected_group"]];then
   echo-e"${YELLOW}[WARN]${NC}$pathgroup: expected$expected_group, got$actual_group"
 fi

 if[[$status-eq 0 ]];then
   echo-e"${GREEN}[OK]${NC}$path"
 fi

 return$status
}

echo"=== Permission Check Report ==="
echo"Date:$(date)"
echo""

# 檢查關鍵系統文件
echo"--- System Files ---"
check_permission"/etc/passwd""644""root""root"
check_permission"/etc/shadow""640""root""shadow"
check_permission"/etc/ssh/sshd_config""600""root""root"

# 檢查 SSH 目錄
echo""
echo"--- SSH Directory ---"
check_permission"$HOME/.ssh""700""$USER""$USER"
check_permission"$HOME/.ssh/authorized_keys""600""$USER""$USER"2>/dev/null
check_permission"$HOME/.ssh/id_rsa""600""$USER""$USER"2>/dev/null

# 檢查 Web 目錄(如果存在)
if[[ -d"/var/www/html"]];then
 echo""
 echo"--- Web Directory ---"
  check_permission"/var/www/html""755""www-data""www-data"
fi

echo""
echo"=== Check Complete ==="

2.3.2 SUID/SGID 審計

#!/bin/bash
# 文件名:audit_suid.sh
# 用途:審計系統中的 SUID/SGID 文件

BASELINE_FILE="/var/log/suid_baseline.txt"
CURRENT_FILE="/tmp/suid_current_$(date +%Y%m%d).txt"

# 生成當前 SUID 文件列表
find / -typef ( -perm -4000 -o -perm -2000 ) 2>/dev/null | sort >"$CURRENT_FILE"

if[[ -f"$BASELINE_FILE"]];then
 echo"=== SUID/SGID File Changes ==="
 echo""

 # 新增的 SUID 文件
  new_files=$(comm -13"$BASELINE_FILE""$CURRENT_FILE")
 if[[ -n"$new_files"]];then
   echo"!!! NEW SUID/SGID FILES DETECTED !!!"
   echo"$new_files"
   echo""
 fi

 # 刪除的 SUID 文件
  removed_files=$(comm -23"$BASELINE_FILE""$CURRENT_FILE")
 if[[ -n"$removed_files"]];then
   echo"--- Removed SUID/SGID files ---"
   echo"$removed_files"
   echo""
 fi

 if[[ -z"$new_files"&& -z"$removed_files"]];then
   echo"No changes detected since last baseline."
 fi
else
 echo"No baseline file found. Creating baseline..."
  cp"$CURRENT_FILE""$BASELINE_FILE"
 echo"Baseline created at$BASELINE_FILE"
 echo""
 echo"Current SUID/SGID files:"
  cat"$CURRENT_FILE"
fi

三、示例代碼和配置

3.1 完整配置示例

3.1.1 SELinux 配置(RHEL/CentOS 系)

SELinux 是強制訪問控制(MAC)的實現,比傳統權限更加嚴格。很多人遇到問題就直接setenforce 0關掉,這是非常不好的習慣。

# 查看 SELinux 狀態
getenforce
# Enforcing = 強制模式(生產環境推薦)
# Permissive = 寬容模式(只記錄不阻止,調試用)
# Disabled = 禁用

sestatus
# 查看詳細狀態

# 臨時切換模式(重啟后失效)
sudo setenforce 0 # 切換到 Permissive
sudo setenforce 1 # 切換到 Enforcing

# 永久修改(需要重啟)
sudo vim /etc/selinux/config
# SELINUX=enforcing

# 查看文件的 SELinux 上下文
ls -Z /var/www/html/
# -rw-r--r--. root root unconfined_uhttpd_sys_content_t:s0 index.html
#            └─────────────────────────────────────────┘
#                  SELinux 上下文

# 修改文件的 SELinux 上下文
# 臨時修改(重新標記后會恢復)
chcon -t httpd_sys_content_t /var/www/html/newfile.html

# 永久修改(推薦)
semanage fcontext -a -t httpd_sys_content_t"/data/web(/.*)?"
restorecon -Rv /data/web/

# 查看 SELinux 布爾值
getsebool -a | grep httpd

# 設置布爾值(允許 httpd 連接網絡)
setsebool -P httpd_can_network_connect on

SELinux 故障排查

# 查看 SELinux 拒絕日志
sudo ausearch -m avc -ts recent

# 使用 audit2why 分析原因
sudo ausearch -m avc -ts recent | audit2why

# 生成允許規則(謹慎使用!)
sudo ausearch -m avc -ts recent | audit2allow -M mypolicy
sudo semodule -i mypolicy.pp

# 實用技巧:臨時切換到 Permissive 模式測試
sudo setenforce 0
# 測試功能是否正常
# 如果正常,說明是 SELinux 問題
sudo setenforce 1
# 然后根據日志修復 SELinux 配置

3.1.2 AppArmor 配置(Ubuntu/Debian 系)

# 查看 AppArmor 狀態
sudo aa-status

# 查看特定程序的配置文件
cat /etc/apparmor.d/usr.sbin.nginx

# AppArmor 模式
# enforce - 強制模式
# complain - 投訴模式(只記錄不阻止)
# disabled - 禁用

# 切換到投訴模式(調試用)
sudo aa-complain /usr/sbin/nginx

# 切換到強制模式
sudo aa-enforce /usr/sbin/nginx

# 禁用特定配置
sudo aa-disable /usr/sbin/nginx

# 重新加載配置
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.nginx

# 查看日志
sudo dmesg | grep apparmor
sudo journalctl -k | grep apparmor

自定義 AppArmor 配置示例

# /etc/apparmor.d/usr.local.bin.myapp
#include

/usr/local/bin/myapp {
#include
#include

# 可執行文件
 /usr/local/bin/myapp mr,

# 配置文件(只讀)
 /etc/myapp/** r,

# 數據目錄(讀寫)
 /var/lib/myapp/** rw,

# 日志目錄
 /var/log/myapp/** w,

# 臨時文件
 /tmp/myapp-* rw,

# 網絡訪問
 network inet stream,
 network inet dgram,

# 拒絕其他所有訪問
 deny /etc/shadow r,
 deny /etc/passwd w,
}

3.2 實際應用案例

案例一:容器環境權限管理

2026 年了,不懂容器權限基本沒法干活。這塊坑特別多,我來詳細說說。

# Docker 默認以 root 運行,這是個安全隱患
docker run -it ubuntu whoami
# root

# 指定用戶運行(推薦)
docker run -it --user 1000:1000 ubuntu whoami
# 會顯示 uid=1000

# 在 Dockerfile 中指定用戶
# Dockerfile 示例
cat < Dockerfile
FROM ubuntu:22.04

# 創建非 root 用戶
RUN groupadd -r appgroup && useradd -r -g appgroup appuser

# 設置工作目錄權限
WORKDIR /app
COPY --chown=appuser:appgroup . .

# 切換到非 root 用戶
USER appuser

CMD ["./myapp"]
EOF

UID 映射問題:容器內的 UID 和宿主機是共享的!

# 容器內 UID 1000 = 宿主機 UID 1000
# 這可能導致權限問題

# 查看容器內進程的實際 UID
docker run -d --nametestnginx
ps aux | grep nginx
# 你會看到宿主機上顯示的是 UID,不是用戶名

# 解決方案:使用 User Namespace(Rootless 容器)
# Docker Rootless 模式
dockerd-rootless-setuptool.sh install

# 驗證 Rootless 模式
docker info | grep -i rootless

Kubernetes 中的權限控制

# Pod Security Context 示例
apiVersion:v1
kind:Pod
metadata:
name:secure-pod
spec:
securityContext:
 runAsNonRoot:true
 runAsUser:1000
 runAsGroup:1000
 fsGroup:1000
containers:
-name:app
 image:myapp:latest
 securityContext:
  allowPrivilegeEscalation:false
  readOnlyRootFilesystem:true
  capabilities:
   drop:
    -ALL
   add:
    -NET_BIND_SERVICE# 只添加必要的 capability

案例二:Web 服務器權限配置最佳實踐

#!/bin/bash
# 文件名:setup_web_permissions.sh
# 用途:配置 Nginx Web 服務器的權限

WEB_ROOT="/var/www/html"
WEB_USER="www-data"
WEB_GROUP="www-data"
UPLOAD_DIR="${WEB_ROOT}/uploads"

# 創建目錄結構
mkdir -p"${WEB_ROOT}"/{static,uploads,logs}

# 設置所有權
chown -R${WEB_USER}:${WEB_GROUP}${WEB_ROOT}

# 設置目錄權限
find${WEB_ROOT}-typed -execchmod 755 {} ;

# 設置文件權限
find${WEB_ROOT}-typef -execchmod 644 {} ;

# 上傳目錄特殊處理(需要寫權限,但禁止執行)
chmod 775${UPLOAD_DIR}
# 在 Nginx 配置中禁止執行上傳目錄的腳本
# location /uploads/ {
#   location ~ .(php|pl|py|sh)$ { deny all; }
# }

# 配置文件權限(敏感信息)
chmod 640 /etc/nginx/conf.d/*.conf
chown root:${WEB_GROUP}/etc/nginx/conf.d/*.conf

echo"Web permissions configured successfully!"

四、最佳實踐和注意事項

4.1 最佳實踐

4.1.1 最小權限原則

這是安全的黃金法則,說起來簡單做起來難。

# 錯誤示范(千萬別這么干!)
chmod 777 /var/www/html # 全開放,等著被黑吧
chmod -R 777 /     # 系統直接廢了

# 正確做法:按需分配
# 1. 先確定誰需要訪問
# 2. 確定需要什么權限(讀/寫/執行)
# 3. 只給必要的權限

# 常用權限速查
# 644 - 普通文件(所有者讀寫,其他人只讀)
# 755 - 可執行文件/目錄(所有者全權限,其他人讀+執行)
# 600 - 敏感文件(僅所有者讀寫)
# 700 - 私有目錄(僅所有者訪問)
# 640 - 配置文件(所有者讀寫,組內只讀)
# 750 - 應用目錄(所有者全權限,組內讀+執行)

4.1.2 安全加固清單

#!/bin/bash
# 文件名:security_hardening.sh
# 用途:系統權限安全加固

echo"=== Starting Security Hardening ==="

# 1. 關鍵系統文件權限
chmod 644 /etc/passwd
chmod 640 /etc/shadow
chmod 644 /etc/group
chmod 640 /etc/gshadow
chmod 600 /etc/ssh/sshd_config
chmod 700 /root

# 2. 限制 cron 訪問
chmod 600 /etc/crontab
chmod 700 /etc/cron.d
chmod 700 /etc/cron.daily
chmod 700 /etc/cron.hourly

# 3. 設置 umask(新文件默認權限)
# 在 /etc/profile 或 /etc/bashrc 中設置
# umask 027 # 新文件 640,新目錄 750

# 4. 禁用不必要的 SUID
# 根據實際需求決定是否移除
# chmod u-s /usr/bin/chage
# chmod u-s /usr/bin/gpasswd

echo"=== Security Hardening Complete ==="

4.2 注意事項

4.2.1 常見錯誤

錯誤現象 原因分析 解決方案
Permission denied 權限不足或 SELinux 阻止 檢查 rwx 權限和 SELinux 上下文
Operation not permitted 文件有 immutable 屬性 lsattr 檢查,chattr -i移除
chmod 不生效 文件系統掛載為只讀 mount -o remount,rw
ACL 權限失效 mask 限制或 chmod 覆蓋 檢查 mask 設置

4.2.2 危險操作警告

# 這些命令可能導致系統崩潰,請三思!

# 1. 遞歸修改根目錄權限
chmod -R 777 /     # 絕對禁止!
chown -R user:group / # 絕對禁止!

# 2. 修改關鍵系統文件
chmod 777 /etc/shadow # 安全漏洞
chmod 777 /etc/sudoers # sudo 會拒絕工作

# 3. 移除自己的權限
chmod 000 ~/.bashrc  # 可能無法登錄

五、故障排查和監控

5.1 故障排查

5.1.1 權限問題診斷流程

# 第一步:檢查基礎權限
ls -la /path/to/file
stat/path/to/file

# 第二步:檢查 ACL
getfacl /path/to/file

# 第三步:檢查擴展屬性
lsattr /path/to/file

# 第四步:檢查 SELinux(RHEL 系)
ls -Z /path/to/file
ausearch -m avc -ts recent

# 第五步:檢查 AppArmor(Debian 系)
aa-status
dmesg | grep apparmor

5.2 性能監控

5.2.1 權限審計配置

# 使用 auditd 監控權限變更
# 安裝 auditd
sudo apt install auditd # Debian/Ubuntu
sudo dnf install audit # RHEL/CentOS

# 添加審計規則
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/shadow -p wa -k shadow_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes

# 查看審計日志
sudo ausearch -k passwd_changes

5.3 備份與恢復

# 備份文件權限
getfacl -R /data > /backup/data_acl_backup.txt

# 恢復文件權限
setfacl --restore=/backup/data_acl_backup.txt

六、總結

6.1 技術要點回顧

基礎權限:rwx 三權分立,數字法和符號法靈活運用

特殊權限:SUID/SGID/Sticky Bit 各有用途,謹慎使用

ACL:細粒度控制,注意 mask 機制

SELinux/AppArmor:強制訪問控制,別輕易關閉

容器權限:UID 映射、Rootless 模式是趨勢

6.2 進階學習方向

Linux Capabilities:比 SUID 更細粒度的特權控制

Seccomp:系統調用過濾,容器安全必備

eBPF 安全:新一代內核級安全監控

6.3 參考資料

Linux man pages - chmod/chown

Red Hat SELinux Guide

Ubuntu AppArmor Wiki

Docker Security Best Practices

作者寄語:權限管理看似簡單,實則博大精深。記住最小權限原則,養成良好習慣,你的系統會更加安全。有問題歡迎交流!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11758

    瀏覽量

    219001
  • 容器
    +關注

    關注

    0

    文章

    531

    瀏覽量

    22965

原文標題:Linux 權限體系詳解:chmod、chown 與 ACL 的進階玩法

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式Linux入門(二、Linux文件系統、文件類型及權限管理

    嵌入式 Linux入 門第二課, linux 文件系統、文件類型及權限管理。 ...... 矜
    的頭像 發表于 06-20 11:44 ?3661次閱讀
    嵌入式<b class='flag-5'>Linux</b>入門(二、<b class='flag-5'>Linux</b><b class='flag-5'>文件</b>系統、<b class='flag-5'>文件</b>類型及<b class='flag-5'>權限</b><b class='flag-5'>管理</b>)

    Linux學習雜談】之文件權限管理

    本帖最后由 michael_llh 于 2016-8-8 22:52 編輯 文件權限:故名思議就是我們使用操作一個文件權限,在windows底下我們如果刪除系統
    發表于 08-08 22:50

    Linux文件權限管理的探討

    Linux 是一種多用戶的操作系統,其文件權限管理文件管理中占有重要的地位。為了更好地把握
    發表于 06-11 09:37 ?11次下載

    Linux改變文件或目錄的訪問權限命令

    Linux改變文件或目錄的訪問權限命令 Linux改變文件或目錄的訪問權限命令  
    發表于 01-18 12:46 ?1370次閱讀

    Windows下linux權限管理問題解析

    在Windows下,可以通過鼠標右擊文件,在屬性欄查看文件權限Linux下的文件“哲學”是否與Windows相同呢?我們從以下幾點分析。
    的頭像 發表于 06-27 17:24 ?7355次閱讀
    Windows下<b class='flag-5'>linux</b><b class='flag-5'>權限</b><b class='flag-5'>管理</b>問題解析

    淺談Linux權限管理的ACL權限

    Linux權限管理Linux很重要的一項內容,重則引起用戶信息泄露,輕則導致文件錯亂和丟失。企業服務器里有些目錄下面的東西暫時保密,不希望
    的頭像 發表于 08-18 11:13 ?9587次閱讀

    Linux里面如何理解和管理他們的讀、寫、執行權限

    LinuxWindows 一切皆是文件是Unix/Linux的基本哲學之一,目錄、字符設備、塊設備、套接字等在Unix/Linux都是以文件的形式存在。面對眾多的
    發表于 09-22 00:55 ?782次閱讀

    linux文件訪問權限怎么設置

    Linux 文件訪問權限是操作系統中一個非常重要的概念。正確地設置文件訪問權限可以保護系統的安全性,防止未經授權的人員對
    的頭像 發表于 11-23 10:20 ?2729次閱讀

    Linux把目錄權限給指定用戶

    Linux是一個開放源代碼的操作系統,它基于Unix的設計原則,提供了豐富的權限管理功能,允許用戶對系統中的文件和目錄進行精確的控制。在Linux
    的頭像 發表于 11-23 10:30 ?1w次閱讀

    Linux文件權限及Makefile

    的詳細信息 //man -L zh_CN open man 1 open man 2 open man 3 open Part2文件權限 2.1 權限理解 在 Ubuntu(以及其他類 UNIX
    的頭像 發表于 11-24 16:06 ?1143次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>文件</b><b class='flag-5'>權限</b>及Makefile

    Linux用戶身份與進程權限詳解

    在學習 Linux 系統權限相關的主題時,我們首先關注的基本都是文件的 ugo 權限。ugo 權限信息是
    的頭像 發表于 10-23 11:41 ?1326次閱讀
    <b class='flag-5'>Linux</b>用戶身份與進程<b class='flag-5'>權限</b><b class='flag-5'>詳解</b>

    Linux文件權限詳解

    權限的意義在于允許某一個用戶或某個用戶組以規定的方式去訪問某個文件
    的頭像 發表于 11-01 09:45 ?1277次閱讀

    搞懂Linux權限管理,提升系統安全性與穩定性

    目錄 權限管理 4.1 linux安全上下文 4.2 特殊權限 2.1 修改權限的命令chmod 2.2 修改
    的頭像 發表于 11-22 10:31 ?1205次閱讀
    搞懂<b class='flag-5'>Linux</b><b class='flag-5'>權限</b><b class='flag-5'>管理</b>,提升系統安全性與穩定性

    Linux權限管理解析

    權限指的是某一個用戶針對某一個文件權限(root超級管理員擁有全部權限)
    的頭像 發表于 04-09 10:06 ?817次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>權限</b><b class='flag-5'>管理</b>解析

    Linux權限管理基礎入門

    Linux的廣闊天空中,權限管理猶如一只翱翔的雄鷹,掌控著系統的安全與秩序。掌握Linux權限,不僅能讓你的系統
    的頭像 發表于 05-06 13:44 ?755次閱讀
    <b class='flag-5'>Linux</b><b class='flag-5'>權限</b><b class='flag-5'>管理</b>基礎入門