Como alterar o proprietário de um diretório

14

EDIT : O problema era que a Apple usa permissões para marcar backups e impede que você os modifique (provavelmente um recurso de segurança). Ao usar chmod -RN <dir>, removi os dados da ACL de todas as pastas com dados importantes, o que me permitiu tornar-me o proprietário e aplicar as permissões apropriadas.

Pergunta original
Eu tenho um backup extremamente grande (> 700 GB) que agora possui permissões incorretas (meu UID foi alterado durante a instalação limpa, uma longa história) e preciso alterá-las. A opção demorada é percorrer manualmente cada pasta e alterar as permissões, mas isso levará séculos.

Eu quero usar chownpara me tornar o proprietário de todos os meus dados importantes e, em seguida, usar chmod 700em todas essas pastas para conceder rwxpermissões apenas para mim.

A solução ideal é um método de usar findpara procurar recursivamente pastas que correspondam a um regex (meu atual é .*/[DCV].*|Pictures|M[ou].*) e, em seguida, tornar meu UID o proprietário e definir as permissões para 700.

A parte importante que não consigo entender: no
entanto, quando tento correr chown Me DirectoryName, entendo chown: DirectoryName: Operation not permitted.

Tudo o que encontro está relacionado à alteração das permissões de um arquivo e não de um diretório. Talvez eu esteja vendo isso da maneira errada?
Algo me diz que não há uma maneira de fornecer meu UID rwxe ---para todos os outros.

Como posso conseguir isso? Estou executando o Mac OS X 10.10.3.

Eu sei que este é um fórum UNIX / Linux (e eu estou correndo Mac), mas esta questão é muito mais sobre como usar o shell, chown, chmod, e permissões e quaisquer soluções postado aqui será aplicável a qualquer sistema operacional baseado em UNIX. Seria preferível que as soluções postadas fizessem meus backups mais antigos reaparecerem no Time Machine.

Obrigado a todos que responderam prontamente, mas chownque parecem não funcionar nos diretórios por algum motivo. O fato de ser uma .sparsebundleimagem de disco em uma unidade de rede é relevante? Presumi que seria o mesmo que em qualquer unidade externa.

Arc676
fonte
Que tipo de unidade de rede? Se for NFS, há uma boa chance de ele ser exportado com root_squashativado, para que você não possa executar operações somente raiz, como chownno cliente.
precisa
É um disco rígido dentro de um Apple Time Capsule. Essencialmente, é um disco protegido por senha dentro de uma estação base WiFi. A única diferença é que o HDD está conectado ao seu computador via Ethernet. Na verdade, existe uma porta USB, mas nunca a usei.
Arc676
Caso contrário, o padrão find . -user $other_uid -print0 | sudo xargs chown $USERdeve funcionar.
precisa
Qual sistema de arquivos de rede? df -hT <dirname>deveria te contar.
Toby Speight
O @TobySpeight nãodf -hT <dir> fornece saída para a) o diretório raiz do disco rígido da rede b) a imagem do disco dentro do disco rígido da rede c) qualquer pasta no disco rígido da rede. Talvez o comportamento que você pretendeu seja implementado de maneira diferente no Mac e no Linux?
Arc676

Respostas:

23

Eu posso ter entendido errado. Mas você pode usar recursivamente chmod e chown, por exemplo.

chown -R username:username /path/directory

Para aplicar recursivamente a permissão 700, você pode usar:

chmod -r 700 /path/directory

É claro que o acima é para Linux, portanto, não tenho certeza se o mac osx é o mesmo.

Edição: Sim, esqueci de mencionar que você precisa estar enraizado para mostrar alguma coisa, eu apenas assumi que você sabia disso ... meu mal.

dakka
fonte
1
O Mac OS usa a mesma sintaxe. Para executar o comando como root, a maneira mais fácil em um Mac é prefixá-lo sudo, então sudo chmod(você será solicitado a fornecer uma senha com acesso de Administrador).
Mjturner
2

tente como root

 find wherever -type d -name ... -exec chown Me {} \;

Onde

  • -type d aplicar somente ao diretório
  • -name ... seu regexp
  • -exec chown Me {} \; use chown em encontrar dir.

você deve ser raiz para mostrar.

Archemar
fonte