linux下的文件权限,有很多种类型。 有基于用户,组,其他用户的一般类型的权限, 和 acl权限(访问控制列表), SUID, SGID, SBIT权限, chattr 权限, su ,sudo 权限 ,这里仅仅说下在一般类型的权限,普通用户能不能删除root用户或者其他用户的文件。
linux中root用户,感觉就是无敌的用户。root用户可以修改任何文件,其他用户好像对root用户产生的文件,很无能为力,多只能默默看看。其实,普通用户是可以删除root用户产生的文件的,但是只要满足一个条件,root用户产生的文件就可能被普通用户删除掉。因为linux是否有权限删除一个文件,取决于该用户是否对文件所在文件夹有写的权限 。
# 创建一个用户
useradd zhangsan
# root 用户在zhangsan的目录中创建一个文件
touch /home/zhangsan/file.txt
# 切换到张三的用户
su zhangsan
cd ~
#
ll
total 0
-rw-r--r--. 1 root root 0 Nov 18 22:04 file.tx
# 可以看到删除文件成功
rm -y file.txt
如何可以不允许删除该文件呢?
chattr +i 文件夹的名字 这样root也删除不了
感谢!!近在做大数据实验时发现这个问题: 在普通用户的家目录下的root权限的压缩包能够被普通用户删除或者解压,当时我就很纳闷,为什么普通用户能操作root文件(明明只有读权限)。再把该文件放到usr目录时又不可以删除了,看到博主的文章才知道原因所在,感谢!!
原理如此,一直以来root用的文件,只能是root自己删除。
这点(一个文件能不能被删除,只和它所在的文件目录有关,给该文件没有半毛钱关系)还是真没有注意。看来学习东西要细心。
博主这句 “取决于该用户是否对文件所在文件夹有写的权限” ,这句不准确。 即使对文件夹dir有写的权限,如果文件 chattr +i dir/myfile.txt 。 依然删除不了 myfile.txt