无法删除 Ubuntu 14.04.3 LTS 上的目录

fun*_*unk 2 linux filesystems ext4 tomcat ubuntu

正如您在下面看到的,root用户不能删除myapp目录,但可以写入和删除该目录中的文件。文件系统是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# 
Run Code Online (Sandbox Code Playgroud)

@Fiximan

# ls -l | grep webapps
drwxrwxrwx 9 root root  4096 Jan 27 21:41 webapps
Run Code Online (Sandbox Code Playgroud)

发出# chattr -i examp命令后@jcbermu lsattr 的输出:

# lsattr 
-------------e-- ./myapp
-------------e-- ./host-manager
-------------e-- ./myapp.war
-------------e-- ./examples
-------------e-- ./docs
-------------e-- ./examp
-------------e-- ./examp.war
-------------e-- ./ROOT
-------------e-- ./manager
Run Code Online (Sandbox Code Playgroud)

解决方案(编辑)

最后,问题的根本原因在于父目录的 ext4 属性(而不是权限)。

root@vm4923:/opt/tomcat# lsattr | grep webapps
----i--------e-- ./webapps
Run Code Online (Sandbox Code Playgroud)

通过iwebapps目录中删除属性,我可以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
Run Code Online (Sandbox Code Playgroud)

谢谢你们的努力!

ser*_*inc 6

结合两个 答案

检查父目录webapps是否具有设置的ia属性

lsattr | grep webapps
Run Code Online (Sandbox Code Playgroud)

然后,通过删除它们

chattr -i -a webapps
Run Code Online (Sandbox Code Playgroud)