我在我的 Ubuntu 服务器上运行一个 vsftpd FTP 服务器,但是当我设置我的 Netbeans Web 项目以向其上传文件时,它会将所有者和组更改为karel:karel
,这非常糟糕,因为www-data
用户现在无法读取文件并且 Web 服务器停止工作。
我使用我的 Ubuntu 帐户“karel”登录 FTP 服务器,并local_enable
启用。我正在从 Windows 10 计算机运行 Netbeans 项目。
是否有设置可以禁用文件上传时所有者和组更改?我需要保留它karel:www-data
。我已阅读这个问题但是所有答案,包括使用设置local_umask
,都只谈论更改文件权限,我的问题是更改它的组。
chown_username
是供匿名用户上传的,我不想要。karel
如果有帮助的话,我可以删除用户组,我不需要它做任何事情。
另一个解决方案是允许所有人读取文件,无论如何它只是一个只有我才能访问的虚拟机,但我宁愿以正确的方式执行此操作,而不是在上传后更改文件组。例如,WinSCP 不会在上传时更改文件组。
答案1
我没有使用过 Netbeans。但如果回答到Netbeans php插件使用FTP上传文件时如何控制文件权限是相关的,那么我相信你需要检查:
直接上传文件(不使用临时文件)
取消选中此选项时,将创建一个具有默认所有权的新文件。而选中此选项时,将覆盖具有现有所有权的现有文件。这相当于 WinSCP 行为。
缺点是,您的网站可能会在上传期间停止工作。
答案2
据我所知,有两个有趣的设置vsftpd 配置:
file_open_mode
The permissions with which uploaded files are created.
Umasks are applied on top of this value. You may wish to
change to 0777 if you want uploaded files to be executable.
Default: 0666
local_umask
The value that the umask for file creation is set to for local users.
NOTE! If you want to specify octal values, remember the "0" prefix
otherwise the value will be treated as a base 10 integer!
Default: 077
因此您可以:
- 将文件设置为全球可读,您的服务器无需更改即可使用它们
- 将文件设置为组可读,然后执行以下操作之一:
- 将服务器 ID 添加到“karel”组
- 将自己放入
www-data
组中(Unix/Linux 中没有任何内容要求您的默认组必须与您的 id 相同,并且如果您的karel
id 在服务器上的主要目的是管理服务器,那么将其放入 www-data 组是有意义的)。
请注意,在 2020 年,在您和服务器之间共享 Git 存储库,并在给定分支上发生操作时使用 Git 钩子在服务器上部署代码已成为一种常见做法。