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 s
o 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 nfs
usuário.
Tentei umask e acl, ambos sem sucesso.
Eu criei o homedir para o usuário nfs e coloquei umask 002
nele 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.service
e adicioná-la UMask=002
na [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.