
Estou tendo problemas com permissões de arquivo em um servidor Ubuntu. Estou usando o WinSCP para mover arquivos para o servidor. O servidor funcionará bem e, depois de um tempo, parece que não tenho mais permissão para excluir um arquivo.
Estou me conectando ao servidor usando uma conta chamadasvadmin, e o diretório raiz do servidor Apache é/var/www. Cada site tem seu próprio diretório - ou seja
/var/www/site1
/var/www/site2
Esta é a saída do comando ls ...
cd /var/www
ls -al
drwxr-sr-x 4 svadmin svadmin 4096 2009-06-12 14:45 .
drwxr-xr-x 15 root root 4096 2009-05-05 15:47 ..
drwxr-sr-x 4 svadmin svadmin 4096 2009-06-12 15:15 site1
drwxr-sr-x 4 svadmin svadmin 4096 2009-06-12 15:15 site2
Meu entendimento é que isso significa que o proprietário do diretório leu/gravou/executou? Quando me conecto ao servidor usando a conta svadmin, não deveria ser possível substituir ou excluir arquivos em/var/www/site1 ou/var/www/site2?
Não estou muito familiarizado com as permissões de arquivos/diretórios do Linux, então estou lutando para descobrir o que devo fazer. Qualquer ajuda seria muito apreciada!
Mais informações: (obrigado pelas respostas rápidas!)
Saída de ls -al para /var/www/site1
drwxr-sr-x 4 svadmin svadmin 4096 2009-06-12 15:15 .
drwxr-sr-x 4 svadmin svadmin 4096 2009-06-12 14:45 ..
-rw-r--r-- 1 svadmin svadmin 157 2009-05-12 13:23 error.php
-rw-r--r-- 1 svadmin svadmin 158 2009-05-12 13:23 .htaccess
-rw-r--r-- 1 svadmin svadmin 142 2009-05-12 13:23 index.php
drwxr-sr-x 2 svadmin svadmin 4096 2009-05-12 18:40 libraries
Mensagem de erro quando tento excluir o arquivo:
rm admin.php
rm: cannot remove 'admin.php' : Read-only file system
Ainda mais informações Só para acrescentar alguma informação possivelmente relevante... tudo funcionou até ontem à tarde. Nesse ponto, um colega de trabalho retirou a SAN em que o arquivo da máquina virtual estava e o servidor da Web teve um desligamento nada normal.
Responder1
Este não é um problema de permissões. As duas pistas são:
- rm: não é possível remover 'admin.php': sistema de arquivos somente leitura
- tudo estava funcionando até ontem à tarde. Nesse ponto, um colega de trabalho retirou a SAN em que o arquivo da máquina virtual estava e o servidor da Web teve um desligamento nada normal.
De alguma forma, o sistema de arquivos que contém /var/www caiu para "somente leitura", provavelmente quando a SAN desapareceu. A saída do mount
comando deve identificar este sistema de arquivos com um sinalizador (ro) no final.
A solução é descobrir por que isso aconteceu, certificar-se de que foi corrigido e remontar o sistema de arquivos rw com este comando:
mount -oremount,rw $filesystem
Responder2
Se você tiver rwx em um diretório, isso significa que você pode editar o arquivo do diretório, o que equivale a remover e adicionar arquivos. A edição de arquivos depende de suas permissões individuais. Qual é a aparência de um ls -l de um dos subdiretórios?
Responder3
Seu problema é a parte pegajosa. Observe que as permissões não existem drwxr-xr-x
, elas existem drwxr-sr-x
. A Wikipédia diz:
O uso mais comum do sticky bit hoje é em diretórios, onde, quando definidos, os itens dentro do diretório podem ser renomeados ou excluídos apenas pelo proprietário do item, pelo proprietário do diretório ou pelo superusuário; sem o sticky bit definido, qualquer usuário com permissões de gravação e execução para o diretório pode renomear ou excluir os arquivos contidos, independentemente do proprietário. Normalmente, isso é definido no diretório /tmp para evitar que usuários comuns excluam ou movam arquivos de outros usuários. Este recurso foi introduzido no 4.3BSD em 1986 e hoje é encontrado na maioria dos sistemas Unix modernos.
Portanto, os arquivos só podem ser gravados e excluídos pelo grupo que os colocou lá.