Snapshot

btrbk:使用 btrfs-progs-btrbk 後端進行權限分離。為什麼是更新檔集而不是單個腳本?

  • May 18, 2021

btrbk是一個btrfs使用快照和發送/接收自動備份的腳本。它有一個“後端” btrfs-progs-btrbk,它是一個更新檔集,btrfs-progs用於創建單個二進製文件,例如。btrfs-subvolume-show, btrfs-subvolume-list, 等等。這些二進製文件的重點是允許使用capabilities(7) 進行權限分離,因此btrfs當 btrbk 作為 cron 腳本執行時,它本身不需要被賦予 root 權限,只需幾個子命令。

我很困惑為什麼要使用更新檔集,而不是簡單地為每個命令提供一系列腳本。畢竟,btrbk它本身就是一個珍珠腳本。有沒有人有任何見解?

好吧,這是一個安全問題。 引用btrbk的作者的話,

…在腳本上啟用 setcap 是個壞主意(你真的不想設置你的 shell 解釋器,我認為這在大多數係統上甚至是不可能的),你需要設置“可繼承”功能(7)位.

他試圖讓他的更新檔在上游合併,但到目前為止運氣不佳。

你認為btrfs-subvolume-show從哪裡來?重建 btrfs-progs 就這樣分裂了。從 Perl 腳本神奇地將一個單一的 C 程序重構為多個是不切實際的。

將該 repo 與它自己的早期版本進行比較,例如 tag 5.1。請注意對“分離”的 Makefile 目標的更改,註釋哪些函式進入哪些二進製文件的元數據,以及一堆 #ifdefs 以使其成為可選。我不知道這裡的歷史,但是這個聰明的更新檔集可能需要一段時間才能被上游接受。

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