Como configurar o NFS para definir permissões 775 para todos os novos arquivos/diretórios?

Como configurar o NFS para definir permissões 775 para todos os novos arquivos/diretórios?

Eu tenho um servidor rodando Ubuntu 18.04 com configuração NFS. Tenho alguns serviços que colocam/manipulam arquivos nesse compartilhamento, bem como outros clientes que o acessam pela rede. Quero que o servidor NFS defina as permissões padrão em todos os novos arquivos/pastas para 775.

Eu configurei so sinalizador na pasta para que todos os novos arquivos e pastas criados herdem o mesmo grupo, para que todos os usuários desse grupo possam criar e modificar arquivos nessa pasta. Mas não consigo forçar o NFS a fazer isso. Ele criou apenas novos arquivos com 644 e pastas com 2755.

Aqui está o meu/etc/exports/

/srv/nfs                192.168.11.0/24(ro,fsid=0,no_subtree_check,)
/srv/nfs/lpt-2tb        192.168.1.0/24(rw,sync,all_squash,no_subtree_check,insecure,anonuid=1002,anongid=1002)

1002 é um ID do nfsusuário.

Tentei umask e acl, ambos sem sucesso.

Eu criei o homedir para o usuário nfs e coloquei umask 002nele o arquivo ~/.profile.

Eu tentei configurar acl na pasta de compartilhamento

/srv/nfs/lpt-2tb$ sudo setfacl -d --set u::rwx,g::rwx,o::r-x .
/srv/nfs/lpt-2tb$ sudo setfacl -R -m u::rwx,g::rwx .

/srv/nfs/lpt-2tb$ sudo getfacl .
# file: .
# owner: nfs
# group: nfs
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

Eu tentei modificar a configuração do servidor nfs localizada em /lib/systemd/system/nfs-server.servicee adicioná-la UMask=002na [Service]seção. Isso funcionou para alguns outros serviços que eu mesmo criei, mas não para o NFS.

Eu reinicio o serviço NFS e até reinicio depois de todas essas modificações, ainda assim, quando copio o arquivo para um compartilhamento do meu laptop ele tem 644 permissões

drwxr-sr-x+ 2 nfs nfs      4096 Apr  5 20:34  acl2
-rw-r--r--  1 nfs nfs    434506 Mar  7 21:31  acl_test.png

---EDITAR---

Aqui estão a saída acl para arquivo e pasta

/srv/nfs/lpt-2tb$ sudo getfacl acl_test.png
# file: acl_test.png
# owner: nfs_share
# group: kodi
user::rw-
group::r--
other::r--

/srv/nfs/lpt-2tb$ sudo getfacl acl2
# file: acl2
# owner: nfs_share
# group: kodi
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

---UPD---

Verifiquei que meu servidor está executando o nfs v2-3-4, mas meu cliente se conecta via v3 e não consigo substituí-lo. Tentarei verificar se a v4 corrige quando conseguir fazê-la funcionar.

Desisti de encontrar uma solução limpa por enquanto e farei apenas um cron job que verificará e corrigirá a permissão periodicamente.

Responder1

Primeiro, as coisas que você está tentando com umask não funcionarão. umask é algo por processo, e o processo que importa é o processo de criação do arquivo. O umask do usuário nfs no servidor NFS (se é isso que você quis dizer) não importará quando os arquivos estiverem sendo criados pelo usuário nfs em um cliente NFS, e o umask do próprio serviço do servidor NFS não deveria afetar qualquer coisa.

A seguir, você menciona que está obtendo permissões erradas ao copiar um arquivo para o compartilhamento NFS. Supondo que você queira dizer literalmente copiar, como no comando "cp", não é um teste válido. O comando cp tem vários comportamentos especiais quando se trata de permissões - ao contrário da maioria dos programas, ele não simplesmente cria um arquivo e deixa as permissões padrão permanecerem, na verdade ele volta depois e altera as permissões nele. Aqui está um lugar onde isso foi discutido no passado:

https://serverfault.com/questions/183800/why-does-cp-not-respect-acls

Eu uso o comando “touch” para criar arquivos para esse tipo de teste. Experimente e você descobrirá que sua configuração de ACL já funciona bem, é apenas o comando cp que não respeita as coisas.

informação relacionada