无法在 Ubuntu 14.04.3 LTS 上删除目录

无法在 Ubuntu 14.04.3 LTS 上删除目录

正如你在下面看到的用户无法删除我的应用程序目录,但可以写入和删除此目录中的文件。文件系统是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

结合两个都 答案

检查父目录webappsia属性通过设置

lsattr | grep webapps

然后,通过以下方式删除它们

chattr -i -a webapps

答案2

存在发出以下命令检查文件的属性:

lsattr 

输出应该是这样的:

-----------------e- ./.thisfolder/.
-----------------e- ./.thisfolder/somefile

如果你注意到ia删除它们:

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 上有写入标志

相关内容