正如你在下面看到的根用户无法删除我的应用程序目录,但可以写入和删除此目录中的文件。文件系统是ext4。这是文件系统问题吗?您对此有什么想法吗?
root@vm4923:/opt/tomcat/webapps# ls -l | grep myapp
drwxr-xr-x 2 root root 4096 Feb 17 14:30 myapp
-rw-r--r-- 1 root root 17544487 Dec 18 12:59 myapp.war
root@vm4923:/opt/tomcat/webapps# rm -rf myapp
rm: cannot remove 'myapp': Permission denied
root@vm4923:/opt/tomcat/webapps# sudo rm -rf myapp
rm: cannot remove 'myapp': Permission denied
root@vm4923:/opt/tomcat/webapps# ls -l myapp/
total 0
root@vm4923:/opt/tomcat/webapps# echo "jsdkfjslkdj" > myapp/testfile
root@vm4923:/opt/tomcat/webapps# ls -l myapp/
total 4
-rw-r--r-- 1 root root 12 Feb 17 14:38 testfile
root@vm4923:/opt/tomcat/webapps# ls -lh | grep myapp
drwxr-xr-x 2 root root 4.0K Feb 17 14:38 myapp
-rw-r--r-- 1 root root 17M Dec 18 12:59 myapp.war
root@vm4923:/opt/tomcat/webapps# ls -l myapp/
total 4
-rw-r--r-- 1 root root 12 Feb 17 14:38 testfile
root@vm4923:/opt/tomcat/webapps# rm -rf myapp
rm: cannot remove 'myapp': Permission denied
root@vm4923:/opt/tomcat/webapps# ls -l myapp/
total 0
root@vm4923:/opt/tomcat/webapps# ls -lh | grep myapp
drwxr-xr-x 2 root root 4.0K Feb 17 14:39 myapp
-rw-r--r-- 1 root root 17M Dec 18 12:59 myapp.war
root@vm4923:/opt/tomcat/webapps#
@Fiximan
# ls -l | grep webapps
drwxrwxrwx 9 root root 4096 Jan 27 21:41 webapps
@jcbermu lsattr 发出后的输出# chattr -i 示例命令:
# lsattr
-------------e-- ./myapp
-------------e-- ./host-manager
-------------e-- ./myapp.war
-------------e-- ./examples
-------------e-- ./docs
-------------e-- ./examp
-------------e-- ./examp.war
-------------e-- ./ROOT
-------------e-- ./manager
解决方案(编辑)
最后,问题的根本原因在于父目录的 ext4 属性(而不是权限)。
root@vm4923:/opt/tomcat# lsattr | grep webapps
----i--------e-- ./webapps
i
通过从目录中删除属性webapps
,我能够myapp
使用命令删除目录rm -rf
。
root@vm4923:/opt/tomcat# chattr -i webapps
root@vm4923:/opt/tomcat# lsattr | grep webapps
-------------e-- ./webapps
root@vm4923:/opt/tomcat# cd webapps/
root@vm4923:/opt/tomcat/webapps# ls
ROOT docs examp examp.war examples host-manager manager myapp myapp.war
root@vm4923:/opt/tomcat/webapps# ls myapp
testdir
root@vm4923:/opt/tomcat/webapps# rm -rf myapp
root@vm4923:/opt/tomcat/webapps# ls
ROOT docs examp examp.war examples host-manager manager myapp.war
感谢你们的努力!
答案1
答案2
存在根发出以下命令检查文件的属性:
lsattr
输出应该是这样的:
-----------------e- ./.thisfolder/.
-----------------e- ./.thisfolder/somefile
如果你注意到i
或a
删除它们:
chattr -i [filename]
chattr -a [filename]
聊天室允许在 ext2、ext3 和 ext4 文件系统中修改覆盖 ACL 的属性(chmod、chown、setfacl……),从而让您对文件进行严格的控制。
最常见的属性是:
(A)不要更新 atime
(S)同步更新
(a)仅附加
(d) 禁止倾倒
(一)不可变的
(j) 数据日志
(t)无尾部合并
伊萨特只需列出这些属性。
答案3
人们普遍误以为,要删除目录 /a/b/c,必须拥有 /a/b/c 的写入权限。拥有该权限可让您操作 /a/b/c 的内容,即写入/修改/删除其下的文件。
因此,要删除 /a/b/c,必须在 /a/b 上有写入标志