歡迎來到藍隊云技術(shù)小課堂。
一、權(quán)限的基本概念
1.1 權(quán)限類型
Linux 系統(tǒng)中有三種基本權(quán)限:
1.2 權(quán)限作用對象
權(quán)限針對三類用戶:
u (user/owner) - 文件所有者
g (group) - 文件所屬組
o (others) - 其他用戶
a (all) - 所有用戶(u+g+o)
二、權(quán)限的表示方法
2.1 字符表示法
-rwxr-xr-x
d rwx r-x r-x
↑ ↑ ↑ ↑
│ │ │ └─ 其他用戶權(quán)限 (o)
│ │ └─ 所屬組權(quán)限 (g)
│ └─ 所有者權(quán)限 (u)
└─ 文件類型 (-:普通文件, d:目錄, l:鏈接)
2.2 數(shù)字表示法(八進制)
| 權(quán)限 | 二進制 | 八進制 |
|---|
| --- | 000 | 0 |
| --x | 001 | 1 |
| -w- | 010 | 2 |
| -wx | 011 | 3 |
| r-- | 100 | 4 |
| r-x | 101 | 5 |
| rw- | 110 | 6 |
| rwx | 111 | 7 |
三、chmod 命令詳解
3.1 數(shù)字模式(最常用)
# 常用權(quán)限組合
chmod 755 file # rwxr-xr-x
chmod 644 file # rw-r--r--
chmod 777 file # rwxrwxrwx(不推薦用于安全文件)
chmod 750 file # rwxr-x---
chmod 600 file # rw-------
chmod 700 script.sh # 確保腳本可執(zhí)行
3.2 字符模式
# 添加權(quán)限
chmod u+x file # 給所有者添加執(zhí)行權(quán)限
chmod g+r file # 給組添加讀取權(quán)限
chmod o+w file # 給其他用戶添加寫入權(quán)限
chmod a+x file # 給所有用戶添加執(zhí)行權(quán)限
chmod +x file # 給所有用戶添加執(zhí)行權(quán)限(簡寫)
# 刪除權(quán)限
chmod u-w file # 刪除所有者的寫入權(quán)限
chmod g-x file # 刪除組的執(zhí)行權(quán)限
chmod o-r file # 刪除其他用戶的讀取權(quán)限
chmod a-w file # 刪除所有用戶的寫入權(quán)限
# 設(shè)置權(quán)限
chmod u=rwx file # 設(shè)置所有者權(quán)限為 rwx
chmod g=rx file # 設(shè)置組權(quán)限為 r-x
chmod o=r file # 設(shè)置其他用戶權(quán)限為 r--
chmod u=rw,g=r,o= file # 分別設(shè)置不同用戶的權(quán)限
3.3 遞歸修改目錄權(quán)限
# 修改目錄及其所有內(nèi)容
chmod -R 755 directory/ # 遞歸修改目錄權(quán)限
chmod -R u+rwx directory/ # 遞歸添加所有者權(quán)限
chmod -R g-w directory/ # 遞歸刪除組寫入權(quán)限
四、特殊權(quán)限
4.1 SUID (Set User ID) - 4
# SUID 權(quán)限
chmod 4755 file # 設(shè)置 SUID 權(quán)限
chmod u+s file # 同 4755
ls -l /usr/bin/passwd # 查看 SUID 示例
4.2 SGID (Set Group ID) - 2
# SGID 權(quán)限
chmod 2755 file # 設(shè)置 SGID
chmod g+s file # 同 2755
chmod 2770 /shared/ # 常用于共享目錄
4.3 Sticky Bit (粘滯位) - 1
# Sticky Bit
chmod 1777 /tmp # 設(shè)置粘滯位
chmod o+t directory # 同 1777
chmod 1755 directory
作用:只有文件所有者才能刪除/重命名自己的文件
位置:其他用戶的執(zhí)行位,顯示為 t
示例:drwxrwxrwt(/tmp 目錄)
常用場景:/tmp, /var/tmp共享目錄
4.4 特殊權(quán)限數(shù)字表示
# 組合設(shè)置
chmod 4755 file # SUID:4 + 755 = 4755
chmod 2755 file # SGID:2 + 755 = 2755
chmod 1755 file # Sticky:1 + 755 = 1755
chmod 6755 file # SUID+SGID:4+2=6 + 755 = 6755
五、chown 和 chgrp 命令
5.1 更改所有者和組
# 更改所有者
chown user file # 更改文件所有者
chown user:group file # 同時更改所有者和組
chown :group file # 只更改組(同 chgrp)
chown user: file # 更改所有者,組設(shè)為用戶主組
# 遞歸更改
chown -R user:group directory/ # 遞歸更改目錄
chown -R www-data:www-data /var/www/ # 常見用例
# 保留符號鏈接
chown -h user link # 更改符號鏈接本身,而不是目標
5.2 更改所屬組
# 更改文件所屬組
chgrp group file # 更改文件所屬組
chgrp -R group directory/ # 遞歸更改目錄
chgrp staff file.txt
六、umask 詳解
6.1 umask 的作用
umask 決定新創(chuàng)建文件的默認權(quán)限
umask # 查看當前 umask
umask 022 # 設(shè)置 umask
umask 027
umask -S # 以符號形式顯示
6.2 權(quán)限計算規(guī)則
常見 umask 值:
# 默認權(quán)限
umask 0022 # 目錄:755(rwxr-xr-x), 文件:644(rw-r--r--)
umask 0002 # 目錄:775(rwxrwxr-x), 文件:664(rw-rw-r--)
umask 0077 # 目錄:700(rwx------), 文件:600(rw-------)
6.3 永久設(shè)置 umask
# 用戶級設(shè)置
vim ~/.bashrc # 添加:umask 022
vim ~/.bash_profile
# 系統(tǒng)級設(shè)置
vim /etc/profile
vim /etc/bashrc
七、實用示例
7.1 文件和目錄權(quán)限設(shè)置
# 安全配置文件權(quán)限
chmod 600 ~/.ssh/id_rsa # 私鑰文件
chmod 644 ~/.ssh/id_rsa.pub # 公鑰文件
chmod 700 ~/.ssh/ # SSH 目錄
chmod 755 /usr/local/bin/ # 可執(zhí)行程序目錄
chmod 644 /etc/passwd # 敏感配置文件
chmod 600 /etc/shadow # 密碼文件
# Web 服務(wù)器權(quán)限
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
find /var/www/html -type f -exec chmod 644 {} \\\\\\\\;
find /var/www/html -type d -exec chmod 755 {} \\\\\\\\;
# 共享目錄設(shè)置
mkdir /shared
chown :developers /shared
chmod 2775 /shared # SGID 確保繼承組權(quán)限
7.2 腳本和程序權(quán)限
# 確保腳本可執(zhí)行
chmod +x script.sh
chmod 755 script.sh
# 只有所有者可寫
chmod 755 /usr/local/bin/myapp
chmod 644 /etc/myapp.conf
# 特權(quán)程序
chmod 4755 /usr/bin/sudo # SUID
7.3 權(quán)限檢查
# 查看權(quán)限詳細信息
ls -la file
ls -ld directory/ # 只查看目錄權(quán)限
stat file # 查看詳細權(quán)限信息
getfacl file # 查看 ACL 權(quán)限
# 查找有特殊權(quán)限的文件
find /usr/bin -perm -4000 # 查找 SUID 文件
find /usr/bin -perm -2000 # 查找 SGID 文件
find / -perm -1000 -type d 2>/dev/null # 查找粘滯位目錄
八、高級權(quán)限控制
8.1 訪問控制列表 (ACL)
# 安裝 ACL 支持
sudo apt-get install acl # Debian/Ubuntu
sudo yum install acl # RHEL/CentOS
# 設(shè)置 ACL
setfacl -m u:username:rwx file # 給用戶添加權(quán)限
setfacl -m g:groupname:rx file # 給組添加權(quán)限
setfacl -m o::r file # 設(shè)置其他用戶權(quán)限
setfacl -m d:u:username:rwx dir/ # 默認 ACL(對新文件生效)
# 查看 ACL
getfacl file
ls -l file # 有 ACL 的文件會顯示 +
# 刪除 ACL
setfacl -x u:username file # 刪除用戶權(quán)限
setfacl -b file # 刪除所有 ACL
8.2 默認權(quán)限配置文件
# 創(chuàng)建文件模板
vim /etc/skel/.bashrc
# 添加:umask 022
# 檢查系統(tǒng)默認設(shè)置
vim /etc/login.defs
# 查看 UMASK 設(shè)置
九、常見問題解決
9.1 權(quán)限問題診斷
# 權(quán)限拒絕錯誤
ls -l file # 檢查權(quán)限
id # 檢查當前用戶和組
groups username # 檢查用戶所屬組
# 文件不可執(zhí)行
chmod +x script.sh
./script.sh
# 無法寫入目錄
chmod +w directory/
chown username directory/
9.2 安全最佳實踐
# 最小權(quán)限原則
1. 文件默認權(quán)限 644
2. 目錄默認權(quán)限 755
3. 敏感文件權(quán)限 600
4. 腳本文件權(quán)限 755
5. 共享目錄使用 SGID
6. 臨時目錄使用粘滯位
7. 避免不必要的 SUID/SGID
8. 定期檢查權(quán)限:find / -perm -4000 -o -perm -2000
十、權(quán)限管理速查表
| 數(shù)字 | 權(quán)限 | 描述 |
|---|
| 400 | r-------- | 所有者可讀 |
| 644 | rw-r--r-- | 默認文件權(quán)限 |
| 755 | rwxr-xr-x | 默認目錄/腳本權(quán)限 |
| 600 | rw------- | 所有者可讀寫 |
| 700 | rwx------ | 所有者完全控制 |
| 750 | rwxr-x--- | 所有者和組 |
| 777 | rwxrwxrwx | 所有用戶完全控制(危險?。?/span> |
| 特殊 | 描述 |
|
| ------ | ------ |
|
| 4755 | rwsr-xr-x | SUID 權(quán)限 |
| 2755 | rwxr-sr-x | SGID 權(quán)限 |
| 1755 | rwxr-xr-t | 粘滯位權(quán)限 |
| 1777 | rwxrwxrwt | 完全開放的粘滯位目錄 |
這個詳細的權(quán)限管理指南涵蓋了 Linux 權(quán)限的所有重要方面,包括基本權(quán)限、特殊權(quán)限、umask 設(shè)置和 ACL 控制。理解這些概念對于系統(tǒng)管理和安全配置至關(guān)重要。藍隊云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時,藍隊云整理了運維必備的工具包免費分享給大家使用,需要的朋友可以直接咨詢。
更多技術(shù)知識,藍隊云期待與你一起探索。