我正在使用 Nautilus 通过“连接到服务器”在 Ubuntu 16.04 上安装远程 Linux 文件系统
sftp:myusername@myhost/home/myusername/scripts/myfile.ext
该文件myusername:groupA
在远程服务器上拥有所有权。
当我使用 Gedit 或其他编辑器远程编辑并保存文件时,它会将服务器上的所有权更改为myusername:myusername
它不尊重最初的团体所有权。
有没有什么办法可以改变这种行为?
编辑:
当我在 Nautilus 中右键单击该文件时,它显示组 ID 是 115。我查找了该名称...
getent group 115 | cut -d: -f1
并返回whoopsie
。
这让我相信这是某种错误。也许 Ubuntu 无法识别远程组名?
编辑:
groupA
本地和远程机器上都有这个组名,但是组 ID 不同。我想知道这是否是问题所在。
答案1
请留意以下事项。
- 任何新文件都将使用默认的 umask 022
- 任何新文件都将归创建者用户及其主要组所有。
- 从 SFTP 修改的文件不会在服务器上修改,但在打开时会在 RAM 中生成副本,然后在保存时覆盖该文件。这与删除文件然后创建新文件相同。
解决方案:
解决方案可能不止一个,但最简单的方法是使用 ACL。从服务器(例如通过 ssh),首先检查您是否可以使用 acl 命令。
apt install acl
您可能需要检查您的文件系统是否已使用 ACL 挂载(这是一段时间以来的默认设置)。将 / 替换为您的文件夹的适当挂载位置。
mount -o remount,acl /
注意:您可能需要更改 /etc/fstab 以使其永久生效。
最后,您必须更改要保存文件的文件夹的默认 ACL。请注意,在此文件夹中创建的任何新文件都将获得此新权限。
setfacl -d -m g:group:rwx /your/folder
将 group 替换为所需的“组”,将“/your/folder”替换为将存储文件的文件夹。如果您不需要可执行权限,也可以调整 rwx(在这种情况下,仅使用 rw)。