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是一个很好的资源。

相关内容