umask 默认权限控制和特殊权限
权限简单介绍:
在Linux中,创建目录或者文件之后总会有默认的权限。共9个,分为三组。分别代表u、g、o(属主、属组、其他用户)。r、w、x 也代表各自的权限。
r:读 在文件中的权限代表次文件可以被cat 在目录的权限中代表此目录可以 ls 来查看目录下的文件 一般用数字 4 代表
w:写 在文件中的权限代表次文件可以更改(vim/vi.....) 在目录中 则可以创建、删除、更改 此目录下的文件 一般用数字 2 代表
x:执行 在文件中代表次文件可以被用户执行 在目录中代表此目录可以 cd 进去 一般用数字 1 代表
umask 默认权限控制
umask 控制着系统的默认权限,默认为0022; 第一位代表的是附加权限,也就是特殊权限。后三位代表的是u、g、o的权限。
其中文件和目录默认的最大权限如下:
file---666 -rw-rw-rw
dir ---777 drwxrwxrwx
文件目录权限的计算:
1. 当umask为偶数
umask为0022
文件:
file- 666-022=644
目录:
dir- 777-022=755
2.当umask为奇数 计算文件的默认权限的时候,要在奇数位加1
umask为0032
file- 666-032=634
+010=644
目录的不变
umask=035
[root@znix ~]# umask 035
[root@znix ~]# touch file035
[root@znix ~]# mkdir dir035
[root@znix ~]# ll file035 && ll -d dir035
-rw-r---w- 1 root root 0 Sep 6 10:42 file035
drwxr---w- 2 root root 4096 Sep 6 10:42 dir035
file=642 dir=742
永久修改umask的方法
[root@znix ~]# vim /etc/profile
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
解释:
如果 [ 用户UID>=199 ] 并且 [ 用户的名字 == 用户组名字 ];然后
umask 002
那么
umask 022
果如
特殊权限
特殊权限一般都是在 X 位上;分为set uid 、set gid、sticky bit(粘滞位)三种;
set uid:
附加在属主的x位上,并改变其为s
set gid:
附加在属组的x位上,并改变其为s
基本和suid相同,但是我们修改权限一般会让其让其最大化,没必要让其和属主的相同,不过他还有其他作用,适用于目录,用来传递目录的属主身份:(如果我们没有使用这个特殊权限的时候,那么我们创建文件时,属组就会是创建此文件的用户的属组,但是如果我们有这个特殊权限,那么我们在这个目录中创建的文件就会是目录的属组) 新建文档自动属于这个组
sticky bit(粘滞位):
附加在其他人的x位上,并改变其为t
适用于多个用户都有写入权限的目录(/tmp,我们所有用户都可以在此目录有写入权限,这时如果我们不给此目录一些限制的话,我们超级用户在跑一个程序,并在tmp目录下有一些临时文件,而我们随便过来一个用户就能将其文件删除,还有就是我们张三创建的文件,李四就能删除,这样是不合理的)这时我们就需要进行限制,阻止对目录w权限的滥用,如果加上此权限,那么我们每个用户只能删除自己的文件,不能删除其他人的文件
s与S 的区别在于若是用户或用户组没有执行权限(x) 则其附加权限为 S 。 若是有x(执行权限) 则为 s 。
我们的附加权限也可以用数字表示,当我们写三个数字的时候默认是属主属组和其他用户的权限;但是当我们写四个数字的时候,后三个默认还是属主属组和其他用户的权限,但是第一个数字就代表附加权限,其中suid是4、sgid是2、粘滞位是1