osx remoção de permissão do servidor

1

Eu gerencio um servidor Mac Mini OS X 10.8.5 Server 2.2.2. usado como um compartilhamento de arquivo para parceiros atribuídos para carregar arquivos de vídeo para sua respectiva pasta no nível muito mais baixo do sistema de arquivos (acessado usando o Filezilla). Essas permissões de usuários precisam permanecer as mesmas e não devem exceder suas respectivas pastas e suas pastas filhas.

Os líderes do projeto precisam ter acesso a todos os arquivos, ler e escrever, por meio do Filezilla.

Atualmente, eles podem fazer isso, cada usuário tem permissões individuais para cada pasta. Eu criei um grupo 'access' que tem todas as permissões que o projeto precisa e o colocou no nível mais alto do sistema de arquivos necessário e aplicado a herança.

O problema que estou tendo é remover as permissões de usuários individuais do maior para o menor. Ao usar o comando 'propagar permissões' para aplicar a nova ACL, às vezes as permissões de leads do projeto são removidas de uma pasta filha, às vezes elas não são.

Como posso recursivamente remover permissões de usuários específicos para toda a estrutura de arquivos sem afetar o restante das permissões das pastas?

    
por Tom 29.04.2014 / 20:01

1 resposta

0

Veja o chmod -a para remover ACLs específicas

Do homem chmod

-a The -a mode is used to delete ACL entries. All entries exactly matching the supplied entry will be deleted. If the entry lists a subset of rights granted by an entry, only the rights listed are removed. Entries may also be deleted by index using the -a# mode.

-R tornaria a ação recursiva

ls -le filename listará as ACLs associadas ao nome do arquivo

Em teoria, você poderia fazer este script UNTESTED (eu acabei de escrevê-lo para você agora) para recapitular todos os arquivos e excluir as ACLs do usuário especificado

#!/bin/bash
OLDIFS=$IFS
IFS='
'
while read file
do
  for ACL in $(ls -led $file|tail -n+2|cut -d':' -f2,3)
  do
    if [ $ACL ] && [[ $ACL =~ YourUserName ]]; then
        echo ACL found: $ACL
        echo FILE found: $file
        echo "Removing ACL..."
        chmod -a "$(echo $ACL|cut -d':' -f2)" ${file}
    fi
  done
done < <(find / )
IFS=$OLDIFS

Isso pressupõe que YourUserName é o nome do funcionário cuja ACL você deseja revogar e que é o ponto no sistema de arquivos do qual você deseja recorrer, o que efetivamente faria todo o sistema de arquivos se você usar / a menos que adicione um argumento maxdepth para encontrar.

Atualizar , eu testei e está funcionando. Basta copiar o código em um arquivo e salvá-lo como aclchange.sh e colocá-lo na raiz do diretório que você deseja reciclar. mude o comando file para (find.) e YourUserName para o usuário cujas ACLs você deseja remover. Abra um terminal e cd / directory / onde / script_is então digite chmod + x ./aclchange.sh. Por último sudo ./aclchange.sh Ele irá executar e listar os arquivos e ACLs que estão sendo removidos desses arquivos.

    
por 29.04.2014 / 20:32