通过 SSH 正确设置用户权限

通过 SSH 正确设置用户权限

我在 LAMP 堆栈上遇到用户权限问题(如果重要的话,使用 Digital Ocean)。这是我的设置。

用户dev有以下组: dev www-data

/var/www文件夹已设置所有者为www-data:www-data,如下所示:

 drwxrwxr-x  3 www-data www-data 4096 Mar 30 17:41 www

如果我使用dev用户通过 sftp 接入,一切看起来都很好,但如果我随后上传文件,新文件的所有权为dev:dev

当我有一个名为 的新用户dev2也在同一目录中工作时,这就会成为一个问题,因为他们无法删除或覆盖属于 的文件dev

不幸的是,我与用户打交道的经验仅限于使用 cPanel,在那里我可以创建多个 FTP 用户,而不存在此访问/重叠问题。我如何通过终端做到这一点?

答案1

目录上的位g+s将强制使用父目录组(BSD 样式),而不是默认的进程组(SysV 样式)。因此,类似

chmod g+s /var/www

(以及任何子目录)应该会导致www-data在创建新文件时保留该组。另一个选项可能是使用所谓的 POSIX acl(请参阅setfacl(1)),虽然更复杂,但可以允许多个组访问文件。(无论如何,您最终可能会使用一些 cron 作业来审核/设置权限,或者配置管理也可以在目录树上强制执行权限,这取决于您想要解决的麻烦程度。)

相关内容