Мне нужно разрешить некоторым пользователям устанавливать пакеты в своих системах, и вся система управляется puppet.
У меня есть этот файл:
#modules/polkit/manifests/init.pp
define polkit(
# filename without a path
# $name,
$filename="/var/lib/polkit-1/localauthority/50-local.d/$name.pkla",
$users,
$groups,
# e.g. org.debian.apt.install-or-remove-packages -- use pkaction for a list.
$action,
# result
$result_active='',
$result_inactive='',
$result_any='',
$return_value=''
) {
file { "$filename":
ensure => present,
content => template('polkit/pkla.erb'),
owner => 'root',
group => 'root',
mode => '0644'
}
}
И в другом файле:
#modules/polkit/manifests/install_packages.pp
class polkit::install_packages($users=[], $groups=['admin','sudo']) {
polkit { 'lsv-install-packages':
action => 'org.debian.apt.install-or-remove-packages',
users => $users,
groups => $groups,
result_active => 'auth_self_keep'
}
}
И это то, что у меня есть в моих manifests/desktops.pp
:
node
'computerxxx'
inherits desktop {
include packages::desktop_default
class { 'polkit::install_packages':
users => [ 'gooduser' ]
}
}
В результате у меня есть это в клиентской машине:
/vsr/lib/polkit/localauthority/50-local.d/lsv-install-packages.pkla
[lsv-install-packages]
Identity=unix-user:gooduser;unix-group:admin;unix-group:sudo
Action=org.debian.apt.install-or-remove-packages
ResultActive=auth_self_keep
Но, похоже, он не устанавливает надлежащие правила. Если этот пользователь попытается установить пакет, он получит это сообщение:
$ apt-get install emacs
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
Как я могу это исправить?
(Я считаю, что PolicyKit должен быть среди тегов этого вопроса, может кто-нибудь добавить тег к сообщению?)