Não é possível excluir o diretório no Ubuntu 14.04.3 LTS

3

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!

    
por funk 17.02.2016 / 15:08

3 respostas

6

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
    
por 17.02.2016 / 15:55
3

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

  • Atualizações síncronas
  • (S)

  • (a) acrescentar apenas

  • (d) sem despejo

  • (i) imutável

  • (j) data journalling

  • (t) sem fusão final

lsattr simplesmente liste esses atributos.

    
por 17.02.2016 / 15:17
2

É 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

    
por 17.02.2016 / 15:40