Linux 文件權(quán)限與chmod的實現(xiàn)示例
問題場景
最近在玩linux服務(wù)器時遇到了一些文件權(quán)限相關(guān)的問題,故總結(jié)本文
- 運行腳本/程序提示權(quán)限不足,需要添加執(zhí)行權(quán)限
- 上傳的二進制程序無法啟動,需賦予可執(zhí)行權(quán)限
- 應(yīng)用/服務(wù)讀不到文件,提示權(quán)限錯誤,需開放讀權(quán)限
- 進入目錄時報權(quán)限拒絕,需給目錄添加可進入權(quán)限
- 其他用戶/服務(wù)無法訪問文件,需調(diào)整權(quán)限讓其可讀/可寫
1、Linux 權(quán)限的基本概念
在 Linux 中,每個文件和目錄都有三類"使用者":
| 身份 | 英文 | 說明 |
|---|---|---|
| 文件所有者 | User (u) | 創(chuàng)建該文件的用戶 |
| 所屬群組 | Group (g) | 與所有者同組的用戶 |
| 其他人 | Others (o) | 除以上兩類之外的所有人 |
每類使用者都有三種權(quán)限:
| 權(quán)限 | 英文 | 對文件的意義 | 對目錄的意義 |
|---|---|---|---|
| 讀 | Read ® | 可以讀取文件內(nèi)容 | 可以列出目錄內(nèi)容(ls) |
| 寫 | Write (w) | 可以修改文件內(nèi)容 | 可以在目錄中創(chuàng)建/刪除文件 |
| 執(zhí)行 | Execute (x) | 可以運行該文件 | 可以進入該目錄(cd) |
2、用 ls -l看懂權(quán)限字符串
運行 ls -l,你會看到這樣的輸出:
-rwxr-xr-- 1 alice dev 4096 Jun 10 10:00 deploy.sh drwxr-x--- 2 alice dev 4096 Jun 10 10:00 config/
第一列的 10 個字符就是權(quán)限信息,拆解如下:
- rwx r-x r-- │ │ │ │ │ │ │ └── Others(其他人):r-- = 只讀 │ │ └────── Group(群組):r-x = 讀+執(zhí)行 │ └────────── User(所有者):rwx = 讀+寫+執(zhí)行 └──────────── 文件類型:- 普通文件,d 目錄,l 軟鏈接
3、數(shù)字的含義:八進制權(quán)限
這才是重點。chmod 755 里的數(shù)字是怎么來的?
每種權(quán)限對應(yīng)一個固定的數(shù)值:
r = 4 w = 2 x = 1 - = 0
三個權(quán)限相加,就得到該身份的權(quán)限數(shù)字:
| 權(quán)限組合 | 計算 | 數(shù)字 | 含義 |
|---|---|---|---|
| rwx | 4+2+1 | 7 | 讀、寫、執(zhí)行 |
| rw- | 4+2+0 | 6 | 讀、寫 |
| r-x | 4+0+1 | 5 | 讀、執(zhí)行 |
| r-- | 4+0+0 | 4 | 只讀 |
| -wx | 0+2+1 | 3 | 寫、執(zhí)行 |
| -w- | 0+2+0 | 2 | 只寫 |
| --x | 0+0+1 | 1 | 只執(zhí)行 |
| --- | 0+0+0 | 0 | 無權(quán)限 |
所以 chmod 755 就是:
7 5 5 rwx r-x r-x 所有者 群組 其他人 4+2+1 4+0+1 4+0+1
4、常用權(quán)限數(shù)字速查
| 命令 | 權(quán)限字符串 | 適用場景 |
|---|---|---|
| chmod 777 | rwxrwxrwx | 所有人可讀寫執(zhí)行(危險,慎用) |
| chmod 755 | rwxr-xr-x | 可執(zhí)行腳本、目錄(最常用) |
| chmod 644 | rw-r--r-- | 普通文件、配置文件(最常用) |
| chmod 600 | rw------- | 私鑰文件(如 SSH key) |
| chmod 700 | rwx------ | 私有腳本,只有自己能用 |
| chmod 664 | rw-rw-r-- | 團隊協(xié)作文件 |
| chmod 400 | r-------- | 只讀保護,防止誤修改 |
5、chmod 的幾種用法
數(shù)字方式(常用)
chmod 755 deploy.sh chmod -R 644 /var/www/html
-R = Recursive(遞歸)
即:不僅改這個目錄,還把它里面所有的子文件夾、所有文件,全部一起改權(quán)限。
符號方式(直觀)
# 給所有者添加執(zhí)行權(quán)限 chmod u+x deploy.sh # 去掉其他人的寫權(quán)限 chmod o-w config.txt # 給群組設(shè)置讀寫權(quán)限 chmod g=rw data.csv # 給所有人添加讀權(quán)限 chmod a+r readme.md
符號說明:
u/g/o/a= 所有者 / 群組 / 其他人 / 所有人+/-/== 添加 / 移除 / 精確設(shè)置
6、實際場景
# Web 服務(wù)器靜態(tài)文件 chmod 644 index.html # Shell 腳本(需要執(zhí)行權(quán)限) chmod 755 start.sh # SSH 私鑰(權(quán)限太寬會報錯) chmod 600 ~/.ssh/id_rsa # 目錄(需要 x 才能進入) chmod 755 /var/www/html # 敏感配置文件(只有自己能讀) chmod 600 .env
7、一張圖記住所有數(shù)字
r=4 w=2 x=1
┌─────────────────────────┐
7 = │ 4 + 2 + 1 │ rwx │
6 = │ 4 + 2 + 0 │ rw- │
5 = │ 4 + 0 + 1 │ r-x │
4 = │ 4 + 0 + 0 │ r-- │
3 = │ 0 + 2 + 1 │ -wx │
2 = │ 0 + 2 + 0 │ -w- │
1 = │ 0 + 0 + 1 │ --x │
0 = │ 0 + 0 + 0 │ --- │
└─────────────────────────┘
chmod 7 5 5
│ │ └── 其他人: r-x
│ └─────── 群組: r-x
└──────────── 所有者: rwx
r=4, w=2, x=1,三個數(shù)字分別對應(yīng)所有者、群組、其他人,每位數(shù)字是三種權(quán)限的加和。
到此這篇關(guān)于Linux 文件權(quán)限與chmod的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Linux 文件權(quán)限與chmod內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux查詢服務(wù)器系統(tǒng)版本號的多種方法
在 Linux 系統(tǒng)管理和維護工作中,了解當前操作系統(tǒng)的版本信息是最基礎(chǔ)也是最重要的操作之一,系統(tǒng)版本不僅關(guān)系到軟件兼容性、安全更新策略,還直接影響到故障排查和技術(shù)支持的效率,本文給大家介紹了Linux查詢服務(wù)器系統(tǒng)版本號的多種方法,需要的朋友可以參考下2025-08-08
配置fail2ban對Apache服務(wù)器進行安全防護的方法
這篇文章主要介紹了配置fail2ban對Apache服務(wù)器進行安全防護的方法,主要是起到過濾IP地址的效果,示例基于Linux系統(tǒng),需要的朋友可以參考下2015-06-06
logrotate實現(xiàn)日志切割方式(轉(zhuǎn)儲)
這篇文章主要介紹了logrotate實現(xiàn)日志切割方式(轉(zhuǎn)儲),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
CentOS7開啟MySQL8主從備份、每日定時全量備份(推薦)
這篇文章主要介紹了CentOS7開啟MySQL8主從備份、每日定時全量備份,解決了鏈接mysql數(shù)據(jù)庫很慢的問題,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-11-11

