Linux 修改文件權(quán)限
前面小節(jié)介紹了用戶權(quán)限相關(guān)的知識,從這一小節(jié)開始我們將要開始學(xué)習(xí)文件權(quán)限相關(guān)的知識,如何給文件修改權(quán)限,之前小節(jié)介紹過 ls
命令展示出來的一些文件相關(guān)的信息,這里面就有和文件權(quán)限相關(guān)的信息。
在 Linux 系統(tǒng)中,有時候某些文件內(nèi)容不能修改,只能擁有只讀權(quán)限,某些文件需要讀寫權(quán)限,即可以讀,又可以寫,某些文件需要可執(zhí)行權(quán)限,這個時候若文件的相關(guān)權(quán)限不正確,就可能報錯業(yè)務(wù)出錯,因此需要對文件權(quán)限進(jìn)行修改。
1. Linux 文件權(quán)限值
在上述權(quán)限中的文件讀、寫、執(zhí)行權(quán)限信息中,對應(yīng)著二進(jìn)制數(shù)值,對應(yīng)關(guān)系如下表:
權(quán)限展示值 | 二進(jìn)制值 | 八進(jìn)制值 | 描述 |
---|---|---|---|
--- |
000 | 0 | 表示沒有讀、寫、執(zhí)行權(quán)限 |
--x |
001 | 1 | 表示有執(zhí)行權(quán)限,沒有讀、寫權(quán)限 |
-w- |
010 | 2 | 表示有寫,沒有讀、執(zhí)行權(quán)限 |
-wx |
011 | 3 | 表示有寫、執(zhí)行權(quán)限,沒有讀權(quán)限 |
r-- |
100 | 4 | 表示有讀權(quán)限,沒有寫、執(zhí)行權(quán)限 |
r-x |
101 | 5 | 表示有讀、執(zhí)行權(quán)限,沒有寫權(quán)限 |
rw- |
110 | 6 | 表示有讀、寫權(quán)限,沒有執(zhí)行權(quán)限 |
rwx |
111 | 7 | 表示有讀、寫、執(zhí)行權(quán)限 |
2. umask 命令
在 Linux 系統(tǒng)中創(chuàng)建一個新的文件或者目錄的時候,它們都會有默認(rèn)的訪問權(quán)限,umask 命令則可以修改這些文件默認(rèn)的訪問權(quán)限。例如用戶創(chuàng)建一個文件的默認(rèn)訪問權(quán)限為 rw-rw-rw-(八進(jìn)制值666)
,創(chuàng)建目錄的默認(rèn)權(quán)限 rwxrwxrwx(八進(jìn)制值777)
,而 umask 值則表明了需要從默認(rèn)權(quán)限中去掉哪些權(quán)限來成為最終的默認(rèn)權(quán)限值。
2.1 umask 命令查看默認(rèn)權(quán)限去除值
使用 umask
命令可以查看一個默認(rèn)的權(quán)限信息,命令如下:
umask
執(zhí)行結(jié)果如下圖:
如上圖所示,當(dāng)前文件或目錄權(quán)限相關(guān)的是默認(rèn)去除值是 0022
,其中第一位 0
表示的是一項特殊安全權(quán)限,暫且不討論。
后面三位 022
則和普通權(quán)限 rwx
有關(guān),其中后三位中的第一位 0
表示創(chuàng)建者/所有者相關(guān)的權(quán)限,表示從用戶權(quán)限去掉 0
對應(yīng)的權(quán)限 ---(不變)
,后三位中的第二位 2
表示用戶組相關(guān)的權(quán)限,表示從用戶組權(quán)限去掉 2
對應(yīng)的權(quán)限-w-(寫權(quán)限)
,后三位中的第三位 2
表示和其他用戶的權(quán)限有關(guān),表示其他用戶的權(quán)限去掉 2
對應(yīng)的權(quán)限 -w-(寫權(quán)限)
。
所以創(chuàng)建 文件
的默認(rèn)八進(jìn)制值 666(rw-rw-rw-)
去掉 022(----w--w-)
對應(yīng)的相關(guān)權(quán)限之后為 644(rw-r--r--)
,創(chuàng)建 目錄
的默認(rèn)八進(jìn)制值 777(rwxrwxrwx)
去掉 022(----w--w-)
對應(yīng)的相關(guān)權(quán)限之后為 755(rwxr-xr-x)
,下面通過示例來驗證一下:
umask
touch testfile
ls -l testfile
mkdir testdir
ls -l
執(zhí)行結(jié)果如下圖:
Tips:
umask
命令展示出來表示從原來的默認(rèn)值去除的權(quán)限值,新建文件默認(rèn)的權(quán)限值是666
,新建目錄的權(quán)限值是777
,umask
命令展示的值是在這個基礎(chǔ)之上去除的。
2.2 umask 命令修改默認(rèn)去除權(quán)限
若想要新建的文件有指定的初始默認(rèn)權(quán)限,可以使用 umask
命令,命令如下:
umask 226
umask
執(zhí)行結(jié)果如下圖:
新建文件默認(rèn)的權(quán)限值是 666
,新建目錄的權(quán)限值是 777
,226
表示在這個基礎(chǔ)上去除
-w--w-rw-
之后的權(quán)限。
3. chmod 命令
3.1 修改文件權(quán)限
新建一個文件 newfile
,然后使用 chmod
命令修改文件權(quán)限,新建和修改文件權(quán)限命令如下:
touch newfile
ls -l newfile
chmod 777 newfile
ls -l newfile
執(zhí)行結(jié)果如下圖:
3.2 修改目錄權(quán)限
使用 chmod
命令修改目錄的權(quán)限,修改目錄權(quán)限命令如下:
ls -l
chmod -R 755 study
ls -l
執(zhí)行結(jié)果如下圖:
3.3 chmod 命令限定權(quán)限
chmod
命令可以修改已經(jīng)存在的文件或目錄的權(quán)限,可以分別修改它們用戶的權(quán)限、用戶組的權(quán)限、其他用戶的權(quán)限,也可以修改上述全部的權(quán)限,下圖表示 chmod
權(quán)限相關(guān)的操作:
下面以新增文件其他用戶寫權(quán)限為例,命令如下:
ls -l testfile
chmod o+w testfile
ls -l testfile
執(zhí)行結(jié)果如下圖:
3.4 chmod 權(quán)限作用對象
u
表示用戶;g
表示用戶組;o
表示其他用戶;a
表示全部。
3.5 權(quán)限操作相關(guān)符號
+
表示在現(xiàn)有權(quán)限基礎(chǔ)上增加權(quán)限;-
表示在現(xiàn)有權(quán)限基礎(chǔ)上移除權(quán)限;=
表示在現(xiàn)有權(quán)限基礎(chǔ)上設(shè)置成等號后的權(quán)限。
3.6 權(quán)限設(shè)置值
r
表示讀權(quán)限;w
表示寫權(quán)限;x
表示執(zhí)行權(quán)限。
4. 小結(jié)
本小節(jié)介紹了文件或目錄權(quán)限相關(guān)的命令,新建的文件權(quán)限默認(rèn)是 rw-rw-rw-
,新建目錄權(quán)限默認(rèn)是 rwxrwxrwx
,使用 umask
命令可以對新建的文件或目錄的權(quán)限去除某些特定的權(quán)限。還介紹了 chmod
命令直接配合八進(jìn)制權(quán)限值修改文件或目錄的權(quán)限,也可以使用限定符在原來權(quán)限基礎(chǔ)上增加、移除、設(shè)定某些權(quán)限。