O Samba tende a forçar sua própria idéia de permissões e propriedades em arquivos para que imite mais de perto o estilo NTFS (hierárquico) de permissões.
Se você estender sua definição do Samba para incluir as diretivas force user
e force group
, poderá garantir que todos os arquivos criados no compartilhamento (por meio do Samba) terão o proprietário e o grupo especificados.
[MEDIA]
read only = no
locking = yes
path = /mnt/local/int001/MEDIA
guest ok = yes
create mask = 0664
directory mask = 0775
force user = Bob
force group = SharedFiles
Você não pode implementar a mesma coisa diretamente com usuários locais, porque não é possível que um usuário crie um arquivo de propriedade de outra pessoa. É aqui que inotifywait
pode ajudar. Configure-o na inicialização para monitorar a hierarquia de diretórios e alterar a propriedade de qualquer arquivo recém-criado:
cd /mnt/local/int001/MEDIA || exit
inotifywait --monitor --recursive --event create --format '%w%f' . |
while IFS= read -r file
do
if [[ -f "$file" || -d "$file" ]] && [[ ! -h "$file" ]]
then
chown Bob:SharedFiles "$file"
chmod u+rw,go=u,o-w "$file"
fi
done
Com esta solução inotifywait
, você não precisa das ACLs do sistema de arquivos.
Pessoalmente, não estou convencido de que você realmente precise alterar a propriedade de arquivos. As ACLs que você especificou (e o force group
correspondente no Samba) garantirão que todos os usuários da árvore de diretórios possam acessar os arquivos e diretórios dentro. Há uma boa razão para usuários comuns serem negados chown
.