Linux 目錄權(quán)限那些事兒
在 Linux 的世界里,權(quán)限管理像一個(gè)古老的儀式,為文件和目錄筑起堅(jiān)實(shí)的防護(hù)墻。今天我們就來一起領(lǐng)略 Linux 目錄權(quán)限的奧秘!
一、Linux 權(quán)限的基礎(chǔ)概念
在 Linux 系統(tǒng)中,所有文件和目錄都遵循一套權(quán)限規(guī)則。這些規(guī)則控制誰可以讀(Read)、寫(Write)或執(zhí)行(Execute)文件。這聽起來簡單,但其實(shí)背后有一整套體系。
1. 權(quán)限的三種身份
Linux 把用戶分為三類,每類用戶對(duì)文件/目錄的權(quán)限可以單獨(dú)設(shè)定:
- 所有者(Owner):文件的創(chuàng)建者,一般默認(rèn)是文件的所有者。
- 所屬組(Group):一群用戶組成的組,文件可以屬于某個(gè)組。
- 其他用戶(Others):所有不屬于上述兩類的用戶。
2. 權(quán)限的三種操作
文件和目錄都有以下三種權(quán)限:
讀權(quán)限(r):
- 文件:可以查看文件內(nèi)容。
- 目錄:可以列出目錄中的文件。
寫權(quán)限(w):
- 文件:可以修改文件內(nèi)容。
- 目錄:可以添加、刪除、重命名目錄內(nèi)的文件。
執(zhí)行權(quán)限(x):
- 文件:可以運(yùn)行文件(如腳本)。
- 目錄:可以進(jìn)入目錄。
3. 權(quán)限的表示方法
權(quán)限用 rwx 這三個(gè)字母表示。例如,一個(gè)文件的權(quán)限是 -rw-r--r--,它可以分解為:
- 第一個(gè)字符:- 表示普通文件,d 表示目錄,l 表示符號(hào)鏈接等。
- 后面的 9 個(gè)字符:分成三組,每組三個(gè),分別表示 所有者、所屬組 和 其他用戶 的權(quán)限。
權(quán)限也可以用八進(jìn)制表示:
- r = 4
- w = 2
- x = 1
- 沒有權(quán)限 = 0
例如,rw- 就是 4 + 2 = 6,所以 -rw-r--r-- 可以寫成 644。
二、常見的目錄權(quán)限操作
1. 查看權(quán)限:ls -l
最基本的操作就是看看權(quán)限長什么樣。運(yùn)行以下命令:
ls -l
輸出示例:
-rw-r--r-- 1 user group 1024 Nov 16 example.txt
這里你能看到權(quán)限信息、文件所有者、所屬組、文件大小和修改時(shí)間。
2. 修改權(quán)限:chmod
chmod 是修改文件權(quán)限的主力工具,有兩種使用方法:符號(hào)法和數(shù)字法。
符號(hào)法
chmod u+x example.sh # 給文件所有者增加執(zhí)行權(quán)限
chmod g-w example.sh # 移除所屬組的寫權(quán)限
chmod o+r example.sh # 允許其他用戶讀取文件
數(shù)字法
chmod 755 example.sh # 設(shè)置文件權(quán)限為 -rwxr-xr-x
chmod 644 example.txt # 設(shè)置文件權(quán)限為 -rw-r--r--
注意:數(shù)字法適合批量操作,但符號(hào)法更直觀!
3. 修改所有者和組:chown 和 chgrp
修改所有者
chown new_owner example.txt
修改所屬組
chgrp new_group example.txt
同時(shí)修改所有者和組
chown new_owner:new_group example.txt
如果你想遞歸修改整個(gè)目錄及其子目錄的所有者/組,加上 -R 參數(shù):
chown -R new_owner:new_group /path/to/directory
4. 默認(rèn)權(quán)限:umask
每次新建文件或目錄時(shí),系統(tǒng)會(huì)根據(jù)默認(rèn)的 umask 設(shè)置權(quán)限。可以查看當(dāng)前的 umask:
umask
- 輸出可能是 0022,它會(huì)限制其他用戶的寫權(quán)限。
- 可以修改 umask 來影響新建文件的權(quán)限:
- umask 0007 # 讓其他用戶完全沒有權(quán)限
三、有趣的權(quán)限用例
1. 限制目錄訪問:chmod 700
如果你有一個(gè)私密文件夾,不想讓其他人窺探你的小秘密,可以這樣做:
chmod 700 my_secret_folde
這將確保只有你(所有者)可以訪問。
2. 共享文件夾:chmod 770
想和團(tuán)隊(duì)共享一個(gè)目錄?可以讓所有組成員都有權(quán)限:
chmod 770 team_folder
還可以用 chgrp 修改組為你的團(tuán)隊(duì)組。
3. 阻止意外修改:chmod a-w
你有個(gè)文件,不希望任何人誤操作刪改?禁用寫權(quán)限:
chmod a-w important_document.txt
4. 臨時(shí)開放執(zhí)行權(quán)限:chmod +x
如果下載了一個(gè)腳本,需要臨時(shí)運(yùn)行它,可以快速賦予執(zhí)行權(quán)限:
chmod +x script.sh
./script.sh
四、終極問題:誰動(dòng)了我的權(quán)限?
想要知道誰對(duì)你的文件動(dòng)了手腳?可以用 auditd 進(jìn)行監(jiān)控:
1.安裝 auditd:
sudo apt install auditd
2.添加監(jiān)控規(guī)則:
sudo auditctl -w /path/to/your/file -p rwxa -k file_monitor
3.查看日志:
sudo ausearch -k file_monitor
五、總結(jié)
Linux 目錄權(quán)限雖然規(guī)則明確,但靈活多變,用好了可以事半功倍,用不好會(huì)踩各種坑。無論是保護(hù)自己的文件,還是高效地協(xié)作,掌握權(quán)限管理是不可或缺的一步。