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这个二进制程序的特殊权限所在。
表示文件权限的字段共有10位,
-rw------- (600) 只有所有者才有读和写的权限
-rw-r--r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx------ (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx--x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
掩码这个事情,我学的时候也没弄懂,是记的死的,然后ls看一下,对不对。
(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
不太会讲,不知道你能理解不。