Arch 相當於 Debian `dpkg-divert`

Arch 相當於 Debian `dpkg-divert`

我正在嘗試在 Arch Linux 上配置 Skype 以使用沙盒用戶無論哪個用戶調用skype,但我不太喜歡按照 wiki 的建議使用 BASH 別名來啟動 Skype,因為據我所知,用戶是否未使用 BASH 或從skype.desktop沙盒用戶調用 Skype將不會被使用。我認為轉接/usr/bin/skype電話可能會更好

sudo -u skype /usr/bin/skype.real

skype.real實際的 Skype 二進位檔案在哪裡。我很確定在 Debian 中我可以這樣做

dpkg-divert --package skype --add --rename --divert /usr/sbin/skype.real /usr/sbin/skype

然後將我自己的文件加入/usr/sbin/skype.我該如何使用 Arch 來做到這一點?

答案1

如果正如我在評論中建議的那樣,skype-restrictedAUR 包不適合您(請注意,我不知道他們使用的方法),我可以想到兩種方法:

(讀到最後了解在 Arch 上應用它們的正確方法)

更改skype為運行真實 Skype 的腳本

建立一個 bash 腳本來呼叫您真正的 Skype:

#!/bin/sh
sudo -u skype /usr/bin/skype.real

授予它執行權限並將其另存為/usr/bin/skype,將舊的 Skype 二進位檔案重命名為/usr/bin/skype.real.

但這種方法有一些需要考慮的問題:

  • 如果您確實希望除了使用者之外沒有人呼叫 Skype(真正的)skype,您需要為該文件授予適當的權限:

    chown skype /usr/bin/skype.real
    chmod 0100 /usr/bin/skype.real
    

    這將避免除其所有者之外的任何人運行它

  • 為了讓任何人都可以運行skype(新的、腳本化的),您需要編輯 sudoers 檔案(使用visudo),以便任何人(最好是在一個群組中,可能是 group skype)都可以稱為 user skype。我不知道細節,我只知道這是可以做到的。

更改skype所有者並設定setuid

注意:這不是建議的方法,因為 setuid 可執行檔應設定為最小值

這可能是更清晰的可能性,可以設定該setuid位,以便任何調用的人skype將其稱為用戶skype

chown skype /usr/bin/skype
chmod u+s /usr/bin/skype

這將使該skype命令一如既往地可用,但它將始終以用戶身份運行skype


在上述任何一種情況下,每當您將 Skype 更新到較新版本時,您都需要重複此過程,因為pacman將取代二進位檔案。

解決方案是創建一個PKGBUILD下載官方套件、解壓縮並執行所需變更的程式。然後手動安裝它(就像安裝任何 AUR 套件一樣)。每當需要更新時,您都需要手動重新建置它。不過 Skype 更新沒那麼頻繁。

對於這最後一項任務,關於 PKGBUILD 的官方 wiki是一個很好的資源。

相關內容