Restaurando permissões de grupo perdidas no mac

3

Usando as péssimas funções de compartilhamento de arquivos do mac, consegui permissões de goof no diretório de documentos. Meus diretórios que não são documentos têm permissões como esta:

drwx------+ for .
drwxr-xr-x+ for ..
-rw-------@ for .DS_Store

drwxr-xr-x  for most folders
drwxr-xr-x@ for some folders

-rw-r--r--  for some files
-rw-r--r--@ for some files

Os diretórios Meus documentos têm permissões como esta:

drwx---r-x+ for .
drwx---r-x+ for ..
-rw----r--@ for .DS_Store

drwx---r-x+ for (all?) folders

-rw----r--@ for some files
-rw----r--+ for some files

Parece que tudo que deveria ter acesso de leitura de grupo está faltando. Eu percebo que chmod pode ajudar, e que tem uma opção recursiva -R, mas estou relutante em começar a experimentar e bagunçar as coisas mais. Em particular, não quero definir o grupo como lido em locais onde não deveria estar lá. Além disso, quero alterar apenas alguns bits, deixando os outros em paz.

Alguém pode fornecer conselhos sobre como consertar isso?

Não tenho certeza se é relevante, mas entrei nisso tentando permitir que outro usuário na mesma máquina tivesse acesso de leitura / gravação aos documentos do meu usuário principal. Ao compartilhar prefs, tentei adicionar a pasta Documentos à lista de pastas compartilhadas e definir a todos para ler (ou pelo menos ler), mas, no processo, acho que excluí o grupo "equipe", o que quer que seja.

    
por danh 15.02.2013 / 21:06

2 respostas

2

Em um piscar de olhos, você pode adicionar permissões de leitura / gravação em grupo inserindo o diretório Documentos e editando:

chmod -R g+rw *

Se você precisar corrigir a propriedade, faça o seguinte:

chown -R user.group *

[Obviamente, você substitui user e group por um nome de usuário e grupo real]

Agora você só precisa corrigir os diretórios.

find . -type d | replace ' ' '\ ' | xargs chmod g+x

A chamada acima localiza todos os diretórios e, em seguida, escapa os espaços com uma barra invertida (necessária para passar para xargs ) e adiciona permissões de execução de grupo a cada um. O comando replace faz parte do mysql. Se você não tem isso, você pode usar sed 's/ /\ /g'

Aviso de que minha distribuição no Linux é o Slackware. Eu esperaria que isso funcionasse no Mac, mas não posso testar. Você pode substituir xargs chmod g+x por echo | more se quiser fazer uma verificação de integridade.

Note que você pode canalizar a saída para o arquivo primeiro:

find . -type d | replace ' ' '\ ' > dirs.txt

Depois, você pode revisar esse arquivo e usar um editor de texto para remover todos os diretórios que não deseja alterar. Então, em vez das chamadas recursivas para chmod , você pode fazer:

cat dirs.txt | sed 's/$/\/*/' | xargs chmod g+rw
cat dirs.txt | xargs chmod +x

A chamada sed apenas substitui o final de cada linha com '/ *' para indicar todos os arquivos no diretório.

    
por 15.02.2013 / 21:39
0

Se bem me lembro, o atributo + após o padrão ls rwxrwxrwx sinaliza as ACLs. Eu tomaria cuidado porque o seu acesso de leitura em grupo pode fazer parte do esquema ACL.

    
por 15.02.2013 / 22:45