umask 設(shè)置決定文件和目錄的默認(rèn)權(quán)限,而 chmod 用于修改已有文件或目錄的權(quán)限。umask 通過(guò)屏蔽理論最大權(quán)限(文件為 666,目錄為 777)來(lái)確定新建文件或目錄的實(shí)際權(quán)限,例如 umask 022 時(shí),文件權(quán)限為 644,目錄權(quán)限為 755;1.chmod 使用符號(hào)模式或八進(jìn)制數(shù)字更改現(xiàn)有文件權(quán)限;2.umask 可在終端臨時(shí)設(shè)置、用戶配置文件中設(shè)置或系統(tǒng)級(jí)配置文件中設(shè)置;3.不同程序可能繞過(guò) umask 自定義權(quán)限,權(quán)限設(shè)置應(yīng)根據(jù)實(shí)際場(chǎng)景調(diào)整。
在 linux 系統(tǒng)中,文件和目錄的默認(rèn)權(quán)限并不是固定的,而是由 umask 設(shè)置決定的。chmod 則是用來(lái)修改已有文件或目錄權(quán)限的工具。兩者配合使用,可以靈活控制文件系統(tǒng)的訪問(wèn)權(quán)限。
一、umask 是什么?它如何影響默認(rèn)權(quán)限?
umask 的作用是設(shè)置默認(rèn)權(quán)限的“掩碼”,也就是告訴系統(tǒng)哪些權(quán)限是不應(yīng)該被自動(dòng)賦予的。它的值通常以八進(jìn)制表示,默認(rèn)一般是 022 或 002,具體取決于系統(tǒng)配置和用戶類(lèi)型(比如普通用戶 vs root)。
舉個(gè)例子:
- 當(dāng)你創(chuàng)建一個(gè)新文件時(shí),它的默認(rèn)權(quán)限理論上是 666(可讀寫(xiě)不可執(zhí)行);
- 創(chuàng)建一個(gè)目錄時(shí),默認(rèn)權(quán)限是 777(所有用戶都能讀寫(xiě)執(zhí)行);
- 實(shí)際上創(chuàng)建出來(lái)的權(quán)限是用這個(gè)“理論最大值”減去 umask 值。
所以如果 umask 是 022:
- 文件權(quán)限:666 – 022 = 644(即 rw-r–r–)
- 目錄權(quán)限:777 – 022 = 755(即 rwxr-xr-x)
umask 并不會(huì)改變已有文件的權(quán)限,它只在新建文件或目錄時(shí)起作用。
二、chmod 如何修改已有文件權(quán)限?
chmod 是用來(lái)更改現(xiàn)有文件或目錄權(quán)限的命令。它的基本格式是:
chmod [mode] [文件或目錄](méi)
mode 可以用符號(hào)模式或八進(jìn)制數(shù)字表示:
- 符號(hào)模式:例如 chmod u+x file.txt 表示給文件擁有者添加執(zhí)行權(quán)限;
- 數(shù)字模式:例如 chmod 644 file.txt 表示將權(quán)限設(shè)為 rw-r–r–。
chmod 和 umask 不直接配合,但它們共同構(gòu)成了對(duì)文件權(quán)限的完整控制體系:umask 控制默認(rèn)創(chuàng)建時(shí)的權(quán)限,chmod 負(fù)責(zé)后續(xù)調(diào)整。
三、umask 應(yīng)該在哪里設(shè)置?
umask 的設(shè)置可以在多個(gè)層級(jí)生效,常見(jiàn)位置包括:
- 臨時(shí)設(shè)置:在終端中直接運(yùn)行 umask 027,僅當(dāng)前 shell 會(huì)話有效;
- 用戶級(jí)設(shè)置:在用戶的 .bashrc 或 .bash_profile 中添加 umask 值;
- 系統(tǒng)級(jí)設(shè)置:修改 /etc/bashrc 或 /etc/profile,會(huì)影響所有用戶;
- PAM 模塊設(shè)置:有些發(fā)行版支持通過(guò) /etc/login.defs 來(lái)設(shè)置默認(rèn) umask。
如果你希望某個(gè)用戶有更嚴(yán)格的默認(rèn)權(quán)限,比如新建文件只能自己讀寫(xiě)(600),那可以把他的 umask 設(shè)為 077。
四、實(shí)際使用中要注意的地方
- umask 是“屏蔽”不是“設(shè)置”:很多人誤以為 umask 是直接設(shè)置權(quán)限,其實(shí)它是從最大權(quán)限中“去掉”某些位。
- 不同程序可能有自己的默認(rèn)行為:比如一些服務(wù)或腳本在創(chuàng)建文件時(shí)可能會(huì)繞過(guò) umask,手動(dòng)指定權(quán)限。
- 權(quán)限設(shè)置要根據(jù)場(chǎng)景調(diào)整:開(kāi)發(fā)環(huán)境可以寬松些,生產(chǎn)環(huán)境則應(yīng)盡量收緊權(quán)限,避免安全風(fēng)險(xiǎn)。
基本上就這些。掌握 umask 和 chmod 的區(qū)別與配合方式,能讓你在管理 Linux 文件權(quán)限時(shí)更加得心應(yīng)手。