允許非root使用者更改自己文件的組
我家中的伺服器使用 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
目錄上的位。