A página nfsd
man afirma:
nfsd bases its access control to files on the server machine on the
uid and gid provided in each NFS RPC request. The normal behavior a
user would expect is that she can access her files on the server just
as she would on a normal file system. This requires that the same
uids and gids are used on the client and the server machine.
Infelizmente, o NFS não pode mapear usuários (exceto para anonymous / nobody com opções root_squash
/ all_squash
, isto é).
Eu vejo duas maneiras possíveis de contornar este problema:
1) Crie um grupo NIS com GID 16777222 e adicione os usuários do NIS que precisam acessar o sistema de arquivos NFS para esse grupo NIS.
2) Ou, se o GID do grupo NIS não estiver em uso no servidor NFS e o NFS suportar ACLs, você poderá usar ACLs para fornecer o acesso solicitado ao grupo NIS (suponho que o acesso readwrite, para leitura) apenas o acesso soltar o 'w' em setfacl
abaixo). Assumindo um diretório chamado "software", faça isso no servidor NFS:
# Back up current ACLs to /tmp/acls
getfacl -R -p --access /full/path/to/software > /tmp/acls
# Set default ACL rwx for new created directories
find /full/path/to/software -type d -exec setfacl -m d:g:<gid nis group>:rwx {} \;
# Set ACL rwx recursively in existing directories
find /full/path/to/software -type d -exec setfacl -m g:<gid nis group>:rwx {} \;
# Set ACL rwx recursively in existing files
find /full/path/to/software ! -type d -exec setfacl -m g:<gid nis group>:rw {} \;
[Eu recomendo que você teste o procedimento acima primeiro. Crie um diretório, defina ACLs, exporte e teste.]
<gid nis group>
é o GID do grupo NIS. Você não precisa adicionar o GID do NIS a /etc/groups
no servidor NFS. Obviamente, se não for adicionado, você deve especificar o GID acima como um valor numérico.
Observe que setfacl
também pode aplicar ACLs recursivamente com a opção -R. Eu prefiro usar find
e especificamente setar rwx para diretórios e rw para arquivos.
Se algo der errado:
# Flush ACLs
setfacl -R -b /full/path/to/software
# Restore ACLs
setfacl --restore=/tmp/acls