在Linux中设置UMASK值
umask值用于設(shè)置用戶在創(chuàng)建文件時(shí)的默認(rèn)權(quán)限,當(dāng)我們?cè)谙到y(tǒng)中創(chuàng)建目錄或文件時(shí),目錄或文件所具有的默認(rèn)權(quán)限就是由umask值決定的。
對(duì)于root用戶,系統(tǒng)默認(rèn)的umask值是0022;對(duì)于普通用戶,系統(tǒng)默認(rèn)的umask值是0002。執(zhí)行umask命令可以查看當(dāng)前用戶的umask值。
[root@localhost ~]#?umask
0022
umask值一共有4組數(shù)字,其中第1組數(shù)字用于定義特殊權(quán)限,我們一般不予考慮,與一般權(quán)限有關(guān)的是后3組數(shù)字。
默認(rèn)情況下,對(duì)于目錄,用戶所能擁有的最大權(quán)限是777;對(duì)于文件,用戶所能擁有的最大權(quán)限是目錄的最大權(quán)限去掉執(zhí)行權(quán)限,即666。因?yàn)?/span>x執(zhí)行權(quán)限對(duì)于目錄是必須的,沒有執(zhí)行權(quán)限就無法進(jìn)入目錄,而對(duì)于文件則不必默認(rèn)賦予x執(zhí)行權(quán)限。
對(duì)于root用戶,他的umask值是022。當(dāng)root用戶創(chuàng)建目錄時(shí),默認(rèn)的權(quán)限就是用最大權(quán)限777去掉相應(yīng)位置的umask值權(quán)限,即對(duì)于所有者不必去掉任何權(quán)限,對(duì)于所屬組要去掉w權(quán)限,對(duì)于其他用戶也要去掉w權(quán)限,所以目錄的默認(rèn)權(quán)限就是755;當(dāng)root用戶創(chuàng)建文件時(shí),默認(rèn)的權(quán)限則是用最大權(quán)限666去掉相應(yīng)位置的umask值,即文件的默認(rèn)權(quán)限是644。
可以通過下面的測(cè)試操作來了解umask值。
[root@localhost ~]#?mkdirdirectory1?#創(chuàng)建測(cè)試目錄
[root@localhost ~]#?ll -ddirectory1?#目錄的默認(rèn)權(quán)限是755
drwxr-xr-x. 2 root root 4096 12月 2 13:08 directory1
[root@localhost ~]#?touchfile1?#創(chuàng)建測(cè)試文件
[root@localhost ~]#?ll file1?#文件的默認(rèn)權(quán)限是644
-rw-r--r--. 1 root root 0 12月 2 13:09 file1
通過umask命令可以修改umask值,比如將umask值設(shè)為0077。
[root@localhost ~]#?umask 0077
[root@localhost ~]#?umask
0077
此時(shí)創(chuàng)建的目錄默認(rèn)權(quán)限為700,文件默認(rèn)權(quán)限是600:
[root@localhost ~]#?mkdirdirectory2
[root@localhost ~]#?ll -ddirectory2
drwx------. 2 root root 4096 12月 2 13:14 directory2
[root@localhost ~]#?touch file2
[root@localhost ~]#?ll file2
-rw-------. 1 root root 0 12月 2 13:14 file2
考慮一下,如果將umask值設(shè)為0003,那么此時(shí)創(chuàng)建的目錄或文件的默認(rèn)權(quán)限是多少?
正確的結(jié)果應(yīng)該是:目錄的默認(rèn)權(quán)限是774,文件的默認(rèn)權(quán)限是664。在計(jì)算默認(rèn)權(quán)限時(shí),不應(yīng)用最大權(quán)限直接減去umask值,而是將umask值所對(duì)應(yīng)的相應(yīng)位置的權(quán)限去掉,這樣才能得到正確的結(jié)果。
umask命令只能臨時(shí)修改umask值,系統(tǒng)重啟之后umask將還原成默認(rèn)值。如果要永久修改umask值,需要修改/etc/profile文件或是修改/etc/bashrc文件,例如要將默認(rèn)umask值設(shè)置為027,那么可以在文件中增加一行“umask 027”。
/etc/profile和/etc/bashrc都可以用于設(shè)置用戶登錄系統(tǒng)時(shí)自動(dòng)執(zhí)行某些操作,他們的區(qū)別是/etc/profile只在用戶第一次登錄時(shí)被執(zhí)行,而/etc/bashrc則在用戶每次登錄加載Bash Shell時(shí)都會(huì)被執(zhí)行。
因而,如果是修改/etc/profile文件,將只對(duì)新創(chuàng)建的用戶生效;而如果是修改/etc/bashrc文件,則對(duì)所有用戶都生效。
總結(jié)
以上是生活随笔為你收集整理的在Linux中设置UMASK值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArchLinux安装图文教程(2017
- 下一篇: container_of(ptr, ty