我们在桌面上使用 ubuntu linux 并进行 ldap 身份验证。在服务器和客户端上,我们都拥有相同的用户和组。
我已经设置了具有公共共享的 nfs 服务器,所有具有写入权限的用户都可以访问它。例如,一个用户创建的文件,其他用户默认可以删除此文件。
我有以下要求:
- 我不想更改客户端机器上的默认 umask (0022)。
- 当服务器上的文件发生变化时,我不想使用 inotify 来更改权限,因为它会减慢 nfs 共享的网络访问速度并且不稳定。
如何重现:
我使用默认 acl 创建初始文件夹,文件夹权限如下目录归集团所有在办公室
$ setfacl -m default:g:inoffice:rwx directory/
$ setfacl -m g:inoffice:rwx directory/
$ getfacl directory/
# file: directory/
# owner: root
# group: root
user::rwx
group::r-x
group:inoffice:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:inoffice:rwx
default:mask::rwx
default:other::r-x
理论上:1. 该目录必须对组中的用户具有可写权限在办公室. 2. 所有新文件和目录都继承group:inoffice:rwx
权限
假设我们有两个用户(客户):
user1 with primary group __USERS__ and supplementary group inoffice
user2 with primary group __USERS__ and supplementary group inoffice
假设 user1 进入 nfs 文件夹目录在自己的机器上创建名为“folder_user1”的文件夹
getfacl folder_user1
# file: folder_user1
# owner: user1
# group: user1_group
user::rwx
group::r-x
group:inoffice:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:inoffice:rwx
default:mask::rwx
default:other::r-x
然后 user2 可以删除此文件夹,因为有default:group:inoffice:rwx
权限
但如果用户 1 将目录复制(而不是创建)到目录. 产生的权限将是:
$ getfacl folder_copied_by_user1
# file: folder_copied_by_user1
# owner: user1
# group: user1_group
user::rwx
group::r-x
group:inoffice:rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:inoffice:rwx
default:mask::rwx
default:other::r-x
我知道在 Linux 中复制和创建文件时 open 方法调用的区别。我还知道在创建文件操作后应用的 umask。
就我而言,我找不到使用 nfs 协议在网络上共享文件的解决方案。
帮我找到解决方法。
答案1
我找到了一个简单的解决方法文章。
如果我们为每个用户使用单独的主组,则可以使用 umask = 002。这样组的权限就不会被 umask 切断。我们可以使用 setgid 或 acl 设置权限。
但是,建议的解决方案使用户管理(即创建和删除)变得复杂。作为 LDAP 管理员,您需要为所有 ldap 用户创建一个主要组。删除不需要的用户时,请删除主要用户的组。
此外,我想指出的是:
由于从 zentyal 迁移到 openldap,我使用相同的核心组(用户) 适用于所有新创建的用户。
一方面,它简化了用户的管理,另一方面并没有为他们解决共享文件夹的问题。