Corrigir várias permissões de usuário recursivamente para um diretório

1

Eu quero criar um arquivo ZIP de uma pasta específica, que contém principalmente fotos copiadas de várias fontes reunidas ao longo de vários anos. Infelizmente, as permissões estão desarrumadas. Com ls estou vendo coisas como

----------@

e

-r--r--r--@

O último mostra no Finder como tendo entradas de usuário e grupo duplicadas. Quando tento compactar a pasta, ocorre um erro nos arquivos que possuem essas permissões.

Estou procurando um comando de terminal que redefina todos os arquivos dentro de uma pasta para

-r--r--r--

ou para diretórios para

drwxr-xr-x

Obrigado.

    
por 0__ 09.01.2014 / 00:56

3 respostas

3

Não estou completamente claro sobre o que está tudo errado, mas você deve conseguir normalizar as permissões com três comandos:

sudo chown -R hhrutz:staff /path/to/folder

Isso define o proprietário para hhrutz e o grupo para a equipe de todo o conteúdo da pasta. Observe que isso exige direitos de administrador e você precisará inserir sua senha de administrador para confirmar.

chmod -R u=rwX,go=rX /path/to/folder

Isso define as permissões de arquivo como "-rw-r - r--" e os diretórios como "drwxr-xr-x" (a opção "X" significa adicionar permissões de execução, se apropriado).

Ok, agora as permissões posix estão todas limpas, mas o OS X tem dois tipos de permissões de arquivo: posix (a parte "-rw-r - r - @ 1 hhrutz 757317411") e listas de controle de acesso "0: user: hhrutz allow ...") e a parte da ACL ainda está uma bagunça. Para limpar isso, use:

chmod -R -N /path/to/folder

Isso apenas removerá todas as ACLs dos arquivos e pastas.

    
por 09.01.2014 / 17:21
0

Supondo que você ainda tem direitos para alterar as permissões de arquivo, use o sinal -R com chmod para alterar de forma recursiva as permissões de arquivo. Por exemplo, para alterar todas as permissões na pasta \Users\Test\Desktop\PATH para serem lidas, gravadas e executadas para todos, podemos usar:

chmod -R 777 /Users/Test/Desktop/PATH

O "777" significa ler, escrever e executar para todos os usuários. Para alterar as permissões para outra coisa, leia as informações sobre a notação das permissões do sistema de arquivos octal / numérico (se você não estiver familiarizado com elas) em link .

    
por 09.01.2014 / 01:27
0

Uma solução bastante estúpida é fazer um cp -r para duplicar a pasta, isso limpa todos os usuários errados. Então, depois, você precisa encontrar os arquivos que não têm permissão e chamar chmod a+r neles.

Editar : Ok, o seguinte mostra todos os usuários:

$ ls -le interplay_l8.jpg 
-rw-r--r--@ 1 hhrutz  757317411  283266  7 Feb  2011 interplay_l8.jpg
 0: user:hhrutz allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity
 1: group:everyone allow read,readattr,readextattr,readsecurity
 2: user:hhrutz allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity
 3: group:everyone allow read,readattr,readextattr,readsecurity

Isso foi depois que eu fiz chmod u+rw . A utilização do sinal n mostra os usuários numericamente:

$ ls -len interplay_l8.jpg 
-rw-r--r--@ 1 1622704362  757317411  283266  7 Feb  2011 interplay_l8.jpg
 0: 60B880EA-8F35-47F9-B64B-5384CBA15697 allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity
 1: ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C allow read,readattr,readextattr,readsecurity
 2: 60B880EA-8F35-47F9-B64B-5384CBA15697 allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity
 3: ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C allow read,readattr,readextattr,readsecurity

Portanto, existem várias entradas para exatamente o mesmo usuário ...

    
por 09.01.2014 / 01:11