我尝试向 Ubuntu 软件中心提交一个应用程序,但被拒绝了,因为你需要输入管理员密码才能使用它。我需要授予应用程序 root 权限才能运行,所以我使用了 sudo。但他们说我不能在我的应用程序中使用 sudo。我该如何授予它 root 权限?
答案1
您需要使用PolicyKit
API 来请求提升权限。一般来说,您只应在绝对必要时才这样做,并且不要一直以提升的权限运行应用程序。
值得注意的是,如果您在启动时只需要 root 权限,那么您可以并且应该以 root 身份启动,然后降为非特权用户。如果您以面向用户的程序运行,这可能意味着运行该程序的用户;如果这意味着守护进程(如httpd
或 )sshd
,它可能意味着专门为您的程序在其下运行而创建的极其锁定的用户。
此外,还有分别用于 GNOME 和 KDE 的图形前端sudo
。gksudo
如果kdsudo
有人推荐你使用这些,不。请注意,这些程序已被弃用,取而代之的是PolicyKit
,默认情况下不会安装,并且可能会导致您的应用程序被拒绝。
答案2
您的应用可能根本不被允许。根据 Ubuntu wiki,应用审查委员会将拒绝接触系统文件的应用程序:
您的应用程序似乎在操作过程中接触了系统文件,但是根据 extras.ubuntu.com 的安全策略,我们不允许应用程序这样做。对于这些应用程序,我们建议您按照https://wiki.ubuntu.com/UbuntuDevelopment/NewPackages用于将您的软件包提交给 Debian 或 Ubuntu。
清理应用程序将会接触系统文件。
虽然本指南仅适用于开源应用程序(专有应用程序的政策尚未公布),我想类似的规则也适用于专有应用程序。
如果你的应用程序是开源的,你仍然可以通过以下方式将其放入软件中心:打包并提交到主 Ubuntu 或 Debian 存储库。
答案3
您不需要 PolicyKit 或任何类似的东西。只需更改应用程序所有者和权限级别:
sudo chown root:root /path/to/app
sudo chmod 4755 /path/to/app
当然,您需要root权限才能执行这些命令。