it-swarm.cn

如何设置软件中心为非root用户安装软件?

如何设置软件中心以允许非root用户从Ubuntu存储库安装内容,而无需输入密码?

我完全了解安全隐患,并且愿意冒险。 Fedora 12附带了这样的东西。 (我相信通过修改PolicyKit配置)

47
snostorm

您可以修改PolicyKit权限,以允许用户访问Software Center使用的aptdaemon后端。

dpkg --listfiles aptdaemon显示/usr/share/polkit-1/actions/org.debian.apt.policy是指定aptdaemon后端可能执行的操作的文件。

在该文件中,< action id="">标记指定了可能的操作。您可能希望org.debian.apt.install-packages允许用户从存档中安装新软件包,而org.debian.apt.update-cache允许用户更新软件包列表。

请参阅man pklocalauthority,该文档说明了如何对PolicyKit操作设置本地权限。将以下内容放在/etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla中,将允许任何登录到本地计算机的用户在键入自己的密码后安装软件包(即使他们不在admin组中),并且无需输入任何密码即可更新软件包缓存。

[Untrusted Install]
Action=org.debian.apt.install-or-remove-packages
ResultyAny=no
ResultInactive=no
ResultActive=auth_self

[Untrusted Update]
Action=org.debian.apt.update-cache
ResultAny=no
ResultInactive=no
ResultActive=yes
36
RAOF

我认为目前无法通过GUI进行操作,但是以下操作应该可以工作,尽管有点麻烦。 YMMV。

将以下行添加到/ etc/sudoers中(使用Sudo visudo编辑文件):

%packageinstallers ALL = NOPASSWD: /usr/bin/software-center /usr/bin/apt-get

然后,您只需要创建特定用户并将其添加到packageinstallers组:

$ Sudo addgroup packageinstallers
$ Sudo adduser jdoe packageinstallers

现在jdoe可以执行以下操作:

$ Sudo apt-get install <some-package>

并且您可以编辑软件中心的桌面菜单项,以使其在software-center之前调用gksudo

PolicyKit 可能允许您在没有Sudo的情况下执行此操作,但是这超出了我的理解。

10
lfaraone

如果您只需要通用许可来允许/禁止安装软件包,请使用PolicyKit。

不幸的是,PolicyKit无法很好地控制要安装的软件包。如果您要授予用户仅安装受限应用程序集的权限,则应使用Sudo并安装类似软件通道的内容...

我也正在寻找类似的东西,但是由于找不到任何东西,我将这个简单的解决方案编码为“ softwarechannels”, 在GitHub上可用

这是一个非常简单的系统,允许普通(非管理员)用户从受限制的目录中安装软件包。

只需在一个简单的文本文件中定义“通道”(软件包组),并向您的用户授予启动软件通道的权限。

他们将仅在与其unix组匹配的频道中看到软件包。

5
Alfonso E.M.

RAOF的答案 仅适用于Ubuntu。 Kubuntu使用QAptWorker作为后端(在Natty和Oneiric中观察到)。要允许非root用户安装,请创建/etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pkla,其中包含:

[Update Software Sources]
Action=org.kubuntu.qaptworker.updateCache
ResultAny=no
ResultInactive=no
ResultActive=yes

[Install Software]
Action=org.kubuntu.qaptworker.commitChanges
ResultAny=no
ResultInactive=no
ResultActive=auth_self

我想允许一些非管理员用户安装软件,而不直接授予Sudo访问权限。这是通过在两个配置组中插入下一行来完成的:

Identity=unix-user:some-non-admin-user

如果必须授予一个组权限,请使用unix-group而不是unix-user

5
Lekensteyn