问题描述
如何设置软件中心以允许non-root用户从Ubuntu repos安装内容而无需输入密码?
我完全了解安全隐患,我愿意承担风险。 Fedora 12附带了这样的东西。 (通过修改PolicyKit配置,我相信)
最佳解决方法
您可以修改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
将允许登录到本地计算机的任何用户在键入自己的密码后安装软件包(即使他们不在管理组中)并更新软件包缓存而不键入任何密码。
[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
次佳解决方法
我不认为现在可以通过GUI这样做,但以下应该可以工作,虽然有点kludgy。因人而异。
将以下行添加到/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的情况下这样做,但是在这一点上我已经超出了我的理解。
第三种解决方法
RAOF’s answer仅适用于Ubuntu。 Kubuntu使用QAptWorker作为后端(观察Natty和Oneiric)。要允许non-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
我想允许一些non-admin用户安装软件,而不直接授予sudo访问权限。这是通过在两个配置组中插入下一行来完成的:
Identity=unix-user:some-non-admin-user
如果存在必须授予权限的组,请使用unix-group
而不是unix-user
。
第四种方法
如果您只需要允许/禁止软件包安装的通用权限,请转到PolicyKit。
不幸的是,PolicyKit无法很好地控制要安装的软件包。如果您希望授予用户仅安装一组受限应用程序的权限,则应使用sudo
并安装类似softwarechannels的内容……
我也找了类似的东西,但由于我没有找到任何东西,我编写了这个简单的解决方案”softwarechannels”,available here on GitHub
这是一个非常简单的系统,允许通用(non-admin)用户从受限制的目录中安装包。
只需在简单的文本文件中定义’channels'(包组),并授予用户启动软件通道的权限。
他们只会看到与其unix组匹配的频道中的包。