允许非 root 用户更改其自己的文件的组

允许非 root 用户更改其自己的文件的组

我家里的服务器使用 rsync 将文件备份到我的 VPS,但我在设置上传文件的组属性时遇到问题。因为 rsync 将数据上传到一个也可以从我的 FTP 用户访问的文件夹,所以我需要它们具有 ftpgroup 组,否则我无法通过 FTP 下载或修改文件。

我的 rsync 看起来像这样:

rsync -rtuvz --chmod=770 --owner --group --chown=user:ftpgroup /var/ftp/[email protected]/files/rsync_backup/ [email protected]:"/var/ftp/[email protected]/files/rsync_backup/"

rsync 工具的 --chown 标志不会改变任何内容,文件始终具有上传文件的用户组。

我尝试通过 SSH 设置组属性,但显然只有 root 用户可以使用 chown 和 chgrp,但我不想编辑 sudoers 文件并授予用户对 chown 的完全访问权限,这显然是一个安全隐患。

有没有办法授予用户仅更改其拥有的文件的组的权限?

答案1

chown(2)

只有特权进程(Linux:具有 CAP_CHOWN 功能的进程)可以更改文件的所有者。文件的所有者可以将文件的组更改为该所有者所属的任何组

如果user不是组的一部分ftpgroup,则user无法更改组中的文件或目录ftpgroup。要解决此问题,您可以通过运行添加user到组中ftpgroup

usermod -a -G ftpgroup user

以 root 身份在服务器上。

或者,如果预计只包含组拥有的文件,那么您可以将所有权更改为并设置目录的位/var/ftp/[email protected]/files/rsync_backup/ftpgroup/var/ftp/[email protected]/files/rsync_backup/ftpgroupsetgid

chown :ftpgroup /var/ftp/[email protected]/files/rsync_backup/
chmod g+s /var/ftp/[email protected]/files/rsync_backup/

目录上的位setgid会导致该目录中所有新创建的文件都具有该目录的组所有权,与目录类似,但也会setgid在它们上设置位。如果其中存在任何现有文件和目录,您将必须手动更改所有权并设置目录上的位。/var/ftp/[email protected]/files/rsync_backup/setgid

相关内容