分类: LINUX
2009-04-03 16:30:51
翻译:Steve
日期:2005年2月15日
文章来源:hacking linux exposed
作者:Brian Hatch, James Lee, George Kurtz
当以一个用户创建了一个文件或目录,那个文件或目录就得到默认许可:
----------------------------------
jdoe@server1$ touch a.txt
jdoe@server1$ mkdir directory_b
jdoe@server1$ ls -l
total 1
-rw-rw-r-- 1 jdoe users 0 Nov 29 13:42 a.txt
drwxrwxr-x 2 jdoe users 1024 Nov 29 13:43 directory_b
----------------------------------
注意,用户jdoe的默认许可如下
664 文件
775 目录
默认文件和目录许可是按照用户umask(应该是universal mask)值设定的。umask值用来掩盖大多数许可相关的默认值:666 对文件;777对目录。要显示你的umask值,用 umask 指令:
jdoe@server1$ umask
002
用户jdoe的umask值为002。有个简单的办法可以找出用户新建文件/目录的默认许可,就是用系统默认许可减去umask值:
文件 666 目录 777
- 002 -002
= 664 =775
要改变你的默认许可,就改变umask值。要创建最严格的许可,用umask值777:
----------------------------------
jdoe@server1$ umask 777
jdoe@server1$ touch c
jdoe@server1$ ls -l
total 1
-rw-rw-r-- 1 jdoe users 0 Nov 29 13:42 a.txt
---------- 1 jdoe users 0 Nov 29 14:22 c
drwxrwxr-x 2 jdoe users 1024 Nov 29 13:43 directory_b
----------------------------------
当然了,这样作太严格了,jdoe再不对这个新文件具有写和读的权限了:
jdoe@server1$ cat c
cat: c: Permission denied
要对文件和目录创建最实用且严格的许可,用umask值077:
----------------------------------
jdoe@server1$ umask 077
jdoe@server1$ touch d
jdoe@server1$ mkdir dirctory_e
jdoe@server1$ ls -l
total 2
-rw-rw-r-- 1 jdoe users 0 Nov 29 13:42 a.txt
---------- 1 jdoe users 0 Nov 29 14:22 c
-rw------- 1 jdoe users 0 Nov 29 14:30 d
drwxrwxr-x 2 jdoe users 1024 Nov 29 13:43 directory_b
drwx------ 2 jdoe users 1024 Nov 29 14:30 directory_e
----------------------------------
注意umask值077赋予jdoe对文件d读/写权限以及对目录directory_e读/写/执行的权限,但组群和其他用户没有得到任何权限。
对登录进行加载umask,只要将‘umask 077’指令添加到profile script(~/.bash_profile 或相似的)。
文件许可的普遍规则
文件许可的普遍规则是加载最严格的许可于文件或目录上,然后在对个别用户或组群赋予相应需要的权限。赋予特权是简单的,但是取消特权又想避免一番挣扎确实十分难的。
==========================END=============================