Group + rx permissão apenas em diretórios usando o ACL?

1

Eu preciso instalar acl para configurar uma estrutura de permissão muito específica. Os membros do grupo devem poder ver os arquivos em um diretório e mudar para os subdiretórios. No entanto, eles não devem ter permissão para ler os arquivos!

Eu não sei como conseguir isso. O comando setfacl -m d:g:mygroup:rx fará parte do trabalho, mas todos os arquivos se tornarão legíveis. Então, eu preciso aplicar esta regra apenas para as pastas (drwxrwx---) , todo o resto deve estar inacessível (rw-------) .

    
por Hurrdurrfurr 26.08.2013 / 11:03

3 respostas

2

Você pode definir a ACL padrão para conceder a este grupo permissão de execução do executável (X), mas não de leitura.

setfacl -R -d -m group:mygroup:X .

Dessa forma, os arquivos recém-criados não serão legíveis por grupo, mas o grupo poderá percorrer os diretórios. No entanto, o grupo não poderá listar o conteúdo do diretório. Acho que é o mais próximo que você pode fazer com as ACLs do Solaris / Linux.

Como essa ACL é mais restritiva do que você deseja, é seguro aplicar essa ACL e, posteriormente, adicionar permissão de leitura aos diretórios. Você pode fazer isso automaticamente através do inotify , por exemplo com o seguinte incrontab:

/path/to/directory IN_CREATE /path/to/script $@

onde o script contém

#!/bin/sh
if [ -d "$1" ]; then setfacl -m group:mygroup:r -- "$1"; fi

Outra abordagem é criar uma visualização dessa árvore de diretórios com permissões diferentes, com bindfs . O Bindfs suporta diferentes permissões para diretórios e arquivos regulares.

bindfs -g mygroup -p gd=rx,gf= /path/to/original/root /path/to/mount/point
    
por 27.08.2013 / 01:40
0

Se você quiser que essas permissões sejam aplicadas a todos os arquivos / diretórios criados no futuro, use umask conforme sugerido no primeiro comentário da sua pergunta.

Se esta é uma atividade única - você já tem os diretórios e arquivos no lugar e deseja corrigir as permissões - você pode usar o comando find no diretório de nível superior:

# Give all permissions to all for the directories and    
# Revoke the permission for others    
find . -type d -exec chmod +rwx,o-rwx {} +    
# Unset all premissionas for all files and    
# Give read & write premission to the owners    
find . -type f -exec chmod -rwx,u+rw {} +    

Pode-se pensar em agendar esses comandos com cron , mas acho que não seria uma ótima ideia. Por exemplo, os não proprietários poderiam ler arquivos na janela de tempo até o próximo planejamento do trabalho cron .

    
por 26.08.2013 / 12:05
0

Você poderia resolver a solução de um ângulo ligeiramente diferente e usar algo como Incron ou Inoticoming (este último é uma ferramenta Debian que foi portada para muitas distribuições). Com ambos, você pode observar os diretórios e a permissão do arquivo de ação mudar em determinados eventos principais. De acordo com a incron, isso requer um kernel 2.6.13 ou mais recente com o inotify compilado. Ele aparece no ubuntu, debian e Fedora como pacotes, então é facilmente instalado (e parece que é portado para várias distros).

Existe um artigo interessante sobre como usar o incron do inotify em nixCraft

    
por 26.08.2013 / 15:53

Tags