詳解linux下umask的使用
最近開始學(xué)習(xí)linux ,看完馬哥的linux課程關(guān)于umask的這個(gè)部分, 寫這篇博客希望加深下我對(duì)umask的理解 和對(duì)umask不太清楚的博友一些幫助。
1 umask 是什么
當(dāng)我們登錄系統(tǒng)之后創(chuàng)建一個(gè)文件是會(huì)有一個(gè)默認(rèn)權(quán)限的,那么這個(gè)權(quán)限是怎么來(lái)的呢?這就是umask干的事情。umask用于設(shè)置用戶創(chuàng)建文件或者目錄的默認(rèn)權(quán)限,umask設(shè)置的是權(quán)限的“補(bǔ)碼”,而我們常用chmod設(shè)置的是文件權(quán)限碼。一般在/etc/profile,HOME/.bashprofile或者HOME/.profile中設(shè)置umask值。
2 umask是用來(lái)做什么的
默認(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)限的。
[root@bogon test]# id uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 [root@bogon test]# umask 0022 [root@bogon test]# touch a.txt [root@bogon test]# ls -l total 0 -rw-r--r--. 1 root root 0 Jul 3 00:40 a.txt [root@bogon test]# mkdir b [root@bogon test]# ls -l total 0 -rw-r--r--. 1 root root 0 Jul 3 00:40 a.txt drwxr-xr-x. 2 root root 6 Jul 3 00:41 b
從上面可以看到, root 的umask是022(第一個(gè)0 代表特殊權(quán)限位,這里先不考慮), 創(chuàng)建的文件默認(rèn)權(quán)限是644,創(chuàng)建的目錄是755。
3 基本權(quán)限講解
講解umask的使用之前, 需要先講解下文件的基本權(quán)限
linux文件權(quán)限
r | w | x | |
文件 | 可以查看文件內(nèi)容 | 可以修改文件 | 可以把文件啟動(dòng)為一個(gè)運(yùn)行的程序 |
目錄 | 可以ls查看目錄中的文件名 | 可以在目錄中創(chuàng)建或者刪除文件(只有w權(quán)限沒法創(chuàng)建,需要x配合) | 可以使用cd 進(jìn)入這個(gè)目錄ls-l顯示目錄內(nèi)文件的元數(shù)據(jù)的信息 |
4 umask計(jì)算權(quán)限
對(duì)于文件和目錄來(lái)說(shuō), 最大的權(quán)限其實(shí)都是777,但是執(zhí)行權(quán)限對(duì)于文件來(lái)說(shuō),很可怕,而對(duì)目錄來(lái)說(shuō)執(zhí)行權(quán)限是個(gè)基本權(quán)限。所以默認(rèn)目錄的最大權(quán)限是777,而文件的默認(rèn)最大權(quán)限就是666。
對(duì)于root用戶的umask=022這個(gè)來(lái)說(shuō),777權(quán)限二進(jìn)制碼就是(111)(111)(111),022權(quán)限二進(jìn)制碼為(000)(010)(010)。
- 所有權(quán)限二進(jìn)制的1:代表有這個(gè)權(quán)限
- umask二進(jìn)制1:代表要去掉這個(gè)權(quán)限,不管你原來(lái)有沒有權(quán)限,你最終一定沒有這個(gè)權(quán)限。
- umask二進(jìn)制的0:代表我不關(guān)心對(duì)應(yīng)位的權(quán)限,你原來(lái)有權(quán)限就有權(quán)限,沒有就沒有, 我不影響你。
umask為002的文件默認(rèn)權(quán)限計(jì)算方法
所有者 r | 所有者 w | 所有者 x | 所在組 r | 所在組 w | 所在組 x | 其他 r | 其他 w | 其他 x | |
所有權(quán)限777 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
umask掩碼002 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
計(jì)算后的值 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
umask為002的目錄默認(rèn)權(quán)限計(jì)算方法
所有者 r | 所有者 w | 所有者 x | 所在組 r | 所在組 w | 所在組 x | 其他 r | 其他 w | 其他 x | |
所有權(quán)限666 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
umask掩碼002 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
計(jì)算后的值 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
umask為023的目錄默認(rèn)權(quán)限計(jì)算方法
所有者 r | 所有者 w | 所有者 x | 所在組 r | 所在組 w | 所在組 x | 其他 r | 其他 w | 其他 x | |
所有權(quán)限777 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
umask掩碼023 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
計(jì)算后的值 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
umask為023的文件默認(rèn)權(quán)限計(jì)算方法
所有者 r | 所有者 w | 所有者 x | 所在組 r | 所在組 w | 所在組 x | 其他 r | 其他 w | 其他 x | |
所有權(quán)限666 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
umask掩碼023 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
計(jì)算后的值 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
上面就是一個(gè)umask的正常計(jì)算過(guò)程,但是這樣實(shí)在是太麻煩了。我們使用如下的簡(jiǎn)單的方法快速計(jì)算。
- 對(duì)于目錄,直接使用777-umask即可,就得到了最終結(jié)果。
- 對(duì)于文件,先使用666-umask。
- 如果對(duì)應(yīng)位上為偶數(shù):最終權(quán)限就是這個(gè)偶數(shù)值。
- 如果上面的對(duì)應(yīng)為上有奇數(shù),就對(duì)應(yīng)位+1。
上面的這個(gè)方法計(jì)算是非常方便的, 為何得到奇數(shù)要+1呢。
文件的最大權(quán)限是666,都是偶數(shù),你得到奇數(shù),說(shuō)明你的umask有奇數(shù)啊,讀為4,寫為2,都是偶數(shù),說(shuō)明你有執(zhí)行權(quán)限的。
就按照上面的umask=023為例,在計(jì)算其他用戶權(quán)限的時(shí)候6-3=3 ,6是讀寫,3是寫和執(zhí)行,其實(shí)應(yīng)該是讀寫權(quán)限減去讀權(quán)限的得到寫權(quán)限的,相當(dāng)于我們多減去了一個(gè)執(zhí)行權(quán)限。所以結(jié)果加1。
5 umask的修改
umask 的修改分2中, 臨時(shí)修改的和永久修改的
臨時(shí)修改:
[root@bogon test]# umask 023 [root@bogon test]# umask 0023 [root@bogon test]#
永久修改:
可以編輯以下文件 添加umask=022。
交互式登陸的配置生效:
/etc/profile < /etc/profile.d/*.sh < ~/.bash_profile < ~/.bashrc </etc/bashrc 【/etc/bashrc的配置最有效 可以覆蓋前面的配置】
非交互登陸的配置生效:
~/.bashrc < /etc/bashrc < /etc/profile.d/*.sh
6 常用umask
[root@bogon test]# umask 002 [root@bogon test]# umask 0002 [root@bogon test]# umask 022 [root@bogon test]# umask 0022
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Apache中如何設(shè)置默認(rèn)首頁(yè)具體該怎么操作
這篇文章主要介紹了Apache中設(shè)置默認(rèn)首頁(yè)的方法,需要的朋友可以參考下2014-02-02linux防火墻配置(基于yum倉(cāng)的配置)詳細(xì)步驟
大家好,本篇文章主要講的是linux防火墻配置(基于yum倉(cāng)的配置)詳細(xì)步驟,感興趣的同學(xué)快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-11-11Linux中查看物理CPU個(gè)數(shù)、核數(shù)、邏輯CPU個(gè)數(shù)的方法
下面小編就為大家?guī)?lái)一篇Linux中查看物理CPU個(gè)數(shù)、核數(shù)、邏輯CPU個(gè)數(shù)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01Linux 查看cpu 信息的命令及簡(jiǎn)單實(shí)例
這篇文章主要介紹了Linux 查看cpu 信息的命令及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-10-10詳解Linux進(jìn)程間通信——使用共享內(nèi)存
共享內(nèi)存是在兩個(gè)正在運(yùn)行的進(jìn)程之間共享和傳遞數(shù)據(jù)的一種非常有效的方式。這篇文章主要介紹了詳解Linux進(jìn)程間通信——使用共享內(nèi)存,有興趣的可以了解一下。2017-01-01詳解怎樣在Linux中配置靜態(tài)網(wǎng)絡(luò)連接
這篇文章主要介紹了詳解怎樣在Linux中配置靜態(tài)網(wǎng)絡(luò)連接,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05Ubuntu下Sublime Text無(wú)法輸入中文最簡(jiǎn)單的解決方案
今天小編就為大家分享一篇關(guān)于Ubuntu下Sublime Text無(wú)法輸入中文最簡(jiǎn)單的解決方案,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10