对于linux的基本常识应该是最清楚不够的了,当我们以某一用户创建文件或者文件夹的时候,通过ls -l,我们得到它们的权限.这些权限是怎么算出来的呢?众所周知,文件/文件夹有访问权限之说:所有者权限(User),所有组权限(Group),其他人权限(Other).那么当我们创建一个文件(cd . > test.txt)或者文件夹(mkdir test)时,他们会有怎样的权限呢?
事实上,新建文件夹或文件的权限是由所谓基本码减去称之为umask的屏蔽位得到的.
按照FreeBSD的规定:文件夹的基本码是rwxrwxrwx(777),文件的基本码是rw-rw-rw-(666)
而屏蔽位则是在/etc/bashrc(所有人)或者~/.bashrc中设定的.如果上述文件中皆无设定则默认就是022 .我们可以在shell下面输入umask命令查看/修改当前的系统屏蔽位.
$ umask 033
$ umask
$ 033
$ umask 022
因此新建文件夹是777-022=755(rwxr-xr-x),新建文件是666-022=644(rw-r--r--).
$ mkdir test
$ cd . > test.txt
$ ll
$ drwxr-xr-x ... test/
$ -rw-r--r-- ... test.txtumask用法
当最初登录到系统中时, u m a s k命令确定了你创建文件的缺省模式.这一命令实际上和
c h m o d命令正好相反.你的系统管理员要为你设置一个合理的u m a s k值,以确保你创建的
文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限.
在已经登录之后,可以按照个人的偏好使用u m a s k命令来改变文件创建的缺省权限.相应
的改变直到退出该s h e l l或使用另外的u m a s k命令之前一直有效.
一般来说,u m a s k命令是在/ e t c / bashrc文件中设置的,每个用户在登录时都会引用这个文件,如果希望改变所有用户的u m a s k,可以在该文件中加入相应的条目.如果希望永久性地设置自己的u m a s k值,那么就把它放在自己$ H O M E目录下的. p r o f i l e或. b a s h _ p r o f i l e文件中.
如何计算umask值
u m a s k命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、
其他用户)存在一个相应的u m a s k值中的数字.对于文件来说,这一数字的最大值分别是6.
系统不允许你在创建一个文本文件时就赋予它执行权限,在创建后用c h m o d命令增加这一
权限.目录则允许设置执行权限,这样针对目录来说, u m a s k中各个数字最大可以到7.
其使用方法有点类似于网络上的子网掩码的作用,不同的是网络上的子网掩码是与
ip地址进行与运算,而umask后面所带的数和最大的权限值进行的是异或运算.
例如,u m a s k值002 所对应的文件和目录创建缺省权限分别为6 6 4和7 7 5
说明:1 文件和目录是不一样的.
2 异或运算的规律:均为0时,才为0;均为1时,也才会为0;如果一个为0,一个为1,则为1.eg:1100异或0101=1001(如果一个为0,一个为1,则为1;其它任何情况下都是0) 因此前面的提到的简单的相减就显得较为牵强了,(比如是umask=033)真实的结果要通过异或运算得到,附注:一般的root用户的umask为022,普通用户为002,可以从配置文件/etc/bashrc里面看得出来
事实上,新建文件夹或文件的权限是由所谓基本码减去称之为umask的屏蔽位得到的.
按照FreeBSD的规定:文件夹的基本码是rwxrwxrwx(777),文件的基本码是rw-rw-rw-(666)
而屏蔽位则是在/etc/bashrc(所有人)或者~/.bashrc中设定的.如果上述文件中皆无设定则默认就是022 .我们可以在shell下面输入umask命令查看/修改当前的系统屏蔽位.
$ umask 033
$ umask
$ 033
$ umask 022
因此新建文件夹是777-022=755(rwxr-xr-x),新建文件是666-022=644(rw-r--r--).
$ mkdir test
$ cd . > test.txt
$ ll
$ drwxr-xr-x ... test/
$ -rw-r--r-- ... test.txtumask用法
当最初登录到系统中时, u m a s k命令确定了你创建文件的缺省模式.这一命令实际上和
c h m o d命令正好相反.你的系统管理员要为你设置一个合理的u m a s k值,以确保你创建的
文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限.
在已经登录之后,可以按照个人的偏好使用u m a s k命令来改变文件创建的缺省权限.相应
的改变直到退出该s h e l l或使用另外的u m a s k命令之前一直有效.
一般来说,u m a s k命令是在/ e t c / bashrc文件中设置的,每个用户在登录时都会引用这个文件,如果希望改变所有用户的u m a s k,可以在该文件中加入相应的条目.如果希望永久性地设置自己的u m a s k值,那么就把它放在自己$ H O M E目录下的. p r o f i l e或. b a s h _ p r o f i l e文件中.
如何计算umask值
u m a s k命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、
其他用户)存在一个相应的u m a s k值中的数字.对于文件来说,这一数字的最大值分别是6.
系统不允许你在创建一个文本文件时就赋予它执行权限,在创建后用c h m o d命令增加这一
权限.目录则允许设置执行权限,这样针对目录来说, u m a s k中各个数字最大可以到7.
其使用方法有点类似于网络上的子网掩码的作用,不同的是网络上的子网掩码是与
ip地址进行与运算,而umask后面所带的数和最大的权限值进行的是异或运算.
例如,u m a s k值002 所对应的文件和目录创建缺省权限分别为6 6 4和7 7 5
说明:1 文件和目录是不一样的.
2 异或运算的规律:均为0时,才为0;均为1时,也才会为0;如果一个为0,一个为1,则为1.eg:1100异或0101=1001(如果一个为0,一个为1,则为1;其它任何情况下都是0) 因此前面的提到的简单的相减就显得较为牵强了,(比如是umask=033)真实的结果要通过异或运算得到,附注:一般的root用户的umask为022,普通用户为002,可以从配置文件/etc/bashrc里面看得出来