Por que recebo permissão negada quando o uso de direitos de diretório mv está correto?

6

Recebo permissão negada ao tentar mover a pasta Music via mv , embora o proprietário do diretório esteja definido como meu usuário e as permissões de usuário estejam definidas como 7. O que está acontecendo?

(Eu sei que eu poderia usar o sudo mas eu quero descobrir o que está errado. Algo cheira bem aqui). Ps: Eu estou no Mac OS X El Capitan.

    
por Timo 06.10.2015 / 15:31

4 respostas

13

Observe que, quando na pasta a , movendo b para c , as permissões de pasta de a determinam o que você pode fazer.

Nesse caso, as permissões em . serão mais importantes.

Observe que as permissões são mais complexas do que simplesmente rwx . Sua pasta music tem um @ no final, a pasta . tem um + no final.

  • Use xattr -h para determinar as permissões complexas para o símbolo @.
  • Use getfacl para determinar a ACL para o símbolo +.
por 06.10.2015 / 15:37
9

Parece que havia pelo menos um arquivo em algum lugar desse diretório que não tinha permissões corretas.

Então, o que eu fiz foi:

sudo chown -R valmar ./Music
sudo chmod -R 755 ./Music

Agora funciona.

    
por 06.10.2015 / 15:39
2

Eu tive esse problema quando um conjunto de programas estava sendo executado em um diretório que eu estava tentando remover. Para mover o diretório, eu tive que primeiro matar todos os programas em execução daquele diretório.

Eu usei os seguintes comandos para referência:

ps aux | grep -I [NAME_OF_ANNOYING_PROGRAM] | grep -v grep | awk '{print $2}' | sudo xargs kill -9
sudo mv /usr/local/[NAME_OF_ANNOYING_PROGRAM] /usr/local/[NAME_OF_ANNOYING_PROGRAM]2

Obviamente, [NAME_OF_ANNOYING_PROGRAM] será diferente em todos os casos e o diretório que você está tentando mover pode ser diferente do nome do programa.

De qualquer forma, o procedimento geral é:

  1. elimina todos os programas em execução no diretório em questão
  2. tentar renomear o diretório
  3. se isso falhar, forçar a eliminação de todos os programas do diretório
  4. tentar renomear o diretório
  5. se isso falhar, veja se o programa está sendo executado novamente, por exemplo que ele foi reiniciado por algum programa daemon sendo executado a partir de um diretório diferente
  6. forçar matar o programa daemon que reinicia o programa irritante
  7. forçar a matar o programa chato
  8. renomear diretório
  9. lucro
por 15.03.2018 / 14:59
1

Eu estava usando o Windows Subsystem para Linux. Eu tive o diretório aberto em uma instância bash diferente. Fechando, deixe-me mover o diretório.

    
por 16.03.2018 / 18:10