linux中的umask命令
轉(zhuǎn)載:http://blog.51cto.com/1123697506/882064
一 權(quán)限掩碼umask
umask是chmod配套的,總共為4位(gid/uid,屬主,組權(quán),其它用戶的權(quán)限),不過通常用到的是后3個(gè),例如你用chmod 755 file(此時(shí)這文件的權(quán)限是屬主讀(4)+寫(2)+執(zhí)行(1),同組的和其它用戶有讀寫權(quán)限)
二 umask的作用
默認(rèn)情況下的umask值是022(可以用umask命令查看),此時(shí)你建立的文件默認(rèn)權(quán)限是644(6-0,6-2,6-2),建立的目錄的默認(rèn)權(quán)限是755(7-0,7-2,7-2),可以用ls -l驗(yàn)證一下哦 現(xiàn)在應(yīng)該知道umask的用途了吧,它是為了控制默認(rèn)權(quán)限,不要使默認(rèn)的文件和目錄具有全權(quán)而設(shè)的
三 修改umask值
知道了umask的作用后,你可以修改umask的值了,例如:umask 024則以后建立的文件和目錄的默認(rèn)權(quán)限就為642,753了
四 將umask值保存到環(huán)境文件
若要長(zhǎng)期修改umask的值,可以把它寫進(jìn)/etc/profile或~/.profile或~/.bash_profile中,大家應(yīng)該知道這幾個(gè)文件是干什么用的吧。
您知道當(dāng)你建立一個(gè)新的檔案或目錄時(shí),他的預(yù)設(shè)屬性會(huì)是什么嗎?呵呵!那就與 umask 有關(guān)了!那么 umask 是在搞什么呢?基本上, umask 就是指定『目前使用者在建立檔案或目錄時(shí)候的屬性默認(rèn)值』,那么如何得知或設(shè)定 umask 呢?他的指定條件以底下的方式來指定:語法:
[root @test root]# umask
0022
[root@vbird test]# umask 002 <==后面接 3 個(gè)數(shù)字!
[root@vbird test]# umask
0002
說明:查看 umask 數(shù)值為直接輸入 umask 即可,而設(shè)定呢?沒錯(cuò)!就是 umask 之后接三個(gè)數(shù)字!那么如何來指定呢?主要還是跟 Linux 的檔案屬性(那九個(gè)屬性, r, w, x )有關(guān)的,而且是以分?jǐn)?shù)的那一個(gè)關(guān)系為例的,而有底下的規(guī)則為輔:
若使用者建立為『檔案』則預(yù)設(shè)『沒有可執(zhí)行 ( x ) 項(xiàng)目』,亦即只有 rw 這兩個(gè)項(xiàng)目,也就是最大為 666 分
–rw-rw-rw-
若使用者建立為『目錄』,則由于 x 與是否可以進(jìn)入此目錄有關(guān),因此預(yù)設(shè)為所有權(quán)限均開放,亦即為 777 分
drwxrwxrwx
那么 umask 指定的是『該默認(rèn)值需要減掉的權(quán)限!』因?yàn)?r、w、x 分別是 4、2、1 分,所以啰!也就是說,當(dāng)要拿掉能寫的權(quán)限,就是輸入 2 分,而如果要拿掉能讀的權(quán)限,也就是 4 分,那么要拿掉讀與寫的權(quán)限,也就是 6 分,而要拿掉執(zhí)行與寫入的權(quán)限,也就是 3 分,這樣了解嗎?請(qǐng)問您, 5 分是什么?呵呵!就是讀與執(zhí)行的權(quán)限啦!如果以上面的例子來說明的話,因?yàn)?umask 為 002 ,所以 user, group 并沒有被拿掉屬性,不過 others 的屬性被拿掉了 2 ( 也就是 w 這個(gè)屬性 ),那么由于當(dāng)使用者:
建立檔案時(shí):(-rw-rw-rw-) – (——–w-) ==> -rw-rw-r–
建立目錄時(shí):(drwxrwxrwx) – (——–w-) ==> drwxrwxr-x
不相信嗎?你只要使用 touch test 然后看看這個(gè) test 的檔案屬性,就可以知道了!那么如何看你這個(gè)使用者目前的 umask呢?直接下達(dá) umask 即可!實(shí)作看看先:
[root@vbird test]# umask
0002
[root@vbird test]# touch test1
[root@vbird test]# mkdir test2
[root@vbird test]# ls -l
-rw-rw-r– 1 root root 0 Oct 22 00:00 test1
drwxrwxr-x 2 root root 4096 Oct 22 00:00 test2/
發(fā)現(xiàn)了什么?呵呵! Test1 的屬性為 666-002 = 664 !正確嗎?是的!正確!而 test2 這個(gè)目錄呢?就是 777-002 = 775 !也正確!
[root@vbird test]# umask 003
[root@vbird test]# touch test3
[root@vbird test]# mkdir test4
[root@vbird test]# ll
-rw-rw-r– 1 root root 0 Oct 22 00:03 test3
drwxrwxr– 2 root root 4096 Oct 22 00:03 test4/
嘿!屬性又跟剛剛的不一樣啰!仔細(xì)推敲一下為什么呦!test3 666-003 =663,這是怎么一回事?! 663 應(yīng)該是 -rw-rw–wx 才對(duì)啊!怎么會(huì)是上面的屬性!呵呵!這里就要特別的給他強(qiáng)調(diào)了!『盡量不要以數(shù)字相加減啦!』容易造成類似上面的問題!你應(yīng)該要這樣想(-rw-rw- rw-) – (——–wx)=-rw-rw-r–這樣就對(duì)啦!了解了嗎?不要用十進(jìn)制的數(shù)字喔!夠能力的話,用二進(jìn)制來算,不曉得的話,用 rwx 來算喔!
由上面的例子您應(yīng)該很輕易的就可以發(fā)現(xiàn) umask 的用途!而這個(gè) umask 可以在 /etc/bashrc 里面進(jìn)行修改喔!預(yù)設(shè)的情況之下, root 的 umask 為 022 而一般使用者則為 002 ,因?yàn)榭蓪懙臋?quán)限蠻嚴(yán)重的,因此預(yù)設(shè)都會(huì)拿掉這個(gè)權(quán)限!此外,因?yàn)?root 比較重要!所以為了安全的需求,其同群組的寫入屬性就被拿掉了!這東西對(duì)于安全性也有一定程度的貢獻(xiàn)呦!
-------------------------------------------------------------------------------------------------------------------------------------------
注意,如果是以"umask -S 權(quán)限符號(hào)"的形式來設(shè)置權(quán)限掩碼
最終創(chuàng)建的權(quán)限就是權(quán)限符號(hào)參數(shù)所代表的含義
例如,
?
輸入"umask u=,g=w,o=rwx"后,掩碼顯示為750.
在創(chuàng)建文件時(shí),根據(jù)掩碼來設(shè)置真實(shí)的權(quán)限, 公式為a=rwx - umask.
即rw-/rw-/rw-(666)? ?-? ?rwx/r-x/---(750)? ?=? ?---/-w-/rw-(最終權(quán)限)
(目錄同理)
參考文章:https://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
-------------------------------------------------------------------------------------------------------------------------------------------
使用mkdir命令遞歸創(chuàng)建目錄時(shí)的權(quán)限分配問題:
由上圖可以清楚地看到, 遞歸創(chuàng)建時(shí)指定的權(quán)限只對(duì)最底層目錄生效,而上級(jí)目錄都是默認(rèn)權(quán)限.
而且-pvm書寫時(shí)m寫在最后面, 這樣才不會(huì)發(fā)生參數(shù)錯(cuò)誤.
總結(jié)
以上是生活随笔為你收集整理的linux中的umask命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win API函数SetWindowOr
- 下一篇: 华为LTE 模块AT 命令拨号上网流程