1、set uid(强制位) 只能对文件进行设置
通过对文件设置uid可以使非文件拥有者或文件所属群组的用户具有执行该文件的权限。
SUID的限制与功能:
SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效(run-time);
执行者将具有该程序拥有者 (owner)的权限。
例如ping,默认情况下所有用户都可以使用此命令,但当我们查看ping命令所在的文件时会发现,这个文件所属的用户和组均属于root, 别的用户和组都没有权限使用此命令,但是为什么其他的用户和群组都能使用此命令了呢?
当你查看ping命令所在文件的权限时你会发现在用户的权限x的位置有一个s,这是为什么呢?
这就是系统默认给ping命令这个文件设置了强制位。 那么 强制位又有什么作用呢?
对文件设置过强制位以后,可以让对此文件没有执行权限的用户执行此文件。
例如:ping这个命令是所有用户都能使用的,但ping命令所在文件是所属root用户和组的,别的成员没有执行此命令的权限,但是设置过强制位就不同了。ping是属于root用户和组的,但使用jack用户登陆后也可以使用此命令,原因就是系统 默认给ping命令所在目录设置过强制位了,如果把强制位取消,则再用jack用户使用ping命令,这时会提示没有权限。
强制位的使用:
chmod u+s 文件 对文件设置强制位
chmod u-s 文件 对文件取消强制位
2、set gid
默认情况下,用户A在目录所属组B里面新建目录或文件,该文件或目录的所属的用户为A,所属的组为用户A所在的组; 但是如果对目录B设置过gid以后,用户A在目录所属组B里面新建目录或文件,该文件或目录所属的用户为A,但是所属的组为B。
例如:用户A为root用户、目录test所属组B为jack组
默认情况下,root用户在test目录下面新建一个目录或文件,该文件或目录所属的用户为root,所属的组为root所在的组;但是如果对目录 test设置过gid以后,用户root在test目录下面新建一个目录或文件,该文件或目录所属的用户为root,但是所属的组为jack组。
对组设置gid的方法:chmod g+s 目录
对组设置过gid以后,查看该组的权限,这时候你就会发现,原先在该目录组的权限x变成了s,这就对了,否则就不正常了……
与SUID不同的是,SGID 可以针对文件或目录来设定,如果对文件来说,SGID有如下的功能:
SGID对二进制程序有用;
程序执行者对于该程序来说,需具备x的权限;
执行者在执行的过程中将会获得该程序所属的组的支持!
除了 binary program 之外,事实上SGID也能够用在目录上,这也是非常常见的一种用途!若一个目录设定了SGID的权限后, 具有如下的功能:
用户若对于此目录具有r与x的权限时,该用户能够进入此目录;
用户在此目录下的有效所属的组(effective group)将会变成该目录所属的组;
用途:若用户在此目录下具有w的权限(可以新建文件),则使用者所建立的新文件,该新文件的群组于此目录所属的组相同。
3、冒险位对目录的作用
当用户对于此目录具有w,x权限,亦即具有写入的权限时;
当用户在该目录下建立文件或目录时,仅有自己与root才有权力删除该文件
如果一个目录other具有r、w、x的权限,那么所有的用户的可以在该目录下面随便的创建、修改、删除目录。但是有些用户在该目录下面创建的文件不想让别的用户更改或是删除,那该怎么办?不要着急,这时就是冒险位出山的时候了。
设置冒险位的方法:chmod o+t 目录
对目录设置过冒险位以后,查看该组的权限,这时候你就会发现,原先在该目录的other权限的x变成了t,一切ok。
例如:/tmp目录就是所有的用户都可以在该目录下面新建、更改、删除文件。test用户在/tmp目录下面新建的一个test.txt,
但是jack用户登上来以后看见该文件没有什么作用,于是就删除了,但是test用户在test.txt文件里的数据就一下子不见了,这该如何是好……
所以嘛,对/tmp目录设置过冒险位以后test用户新建的文件,jack将不能删除
4、set uid、set gid、sticky(冒险位)也可是使用数字进行表示
set uid 数字代表4
set gid 数字代表2
冒险位 数字代表1
如果对文件设置强制位 则:chmod 4--- 文件
set gid 则:chmod 2--- 文件
冒险位 则:chmod 1--- 文件
---代表文件的权限
阅读(916) | 评论(0) | 转发(0) |