深入了解 GNU/Linux下的权限Umask 

经常玩GNU/Linux的人想必都对权限有一定的认识。因为有些文件/目录是不能或者是不应该被其他用户访问到的,有些文件是不能允许被执行的。这些都是出于对安全的考虑。

在GNU/Linux(其实BSD系列及其他类Unix系统也是)下,总共分为用户(User)、组(Group)、其他(Other)三类。

而它们都同时具有对文件的读取(Read)、写入(Write)以及执行(Execute)三种权限。

比如让一个文件变成只有该文件的所有者有读写权限,组用户有读的权限,其他的无任何权限时候,可以这么写:

chmod u+rw,g+r,o-rwx filename


不过,我个人觉得这个太长了。其实我们有更好的授权的办法,就是我们经常会用到的类似"777"、"775"、"664"之类的umask命令.

现在我就要好好谈谈这个Umask,很多人会知道"777"是最方便的,但是这"777"是怎么来的,包括我在内的一些人不是很清楚。

就像我前一段时间在和我的同事争"000"和"777"哪个权限更大。我当时就不太知道"0"在umask下的具体意思,或者说含义很模糊。所以我有必要搞清楚这一切。

Umask 代表 User Mask,是所有类Unix系统里对文件权限的一种8进制标记。从0到8各代表不同的权限模式。见下:

0 – no permissions
1 – execute only
2 – write only
3 – write and execute
4 – read only
5 – read and execute
6 – read and write
7 – read, write and execute

更多信息,参见:http://en.wikipedia.org/wiki/Umask#Octal_umasks

0代表没有权限,1代表可执行权限,2代表可写权限,4代表可读权限。

这是四个元标记。其他权限标记均来自它们四个的组合,比如有读写权限,即为2 + 4 = 6,如果再加上执行的权限的话,就是2 + 4 + 1 = 7。如果给所有人(包括用户,组,其他)完全控制的权限(即读、写、执行)的话,就是传说中的"777"。

这时候,再看之前的提出的所有者读写,组用户只读,其他禁止访问的授权,就简单了。


chmod 640 filename


是不是短了很多?呵呵~
[ ] ( 2179 次浏览 ) 永久链接 ( 3 / 2471 )

<< <上一页 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 下一页> >>