首页 > 代码库 > Linux权限问题(1)-Sticky
Linux权限问题(1)-Sticky
背景:朋友在使用php进行mv操作时,出现了权限被拒绝的问题.查看之后,发现目录设置了sticky权限,取消此权限后,文件可以正常mv及删除.
Sticky:对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除自己的文件(马哥语录,见 马哥Linux base学习笔记)
如下图所示,这是一个加了sticky权限的目录
# mkdir sticky_test # chmod 1777 sticky_test # ll -d sticky_test drwxrwxrwt. 2 root root 4096 Jun 29 17:06 sticky_test
使用redheat用户进入sticky_test目录,touch一个文件,并对该文件添加777权限
$ whoami redheat $ touch redheat_file $ chmod 777 redheat_file $ ll total 0 -rwxrwxrwx. 1 redheat redheat 0 Jun 29 17:10 redheat_file
正常来说,添加了777权限的文件,任何用户可以对其执行读,写,执行的操作
现在使用myuser用户进入该目录,执行删除操作
$ whoami myuser $ ll total 0 -rwxrwxrwx. 1 redheat redheat 0 Jun 29 17:10 redheat_file $ rm -rf redheat_file rm: cannot remove `redheat_file‘: Operation not permitted
可以发现,系统给出了权限被拒绝的提示.
换回redheat用户,执行删除操作
$ rm -rf redheat_file $ ll total 0
命令可以正常执行.
再次创建该文件,并使用root用户将文件的属组更改为myuser
# chown .myuser redheat_file # ll total 0 -rwxrwxrwx. 1 redheat myuser 0 Jun 29 17:18 redheat_file
再次使用myuser用户执行删除命令
$ ll total 0 -rwxrwxrwx. 1 redheat myuser 0 Jun 29 17:18 redheat_file $ rm -rf redheat_file rm: cannot remove `redheat_file‘: Operation not permitted
仍然是不可以删除的.
使用root用户,将目录的sticky权限去掉,同时将redheat_file文件的所属组改回redheat用户
# chmod o-t sticky_test # ll -d sticky_test drwxrwxrwx. 2 root root 4096 Jun 29 17:18 sticky_test # chown redheat.redheat sticky_test/redheat_file # ll sticky_test/redheat_file -rwxrwxrwx. 1 redheat redheat 0 Jun 29 17:18 sticky_test/redheat_file
使用myuser用户可以成功删除该文件
$ rm redheat_file $ ll total 0
总结:当目录设置了sticky权限之后,属组或其他用户,即使对该目录下的文件拥有权限,也无法对该文件执行删除操作.
命令:
对目录设置777权限,同时增加sticky权限 # chmod 1777 sticky_test 对目录设置sticky权限 # chmod o+t sticky_test 删除目录sticky权限 # chmod o-t sticky_test
Linux权限问题(1)-Sticky
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。