linux新建文件非可执行文件默认权限怎么算?

教科书上举了这样的例子:
例如,若掩码为022,则新文件的权限就是(777-022)&666=644;若掩码为003,则新文件的权限就是(777-003)&666=664。说上的解释是:这里的&是“按位与”运算。我笨,完全看不懂啊,哭求解释~

在Linux系统中,目录最大的权限是777,文件最大的权限是666,因为基于安全原因,新建的文件不允许有执行权限,所以从文件的权限位来看,文件比目录少了执行(x)权限。

下面来设置不同的umask值并创建文件:

可以发现用666减去222就得到了444。

从结果中可以发现新建的文件权限并不是666-123=543,而是644,而目录的权限却是正常减出来的值777-123=654,这是为啥呢?我们把文件的最大值666和umask值123转换成二进制对位展开来看下:

从结果来看就验证了前面说的“umask是将文件的对应权限位遮掩住”,1表示遮掩,0则反之。

为了方便记忆可以用下面的这种计算方法:

目录:默认权限是777减去umask值的结果

文件:默认权限是666减去umask值,权限位对应的值如果为奇数则加1,例如:666-123=543,其结果是644。

扩展资料

作用于可执行的二进制程序,用户执行此程序时,将继承此程序所有者的权限。一般情况下,文件能不能访问取决于用户的身份,而不是取决于文件本身。但是,有了suid权限的文件就不是这么一回事了,最明显的就是/etc/shadow这个文件。

都知道这个文件是用来保存用户密码的,默认情况下,普通用户对此文件没有任何权限,但是当用户执行passwd这个二进制程序时却能更改口令,同时也会将加密后的密码保存到文件中,这正是passwd这个二进制程序的特殊权限所在。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-10-01
Linux系统的ext3文件系统中的权限可以用字母表示,r 表示文件可读(read),w 表示文件可以写(write),x 表示文件可以被执行(如果它是程序的话)。其中:rwx也可以用数字来代替:r为4,w为2,x为1,-为0。
表示文件权限的字段共有10位,
  -rw------- (600) 只有所有者才有读和写的权限
  -rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
  -rwx------ (700) 只有所有者才有读,写,执行的权限
  -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
  -rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
  -rw-rw-rw- (666) 每个人都有读写的权限
  -rwxrwxrwx (777) 每个人都有读写和执行的权限
掩码这个事情,我学的时候也没弄懂,是记的死的,然后ls看一下,对不对。
第2个回答  2011-10-01
首先这里的&是按位操作符,可以理解为 和 的意思
(777-003) & 666=664
解释为: 文件 和 目录
文件的权限有 读 写 执行 777
目录的权限有 读 写 666
明白了吗?追问

请问这是怎么得到664这个数啊?

追答

7-3=4
目录只有4+2 的权限没有 1 这个权限
所以umask 掩码003 那就是 去掉了2+1 这个权限
目录不考虑1 这个权限 所以目录只剩下4这个权限
目录里的文件是4+2+1 4+2+1 4
你目录的权限必然就是 4+2 4+2 4
不太会讲,不知道你能理解不。

本回答被提问者采纳
相似回答