Linux

允許非root使用者更改自己文件的組

  • April 10, 2019

我家中的伺服器使用 rsync 將文件備份到我的 VPS,但我在為上傳的文件設置組屬性時遇到問題。因為 rsync 將數據上傳到也可以從我的 FTP 使用者訪問的文件夾中,所以我需要他們擁有 ftpgroup 組,否則我無法通過 FTP 下載或修改文件。

我的 rsync 看起來像這樣:

rsync -rtuvz --chmod=770 --owner --group --chown=user:ftpgroup /var/ftp/user@home.domain.com/files/rsync_backup/ user@domain.com:"/var/ftp/user@domain.com/files/rsync_backup/"

rsync 工具的 –chown 標誌不會更改任何內容,文件始終具有上傳文件的使用者組。

我嘗試通過 SSH 設置組屬性,但顯然只有 root 使用者可以使用 chown 和 chgrp,但我不想編輯 sudoers 文件並授予使用者對 chown 的完全訪問權限,這顯然是一個安全隱患。

有沒有辦法授予使用者僅針對他擁有的文件更改組的權限?

chown(2)

只有特權程序(Linux:具有 CAP_CHOWN 能力的程序)可以更改文件的所有者。文件的所有者可以將文件的組更改為該所有者所屬的任何組

如果user不是組的一部分ftpgroup,則user不能更改為文件或目錄的組ftpgroup。要解決此問題,您可以通過執行添加user到組中ftpgroup

usermod -a -G ftpgroup user

在伺服器上以 root 身份。

或者,如果/var/ftp/user@domain.com/files/rsync_backup/預計只包含 group 擁有的文件,那麼您可以更改to的ftpgroup所有權並設置目錄上的位/var/ftp/user@domain.com/files/rsync_backup/``ftpgroup``setgid

chown :ftpgroup /var/ftp/user@domain.com/files/rsync_backup/
chmod g+s /var/ftp/user@domain.com/files/rsync_backup/

目錄上的setgid位會導致該目錄中所有新創建的文件都擁有該目錄的組所有權,並且與目錄類似,但也會setgid在它們上設置位。如果其中有任何現有文件和目錄,/var/ftp/user@domain.com/files/rsync_backup/則必須手動更改所有權並設置setgid目錄上的位。

引用自:https://unix.stackexchange.com/questions/511642