以下是小编为大家收集的Linux新建文件和目录的默认权限Umask(共含5篇),希望能够帮助到大家。同时,但愿您也能像本文投稿人“呜哇啦啦豆豆鸟”一样,积极向本站投稿分享好文章。
创建新文件的权限UMASK
我们创建文件的默认权限是怎么来的?如何改变这个默认权限呢? 答案是umask?
当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情,umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。
如何计算umask值?
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。
对于文件来说,这一数字的最大值分别是6.
系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。
目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7.
该命令的一般形式为:umask nnn (其中nnn为umask置000 - 777)
我们只要记住u m a s k是从权限中“拿走”相应的位即可。
如:umask值为022,则默认目录权限为755,默认文件权限为644.
下表是umask值与权限的对照表:
umask 文件 目录
--------------------
0 6 7
1 6 6
2 4 5
3 4 4
4 2 3
5 2 2
6 0 1
7 0 0
--------------------
umask一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置,由于profile的读取有一定的顺序:
/etc/profile->$HOME/.profile->$HOME/.bash_profile,所以在。profile里面设置的umask会被后面的profile覆盖了,推荐设置在$HOME/.bash_profile
umask 命令介绍
功能说明:指定在建立文件时预设的权限掩码。
语 法:umask [-S][权限掩码]
补充说明:umask可用来设定[权限掩码].[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
参 数:
-S 以文字的方式来表示权限掩码。
文件:用八进制基数666,即无x位(可执行位)rw- rw- rw-.执行位需由用户自行加入
例一:设要生成的文件以rw- r-- r--这样的权限字出现,即真实权限用八进制表示为644,则被666基数减得022,022即掩码。使用umask 022.
注:033效果与022一样,假设使用033掩码进行设置,则真实权限应为633即rw- r-x r-x ,但前提规定文件不生成x位,所以文件的权限最终将以rw-r--r--出现。
目录:用八进制基数777
例二:设要生成的目录权限以rwxr-xr-x这样的权限字出现,即真实权限用八进制表示为755,则被基数为777的权限字相减后,得掩码022.则使用umask 022进行设置。
总结:
掌握二个要点,一、文件基数为666,目录为777,即文件无设x位,目录可设x位。二、chmod是设哪个位,哪么哪个位就有权限,而umask是设哪个位,则哪个位上就没权限。
LINUX UMASK详解
一 权限掩码umask
umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+写(2)+执行(1),同组的和其它用户有读写权限)
二 umask的作用
默认情况下的umask值是022(可以用umask命令查看)
此时你建立的文件默认权限是644(6-0,6-2,6-2),
建立的目录的默认权限是755(7-0,7-2,7-2),
可以用ls -l验证一下哦 现在应该知道umask的用途了吧,它是为了控制默认权限,不要使默认的文件和目录具有全权而设的
三 修改umask值
知道了umask的作用后,你可以修改umask的值了,例如:umask 024则以后建立的文件和目录的默认权限就为642,753了
四 将umask值保存到环境文件
若要长期修改umask的值,可以把它写进/etc/profile或~/.profile或~/.bash_profile中,大家应该知道这几个文件是干什么用的吧。
您知道当你建立一个新的档案或目录时,他的预设属性会是什么吗?呵呵!那就与 umask 有关了!那么 umask 是在搞什么呢?
基本上, umask 就是指定『目前使用者在建立档案或目录时候的属性默认值』,那么如何得知或设定 umask 呢?他的指定条件以底下的方式来指定:
语法:
[root @test root]# umask
0022
[root@vbird test]# umask 002 <==后面接 3 个数字!
[root@vbird test]# umask
0002
说明:查看 umask 数值为直接输入 umask 即可,而设定呢?没错!就是 umask 之后接三个数字!那么如何来指定呢?主要还是跟 Linux 的档案属性(那九个属性, r, w, x )有关的,而且是以分数的那一个关系为例的,而有底下的规则为辅:
若使用者建立为『档案』则预设『没有可执行 ( x ) 项目』,亦即只有 rw 这两个项目,也就是最大为 666 分
–rw-rw-rw-
若使用者建立为『目录』,则由于 x 与是否可以进入此目录有关,因此预设为所有权限均开放,亦即为 777 分
drwxrwxrwx
那么 umask 指定的是『该默认值需要减掉的权限!』因为 r、w、x 分别是 4、2、1 分,所以!也就是说,当要拿掉能写的权限,就是输入 2 分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6 分,而要拿掉执行与写入的权限,也就是 3 分,这样了解吗?请问您, 5 分是什么?呵呵!就是读与执行的权限啦!
如果以上面的例子来说明的话,因为 umask 为 002 ,所以 user, group 并没有被拿掉属性,不过 others 的属性被拿掉了 2 ( 也就是 w 这个属性 ),那么由于当使用者:
建立档案时:(-rw-rw-rw-) – (--–w-) ==>-rw-rw-r–
建立目录时:(drwxrwxrwx) – (--–w-) ==>drwxrwxr-x
不相信吗?你只要使用 touch test 然后看看这个 test 的档案属性,就可以知道了!那么如何看你这个使用者目前的 umask呢?直接下达 umask 即可!实作看看先:
[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/
发现了什么?呵呵! Test1 的属性为 666-002 = 664 !正确吗?是的!正确!而 test2 这个目录呢?就是 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/
嘿!属性又跟刚刚的不一样!仔细推敲一下为什么呦!test3 666-003 =663,这是怎么一回事?! 663 应该是 -rw-rw–wx 才对啊!怎么会是上面的属性!呵呵!这里就要特别的给他强调了!『尽量不要以数字相加减啦!』容易造成类似上面的问题!你应该要这样想(-rw-rw- rw-) – (--–wx)=-rw-rw-r–这样就对啦!了解了吗?不要用十进制的数字喔!够能力的话,用二进制来算,不晓得的话,用 rwx 来算喔!
由上面的例子您应该很轻易的就可以发现 umask 的用途!而这个 umask 可以在 /etc/bashrc 里面进行修改喔!预设的情况之下, root 的 umask 为 022 而一般使用者则为 002 ,因为可写的权限蛮严重的,因此预设都会拿掉这个权限!此外,因为 root 比较重要!所以为了安全的需求,其同群组的写入属性就被拿掉了!这东西对于安全性也有一定程度的贡献呦!
例如,对于u m a s k值0 0 2,相应的文件和目录缺省创建权限是什么呢?
第一步,我们首先写下具有全部权限的模式,即7 7 7 (所有用户都具有读、写和执行权限),
第二步,在下面一行按照u m a s k值写下相应的位,在本例中是0 0 2.
第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。
稍加练习就能够记住这种方法。
第四步,对于文件来说,在创建时不能具有文件权限,只要拿掉相应的执行权限比特即可。
这就是上面的例子,其中u m a s k值为0 0 2:
1) 文件的最大权限rwx rwx rwx (777)
2) umask值为0 0 2 – - – - – - -w-
3) 目录权限rwx rwx r-x (775) 这就是目录创建缺省权限
4) 文件权限rw- rw- r– (664) 这就是文件创建缺省权限
下面是另外一个例子,假设这次u m a s k值为0 2 2:
1) 文件的最大权限rwx rwx rwx (777)
2 ) u m a s k值为0 2 2 – - – -w- -w-
3) 目录权限rwx r-x r-x (755) 这就是目录创建缺省权限
4) 文件权限rw- r– r– (644) 这就是文件创建缺省权限
r, w, x三种权限通过数字来代表: r: 4 w: 2 x: 1 每组的权限为上面三个相加。比如权限为; [-rwxrwx---] owner: rwx = 4 + 2 + 1 = 7 group: rwx = 4 + 2 +1 = 7 others: --- = 0 + 0 + 0 = 0 对应的权限为 770
chmod 770 test.log#递归修改子目录chmod -R 770 test
例如: [-rw-r--r--] 对应为 644,
chmod 754 file 权限为 [-rwxr-xr--]
user, group, others分别用u, g, o代表, a表示所有。 + 加入 - 减去 = 设置
chmod u=rwx,go=rx test.log#权限[-rwxr-xr-x]
增加执行权限
chmod a+w test.log#权限[-rwxrwxrwx]
删除执行权限
chmod a-x test.log#权限[-rw-rw-rw-]
地址:blog.csdn.net/yonggang7/article/details/29379595
在linux中设置目录与文件权限我们都需要使用命令模式来操作,下面我来介绍利用chmod命令来改变文件与目录权限实例,有需要的朋友可参考,
chmod 命令可以改变所有子目录的权限:
改变一个文件的权限:
代码如下复制代码chmod mode file|dir
改变所有子目录的权限:
代码如下复制代码chmod mode dir -R//注意后面加了个-R参数
如:将file目录下所有文件权限改为777:
代码如下复制代码chmod 777 file -R
数字设定法
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限,2表示可写权限,4表示可读权限,然后将其相加,
所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
WordPress 默认的上传目录位于 wp-content/uploads ,并且根据设置还可以按照年月归档,可是,如果我要上传一个头像,或者幻灯片的话,也跟附件混在一起总是不太好吧?幸好 WordPress 知道会有用户有这种需求,我们可以通过 filter 来临时改变文件上传目录。filter 函数如下:
function slider_upload_dir($uploads) { $siteurl = get_option( 'siteurl' ); $uploads['path'] = WP_CONTENT_DIR . '/slider'; $uploads['url'] = $siteurl . '/wp-content/slider'; $uploads['subdir'] = ''; $uploads['basedir'] = $uploads['path']; $uploads['baseurl'] = $uploads['url']; $uploads['error'] = false; return $uploads; }
在 WordPress 处理上传文件之前,加载这个 filter 函数:
add_filter('upload_dir', 'slider_upload_dir');
这样上传的文件将会上传到 wp-content/slider 目录!这个方法特别适合于有上传头像或者幻灯片需求的项目,可以避免这些文件和文章附件混淆,