浅谈Linux文件与文件夹权限

在Linux中,一个文件或文件夹具有三种不同到权限。
其中:
r 代表read读权限
w 代表write写权限
x 代表execute可执行权限
Linux使用二进制编码来表示是否拥有此权限,如rwx为111,rw-为110,---为000。当使用ll命令时,

前面首字母如果是d,则表示此为文件夹,如果为-,则表示为文件。
第2至4位为用户级别权限,第5-7位为组级别权限,第8-10为开放级别权限(即所有的用户),如下图所示:
 

 
 

为了方便性及可读性,Linux使用八进制来代替二进制1和0,如二进制111则表示八进制7,110表示6,100表示4...
因此,上面的rwxrwxr-x用二进制表示为111111101,八进制表示为775。(前面的-表示myprog为文件而不是文件夹)


Linux下一个文件的权限默认用八进制值为666,即二进制110110110,表示rw-rw-rw-(只有读写rw,没有可执行权限x)
Linux下一个文件夹的权限默认用八进制值为777,即二进制111111111,表示rwxrwxrwx(读写可执行权限rwx)
 
一般地,使用umask命令来对文件权限进行控制,可以使用cat /etc/bashrc来查看umask的默认值。

 
 

如果umask的值为002,此时创建的文件拥有到权限为666-002=664,即拥有110110100(rw-rw-r--)权限。如下图,

当创建newfile文件时,系统默认给root用户读和写的权限(rw),给root用户组读和写的权限(rw),给任何人(everyone)只有读的权限(r)。
 
可以使用chmod+八进制值+file来改变文件的权限。如chmod 444 newfile,则把newfile到权限更改为100100100即r--r--r--(用户,组,任何人都只有读权限),如下图:


 

 
总结:
1.Linux文件的权限默认值为666,文件夹的权限默认值为777
2.使用umask命令可以在创建文件或文件夹时得到相应的权限,原理是用权限值666或777减去umask值,如umask=022,则新创建的文件权限值为666-022=644(110100100,rw-r--r--),
umask的值可以在etc/bashrc下查看(其他版本的Linux可能各不相同)。也可以通过umask +数字 去更改权限控制。
如:通过umask 222,然后touch newfile1, 此时newfile1的权限应为444,即(100100100,r--r--r--)只读权限。
 
 

 

猜你喜欢

转载自shao246.iteye.com/blog/2201304