Altera automaticamente a permissão do arquivo ao gravar em uma pasta

2

Como posso criar diretórios assim:

/data
/data/user1
/data/user2

e certifique-se de que sempre que root escrever dentro deles, dependendo do diretório em que ele grava, diferentes proprietários sejam configurados.

Exemplo:

  1. Root escreve para / data - > criação normal de arquivos
  2. A raiz escreve para / data / user1 - > quaisquer arquivos criados nele são automaticamente pertencentes ao usuário1 e podem ser lidos por outros (o mesmo deve ser aplicado se o usuário1 gravar no próprio diretório)
por Robottinosino 18.10.2012 / 04:12

4 respostas

2

O script abaixo pode ser bastante perigoso e apenas monitorar novos arquivos criados em ${DIR} , o proprietário de qualquer arquivo criado será alterado para ${OWNER} e a permissão de leitura global.

Use a seu próprio risco ...

#!/bin/bash

DIR="$PWD/user1"
OWNER="user1"

inotifywait -m --format "%e %f" "$DIR" | awk '$1 ~ "CREATE" { print $2; fflush() }' | 
while read file
do
    FILE="${DIR}"/"${file}"
    echo "Changin permission for ${FILE}"
    chown user1 "${FILE}"
    chmod o+r "${FILE}"
done

Seria mais seguro se você escrevesse um driver fs e montasse.

    
por 18.10.2012 / 04:51
2

Você pode obter algo próximo do que deseja usando o bit SGID nos diretórios. Se você correr

chmod g+s /data/user1

Em seguida, qualquer arquivo ou diretório criado nesse diretório terá a propriedade do grupo definida como o mesmo grupo do diretório em si. Não consegue exatamente o que você quer, mas faz com que você faça parte do caminho.

Outra maneira de fazer isso é usar o POSIX acls e definir os acls padrão nos diretórios. As acls padrão serão herdadas pelos arquivos criados nos diretórios. Eles não alteram a propriedade, mas oferecem uma maneira de fornecer acesso de leitura, gravação ou execução a grupos arbitrários além dos três grupos básicos de arquivos padrão de arquivos.

    
por 18.10.2012 / 08:11
1

bindfs pode fazer o truque para você

cd /data
chown user1:user1 user1
bindfs --create-for-user=user1 --create-for-group=user1 --create-with-perms=go+rD user1 user1

Veja o resto da página man bindfs para mais coisas como as políticas chown / chmod.

    
por 18.10.2012 / 09:18
0

Você não pode.

Isso é um trabalho para qualquer um:

  1. cron & chown
  2. inotify & alguns scripts do seu lado.

Pessoalmente, eu iria com inotify. O script acima é um bom ponto de partida.

    
por 18.10.2012 / 04:52