本人系统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,那么所有用户执行这个文件的时候,都是以这个用户的所有者的权限来执行。

演示:

185836359.jpg

大家从上图可以看到针对目录加强制位的方法

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

234203746.jpg

大家可以看到zhangsan用户也可以正常使用了,是不是有点像sudo呢?

下面是sticky(冒险位);

案例:比如我们一个服务器上有一个目录,所有用户都可以进行操作;那么默认的话,你创建的文件,其他用户也可以删除了;那么有什么办法,你的文件只有你自己可以删掉呢?这里我们使用sticky就可以办到;

演示3:

000512513.jpg

我们发现冒险位设置到目录上,zhangsan创建的文件,lisi不可删除了;

o-t 可以解除冒险位;