Deixe um processo ler e gravar todos os arquivos dentro de um determinado diretório, a qualquer profundidade

3

Eu tenho um diretório pertencente a mim (por exemplo, /sync ) e um processo executado por mim, que eu quero ter acesso completo de leitura e gravação a esse diretório (no meu caso, o processo é Resilio Sync, anteriormente conhecido como BitTorrent Sync). Todos os arquivos neste diretório são projetos e documentos pessoais. 99% deles são de minha propriedade, mas às vezes, por motivos inevitáveis, alguns diretórios e arquivos são criados pelo root. Como eu iria de alguma forma deixar o processo alterar, mover e / ou excluir tais diretórios e arquivos?

Eu tentei uma combinação de bits fixos (definindo g+s em /sync , para que todos os arquivos herdam o grupo) e regras de ACL personalizadas (para tentar que os bits adesivos sejam propagados automaticamente para diretórios recém-criados), mas, como descrito em esta resposta e seus comentários , não pode ser feito sem inotify (que eu gostaria de evitar pela simplicidade).

No entanto, eu estava pensando, talvez haja alguma outra maneira de fazer isso? Como dar um determinado processo mais poder em um determinado diretório e tudo nele, ignorando todas as permissões de arquivo? E se isso for possível, existem implicações de segurança que eu teria que procurar?

    
por Olegs Jeremejevs 18.11.2016 / 17:32

1 resposta

3

Eu não acho que esse objetivo requer bits pegajosos. Digamos que o processo esteja sendo executado como usuário, resilio , e sua conta de usuário seja olegs . (Eu vejo que é a sua conta executando o processo; eu adiciono isso por causa da demonstração.)

# Change all ownership to root:root
chown -R root:root /sync

# Make sure only root (and group members of root) can get a directory listing.
chmod 0750 /sync

# Now, let's augment standard permissions with ACLs.

# Set default masks for all new file system objects in /sync.
# (The root user already has permission.)
setfacl -d -m u:resilio:7 /sync
setfacl -d -m u:olegs:7 /sync

# Apply a mask to all existing files (and dirs) to give full control
# to the directory contents to olegs and resilio.

setfacl -m -R u:resilio:7 /sync
setfacl -m -R u:olegs:7 /sync

Agora, esses usuários têm controle total sobre o diretório: root , olegs e resilio . Caso contrário, nenhum outro usuário poderá ver o conteúdo do diretório /sync . Embora as máscaras especifiquem 7 (leitura / gravação / execução), os diretórios se tornam rwx e os arquivos se tornam efetivamente 6 (leitura / gravação).

    
por 18.11.2016 / 17:56