dieki Asked: 2010-07-29 11:21:50 +0800 CST2010-07-29 11:21:50 +0800 CST 2010-07-29 11:21:50 +0800 CST 如何设置软件中心为非 root 用户安装软件? 772 如何设置软件中心以允许非 root 用户从 Ubuntu 存储库安装东西而无需输入密码? 我完全了解安全隐患,我愿意承担风险。Fedora 12 附带了这样的东西。(通过修改 PolicyKit 配置,我相信) software-installation software-center policykit 5 个回答 Voted Best Answer RAOF 2010-07-29T18:37:39+08:002010-07-29T18:37:39+08:00 您可以修改 PolicyKit 权限以允许用户访问软件中心使用的 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 lfaraone 2010-07-29T11:45:23+08:002010-07-29T11:45:23+08:00 我认为目前无法通过 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 的情况下这样做,但目前我无法理解。 Lekensteyn 2011-11-14T05:48:58+08:002011-11-14T05:48:58+08:00 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. Alfonso E.M. 2013-02-21T02:44:02+08:002013-02-21T02:44:02+08:00 如果您只需要允许/禁止安装包的通用权限,请选择 PolicyKit。 不幸的是,PolicyKit 无法很好地控制要安装的包。如果您想让您的用户仅安装一组受限的应用程序,您应该使用sudo和安装类似软件频道的东西... 我也在寻找类似的东西,但由于我没有找到任何东西,我编写了这个简单的解决方案“softwarechannels”,可在 GitHub 上找到 这是一个非常简单的系统,允许普通(非管理员)用户从受限目录安装软件包。 只需在一个简单的文本文件中定义“频道”(包组),并授予您的用户启动软件频道的权限。 他们只会在与他们的 unix 组匹配的频道中看到包。 Alex 2019-12-01T01:19:09+08:002019-12-01T01:19:09+08:00 为了使它在我的 Ubuntu 18.04 中工作,我必须将 /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla 文件更改为: [Untrusted Install] #Action=org.debian.apt.install-or-remove-packages Action=org.freedesktop.packagekit.package-* ResultyAny=no ResultInactive=no ResultActive=auth_self Identity=* [Untrusted Update] Action=org.debian.apt.update-cache ResultAny=no ResultInactive=no ResultActive=yes Identity=* [Admin Install] #Action=org.debian.apt.install-or-remove-packages Action=org.freedesktop.packagekit.package-* ResultyAny=no ResultInactive=no ResultActive=yes Identity=unix-group:adm 此外,根据最后一条规则,我允许 adm 组中的每个人都无需任何密码即可安装/删除。
您可以修改 PolicyKit 权限以允许用户访问软件中心使用的 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
将允许任何登录到本地计算机的用户在输入自己的密码后安装包(即使他们不在管理员组中),并在不输入任何密码的情况下更新包缓存。我认为目前无法通过 GUI 执行此操作,但以下应该可以工作,尽管有点笨拙。YMMV。
将以下行添加到 /etc/sudoers(用于
sudo visudo
编辑文件):然后您只需要创建特定用户并将其添加到
packageinstallers
组中:现在
jdoe
可以执行以下操作:并且您可以编辑软件中心的桌面菜单项,以便
software-center
在命令前面加上gksudo
.PolicyKit可能允许您在没有 sudo 的情况下这样做,但目前我无法理解。
RAOF 的回答仅适用于 Ubuntu。Kubuntu 使用 QAptWorker 作为后端(观察 Natty 和 Oneiric)。要允许非 root 安装,请创建
/etc/polkit-1/localauthority/50-local.d/10-allow-non-root-install-packages.pkla
包含:我想允许一些非管理员用户在不直接授予 sudo 访问权限的情况下安装软件。这是通过在两个配置组中插入下一行来完成的:
如果有必须授予权限的组,请使用
unix-group
代替unix-user
.如果您只需要允许/禁止安装包的通用权限,请选择 PolicyKit。
不幸的是,PolicyKit 无法很好地控制要安装的包。如果您想让您的用户仅安装一组受限的应用程序,您应该使用
sudo
和安装类似软件频道的东西...我也在寻找类似的东西,但由于我没有找到任何东西,我编写了这个简单的解决方案“softwarechannels”,可在 GitHub 上找到
这是一个非常简单的系统,允许普通(非管理员)用户从受限目录安装软件包。
只需在一个简单的文本文件中定义“频道”(包组),并授予您的用户启动软件频道的权限。
他们只会在与他们的 unix 组匹配的频道中看到包。
为了使它在我的 Ubuntu 18.04 中工作,我必须将 /etc/polkit-1/localauthority/50-local.d/10-allow-users-to-install.pkla 文件更改为:
此外,根据最后一条规则,我允许 adm 组中的每个人都无需任何密码即可安装/删除。