linux强制文件夹命令 linux强制创建文件夹( 四 )


? 例linux强制文件夹命令:如果文件的权限为”rwx r-- r-x”,那么如果设置了强制位与冒险位则新的权限为“rwsr-Sr-t”
? 对创建者设置强制位setuid,一般针对的是一个 系统中的指令 或 可执行文件
? 在默认情况下,用户执行一个指令,会以该用户的身份来运行
? 当对一个指令对应的可执行文件设置了(setuid) , 那么任何一个用户在执行这个文件的时候,都会以指令对应的可执行文件的创建者身份来执行这个文件
? 语法:chmod u±s 文件名
? 例:chmod u+s /bin/ls
可以查看到/bin/ls的所有者和所有组都是root 。假如现在有一个文件夹是属于root用户root组,权限为-rwx--x--x,也就是除了root用户,所属组和其他用户对这个文件夹除了cd没有任何权限 。这时随便切换一个other用户,发现在这个文件夹里敲ls会被拒绝 。用ll /bin/ls 查看发现权限是-rwxr-xr-x,即除了root用户其他所有用户有读和执行的权限(即使将该文件的权限改成777,other用户仍然无法在该文件夹里敲ls) 。用chmod u+s /bin/ls命令后,再用ll /bin/ls 查看发现权限变成了-rwsr-xr-x,说明linux强制文件夹命令我使/bin/ls这个命令在被执行的时候是按照这个可执行文件的创建者,即root来执行的,这时敲ls就不会被拒绝了 。
bin文件夹和sbin文件夹里都是系统文件 , 所以即使是root用户把自己的权限(文件属主和属组)给其他普通用户,他也不能进行u±s操作 。但是其他普通文件夹就可以
root用户赋予普通用户,普通用户权限随root
如果之后普通用户权限赋予root,root用户也会随这个普通用户的权限
? 对组设置强制位setgid,一般针对的是一个目录
? 在默认情况下 , 用户在某目录中创建的文件或子目录的属组是该用户的主属组
? 如果对一个目录设置了属组的强制位,则任何用户在此目录中创建的文件或子目录都会继承此目录的属组(前提:用户有权限在目录中创建文件或子目录)
? 语法:chmod g±s 目录
? 例:chmod g+s /dir
即使是root用户在chmod g+s 目录下它的所属组也会变成该文件所属的组
比如现在有一个文件夹的所属组为user1组,通过chmod g+s 文件夹进行设置强制位以后 , 所有在这个文件夹里新创建的文件或文件夹都会为user1组,旧的文件不会被更改。
同样 , 在chmod g-s 文件夹以后再新建的文件夹没有s , 但是之前继承的有s的不会被更改 。注意,比如有文件夹E,在E文件夹上设置g+s后,在E文件家里新建了文件夹F,那么F会继承E的g+s 。之后在E文件夹上设置g-s后,还要在F文件夹上设置g-s才能把这个s去掉,否则在F文件夹里新建的文件夹还是会继承
实验 :
? 对其它用户设置冒险位sticky  , 一般针对的是一个目录  , chmod o+t 目录
? 在默认情况下,如果一个目录对用户有r、w和x权限,则这个用户可以在此目录中建立与删除任何文件
? 一旦在目录上设置了冒险位,则表示在此目录中 , 只有文件的拥有者、目录的拥有者与root用户才可以在目录中删除此文件
实验:
? 用户可以用chmod指令来为文件设置强制位与冒险位
? setuid:chmod u+s 文件名
? setgid:chmod g+s 目录名
? sticky:chmod o+t 目录名
? 强制位与冒险位也可以通过一个数字加和 , 放在读写执行的三位数字前来指定
? 4(setuid)
? 2(setgid)
? 1(sticky)
? 例:要为某文件设置为”rws r-x r-x”的权限则可以使用下面的指令:chmod 4755 文件名
stat 文件名或者目录名 即可查看四位权限

推荐阅读