这是我发现的一个特定配置这里。
我有两个用户共享一个公共文件夹:
$ ls /home
> drwsrws--- root my-group ... common
> drwxr-xr-x diego diego ... diego
> drwxr-xr-x diego2 diego2 ... diego2
该公用文件夹归一个组所有my-group
,两个用户都已添加到该组。
如果我以用户身份登录diego
,我就可以写入和编辑common
文件夹中的文件。
但如果我使用diego2
,我必须使用sudo
才能编写和编辑它。
root
我相信这与该文件夹的所有者以及指定的根有关diego
......这存在吗?
我怎样才能以 身份写入和编辑common
文件夹中的文件diego2
?
FWIW:我创建这种配置的原因是为了能够登录到不同的桌面会话plasma
,而gnome
不必共享所有设置。公用文件夹是我工作的地方(除非这是一台个人电脑,所以是编码项目),并且链接到每个文件夹中的相应文件夹。
答案1
Linux 会忽略目录中的 setuid,并使用 setgid 来设置在其中创建的文件的组。因此,当diego
在 中创建文件时common
,该文件归用户diego
和组所有my-group
。但是,用户的 umask 决定了初始权限所创建文件的权限是,并且默认只授予所有者写入权限。这意味着diego2
将无法修改这些文件。
您的选择是:
- 更改现有文件的权限以添加组的写权限和将两者的 umask 设置为,
0002
以便两个用户都可以创建组可写文件,这将影响全部他们创建的文件。这可能不是您想要做的。或者, common
使用 ACL 为目录(以及其中的现有文件和目录)添加默认权限,以允许对其进行访问diego
和diego2
写入。(请参阅这个 U&L 答案。
答案2
解决方案是确保文件夹内的子文件夹common
都属于my-group
一个组。
对于现有子文件夹:
$ chown -R diego:my-group /home/common
对于新的:
$ setguid g+sx /home/common/each-subfolder
=D