Para combinar os dois respostas :
verifique se o diretório pai webapps
tem os i
ou a
atributos definido por
lsattr | grep webapps
Em seguida, remova-os por meio de
chattr -i -a webapps
Como você pode ver abaixo, o usuário root não pode remover o diretório myapp , mas pode gravar e excluir arquivos nesse diretório. O sistema de arquivos é ext4 . Isso é um problema no sistema de arquivos? Você tem alguma idéia sobre isso?
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 Saída do lsattr após a emissão do comando # chattr -i examp :
# lsattr
-------------e-- ./myapp
-------------e-- ./host-manager
-------------e-- ./myapp.war
-------------e-- ./examples
-------------e-- ./docs
-------------e-- ./examp
-------------e-- ./examp.war
-------------e-- ./ROOT
-------------e-- ./manager
A solução (edit)
Finalmente, a causa raiz do problema estava nos atributos ext4 (não nas permissões) do diretório pai.
root@vm4923:/opt/tomcat# lsattr | grep webapps
----i--------e-- ./webapps
Ao remover o atributo i
do diretório webapps
, consegui remover o diretório myapp
usando o comando 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
Obrigado por seu esforço!
Sendo root , verifique os atributos dos arquivos que emitem o seguinte comando:
lsattr
A saída deve ser assim:
-----------------e- ./.thisfolder/.
-----------------e- ./.thisfolder/somefile
se você perceber e i
ou a
removê-los com:
chattr -i [filename]
chattr -a [filename]
chattr permite que os sistemas de arquivos ext2, ext3 e ext4 modifiquem os atributos que substituem as ACLs (chmod, chown, setfacl…), dando a você um rígido controle sobre os arquivos.
Os atributos mais comuns são:
(A) Não atualize o atime
(S)
(a) acrescentar apenas
(d) sem despejo
(i) imutável
(j) data journalling
(t) sem fusão final
lsattr simplesmente liste esses atributos.
É uma crença comum que, para remover o diretório / a / b / c, é necessário ter a permissão de gravação em / a / b / c. Ter esse direito garante que você manipule o CONTEÚDO de / a / b / c que é para gravar / modificar / excluir arquivos sob ele.
Portanto, para remover / a / b / c, você deve ter o sinalizador de gravação em / a / b
Tags ext4 tomcat linux filesystems ubuntu