本人系统Centos6.0
大家应该发现了当我们创建文件、目录的时候,就会默认有一个权限,那么这个是怎么回事呢?
这里引出一个umask权限设置
先来看个实例:[root@centos ~]# touch test
[root@centos ~]# ll test
-rw-r--r--. 1 root root 0 8月 19 18:36 test
[root@centos ~]# mkdir testd
drwxr-xr-x. 2 root root 4096 8月 19 18:37 testd
root用户创建文件,默认权限644
root用户创建目录,默认权限755;这是为什么呢?
这就是umask的作用了:
1、umask的作用
默认情况下的umask值是022[root@centos ~]# umask
0022
此时你建立的文件默认权限是644(666-022),建立的目录的默认权限是755(777-022)
现在应该知道umask的用途了吧,它是为了控制默认权限;
知道了umask的作用后:
你可以修改umask的值了
例如:umask 024则以后建立的文件和目录的默认权限就为642,753了[root@centos ~]# umask 024
[root@centos ~]# umask
0024
2、将umask值保存到环境文件
如果使用bash可以更改/etc/bashrc文件中的umask,如果使用csh,可以更改/etc/csh.cshrc
umask 就是指定『目前使用者在建立档案或目录时候的属性默认值』
所以默认权限就是:
文件:666-umask值;(666-022=644)
目录:777-umask值;(777-022=755)这样就容易明白了;
冒险位和强制位(冒险位有的书也叫粘滞位)
前面说了0022中的022(后三个);那么前面一个是什么作用呢?
所谓的强制位和冒险位都是最最前面那个0的位置来表示,当前面那个位,2和4权限就叫强制位,1的权限就是冒险位,2代表的是GID,4代表的是uid,1代表的是sticky(粘滞)
作用:
GID的作用:默认情况下,用户建立的文件属于用户当前所在的组,但是设置了GID以后,表示在此目录中,任何人建立的文件,都会属于目录所属的组。
UID的作用:当一个文件设置了UID,那么所有用户执行这个文件的时候,都是以这个用户的所有者的权限来执行。
演示:
大家从上图可以看到针对目录加强制位的方法
1> 、chmod g+s dirname
2> 、chmod 2755 dirname
下面我使用zhangsan在该目录创建个文件。查看属组;[root@centos lansgg]# chmod g+s /tmp/lansgg
[root@centos ~]# chmod o+w /tmp/lansgg
[root@centos ~]# useradd zhangsan
[root@centos ~]# su - zhangsan
[zhangsan@centos ~]$ touch /tmp/lansgg/testfile
[zhangsan@centos ~]$ ls -l /tmp/lansgg/testfile
-rw-rw-r--. 1 zhangsan root 0 8月 19 19:04 /tmp/lansgg/testfile
可以看到zhangsan创建的文件属组竟然是root;
演示2:
下面演示UID:
我们知道普通用户是不能操作某些命令的;比如netstat 命令无法查看后面PID项的进程名
那我们能让某些用户可以完全查看呢?比如zhangsan
大家可以看到zhangsan用户也可以正常使用了,是不是有点像sudo呢?
下面是sticky(冒险位);
案例:比如我们一个服务器上有一个目录,所有用户都可以进行操作;那么默认的话,你创建的文件,其他用户也可以删除了;那么有什么办法,你的文件只有你自己可以删掉呢?这里我们使用sticky就可以办到;
演示3:
我们发现冒险位设置到目录上,zhangsan创建的文件,lisi不可删除了;
o-t 可以解除冒险位;