我正在尝试在 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-restricted
AUR 包不适合您(请注意,我不知道他们使用的方法),我可以想到两种方法:
(读到最后了解在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
),以便任何人(最好是在一个组中,可能是 groupskype
)都可以将其称为 userskype
。我不知道细节,我只知道这是可以做到的。
更改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是一个很好的资源。