umask 默认权限控制和特殊权限

时间:2023-03-10 02:20:14
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