2.2_others特殊权限sticky_bit_防删除位_.pdf
# cd /tmp
# mkdir 333 【创建333目录】
# chmod 777 333 【赋予333全部权限】
# cd 333
# touch 12.txt
# vi 12.txt 【进入12.txt进行编辑】
[root@alexlinux 333]# cat 12.txt
dfaadsf
adfa
[root@alexlinux 333]# ls -l 12.txt
-rw-r--r--. 1 root root 13 1月 3 20:42 12.txt 【只允许root用户可读可写,其他用户others只读】
# su - aming
$cd /tmp/333 【进入333目录】
$vi 12.txt
【出现提示:警告:正在更改只读文件】
【在输入文字之后,点wq保存,出现提示:只读选项(按!强制覆盖保存)】
:wq! 【强制保存】
$cat 12.txt
dfaadsf
adfa
aasdfaf
正常情况下,只有其所属主root有可读可写可执行权限,所属组root下的用户有700权限,others只有700可读权限。这里之所以能写,过程应该是先删除了原来root创建的文件,又重新以aming的身份创建了一个新的文件
$ls -l
-rw-r--r--. 1 aming aming 22 1月 3 20:50 12.txt 【此时user和group都已经变成了aming】
但是上面还没有解决为什么可以写,为什么可以把root的文件删除?
$ls -ld
drwxrwxrwx. 2 root root 4096 1月 3 20:51 . 【tmp/333目录的详细信息】
原因在于,12.txt文件所在的目录333,是可读可写可执行的。
结论:一个目录下的文件能不能删除,不取决于这个目录下的文件的所属主、所属组以及其权限是什么,而是取决于这个文件所在目录的权限,是否可写。所以当一个目录的others权限是可读可写时(目录默认权限有可执行,因为打开目录,就相当于执行了该目录),其他人就可以删除这个目录下的任何文件,包括root文件。
解决方案:给目录增加防删除位sticky
$exit
333]# chmod o+t .
#ls -ld
drwxrwxrwt. 2 root root 4096 1月 3 20:51 . 【others权限,rwt,可读可写不可删除】
#chmod o-x .
#ls -ld
drwxrwxrwT. 2 root root 4096 1月 3 20:51 . 【若没有x权限,小写t变成大写T,但如果目录没有x权限,就没办法打开,所以还是要赋予x权限】
#chmod o+x .
#cp 12.txt 33.txt 【】
#su - aming
$rm -f 33.txt
不允许的操作
因为给333目录增加了不可删除权限,所以其他用户不能删除。
第一个实验之所以能成功写入,是因为先删除了12.txt,再重新建立了一个12.txt,那么在12.txt的目录增加了不可删除权限之后,再执行vi 12.txt进入修改,即便是 :wq! 也不可以进行。
$vi 33.txt
#wq!
在333目录下可创建新文件22.txt,其所属主和所属组都是aming。可读可写
NOTE: sticky_bit只可作用于目录
编辑回复