解决Linux环境只有root用户才能删除文件
一、概述
Linux环境下,发现iotapp账号自己建的文件并赋予777权限,其他用户无法删除,iotapp也无法删除,只有root用户和用WinSCP通过SFTP方式可以删除。
二、排查
1. 本用户无法删除自己创建的文件。
2. 排查父级目录权限,发现正常。
3. 切换至root账号,发现能删除。
4. lsattr显示文件属性,看这个文件是否具有 i 和 a 属性,如果有可以通过chattr -ia ./test.txt去除(这里 '-' 的意思表示去除文件属性, 同理,"+" 表示设置文件的属性);
- a :设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性。
- i :它可以让一个文件不能被删除、改名,设置连接也无法写入或添加数据。只有root才能设置这个属性。
发现文件未被限制为不能被删除。
5. lsattr查看父级属性,发现正常。
6. iotapp账号,用WinSCP通过SFTP连到服务器,可以删除此文件。
7. 在终端命令行,除root外任何账号不能删除文件,而sftp可以删除,怀疑是 rm 程序的问题,root用户下,ll /bin/rm 查看rm程序,发现除root外,其他账号没有执行rm程序的权限。
8. chmod 755 /bin/rm修改权限后,iotapp可以删除此文件。