configurando permissão padrão para o diretório

2

Antes de qualquer um marcar essa pergunta como duplicada, gostaria de enfatizar que gostaria de saber algo extra ...

Eu encontrei uma maneira de define as permissões de arquivo padrão para todos os arquivos criados em um diretório

Se eu aplicar este procedimento a um diretório my_dir , todos os arquivos e subdiretórios que serão criados dentro de my_dir terão o correto permissão. Mas se eu criar um arquivo fora de my_dir e depois copiá-lo ou movê-lo dentro de my_dir , ele não terá a permissão definida em my_dir .

Então, eu gostaria de saber se há uma maneira de corrigir a permissão de um diretório e seu conteúdo para todos os arquivos que estão dentro desse diretório, não importa onde o arquivos foram criados.

A melhor solução seria aquela em que o usuário não tem nada de especial para fazer. Simples clique e arraste, copie, cp , mv ... mas nada a ver com chmod ou mais. Portanto, uma resposta como this não é realmente o que estou procurando, porque o usuário terá que fazer algo incomum sempre que quiser copiar ou mover um arquivo.

PS: a razão pela qual eu gostaria de fazer isso é porque eu compartilho algumas pastas com colegas que estão no mesmo grupo que eu. Eu quero que alguém nesse grupo tem o direito de wrx de qualquer arquivo contido nas pastas compartilhadas, mesmo arquivos foram criados fora da pasta.

    
por PinkFloyd 06.03.2015 / 11:17

3 respostas

2

Use os grupos de permissão de arquivo para seus usuários. Peça ao seu administrador para estabelecer um novo grupo em /etc/groups e adicione todos os usuários da equipe a esse grupo. Altere as definições de umask no perfil de shell do usuário para permitir o acesso de membros do mesmo grupo.

    
por 06.03.2015 / 12:00
0

Escreva scripts de wrapper para cp , mv , etc., que fazem o chmod após a cópia.

    
por 06.03.2015 / 11:51
0

Se as ACLs não forem suficientes, a solução de fallback será usar a inotify API. Isso permite que um programa observe eventos em um ou mais diretórios e atue neles.

Algo parecido com isto, envolto em um script que foi iniciado como root no momento da inicialização, o colocará no seu caminho:

TARGET_DIR='/path/to/directory'
inotifywait --monitor --recursive --quiet --event close_write,moved_to --format '%w/%f' "$TARGET_DIR" |
    while read FILE
    do
        chmod go=u,o-w "$FILE"
        # chown someone:somegroup "$FILE"
        logger -t inotify "Tickled $FILE"
    done
    
por 07.03.2015 / 00:51