Linux系统精讲--2.2 others特殊权限sticky_bit 防删除位

回复 收藏

icon_txt.gif2.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只可作用于目录

2017-01-06 02:48 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: