Greetings, I'm trying to allow a specific group the ability to run virsh with cap_net_admin capabilities. I've installed libcap2-bin and cap_pam, added user foo to libvirt-qemu, see: uid=1001(foo) gid=1001(foo) groups=1001(foo),103(kvm),108(netdev),109(libvirt),64055(libvirt-qemu)
next, I've configured libvirt-qemu group with cap_net_admin cap in /etc/security/capability.conf, see: # # /etc/security/capability.conf # # this is a sample capability file (to be used in conjunction with # the pam_cap.so module) # # In order to use this module, it must have been linked with libcap # and thus you'll know about Linux's capability support. # [If you don't know about libcap, read more about it here: # # https://sites.google.com/site/fullycapable/ # # There is a page devoted to pam_cap.so here: # # https://sites.google.com/site/fullycapable/pam_cap-so # # .] # # Here are some sample lines (remove the preceding '#' if you want to # use them. # # The pam_cap.so module accepts the following arguments: # # debug - be more verbose logging things (unused by pam_cap for now) # config=<file> - override the default config for the module with file # keepcaps - workaround for applications that setuid without this # autoauth - if you want pam_cap.so to always succeed for the auth phase # default=<iab> - provide a fallback IAB value if there is no '*' rule ## user 'morgan' gets the CAP_SETFCAP inheritable capability (commented out!) #cap_setfcap morgan ## user 'luser' inherits the CAP_DAC_OVERRIDE capability (commented out!) #cap_dac_override luser cap_net_admin @libvirt-qemu ## 'everyone else' gets no inheritable capabilities (restrictive config) none * ## if there is no '*' entry, and no "default=<iab>" pam_cap.so module ## argument to fallback on, all users not explicitly mentioned will ## get all currently available inheritable capabilities. This is a ## permissive default, and possibly not what you want... On first ## reading, you might think this is a security problem waiting to ## happen, but it defaults to not being so in this sample file! ## Further, by 'get', we mean 'get in their IAB sets'. That is, if you ## look at a random process, even one run by root, you will see it has ## no IAB capabilities (by default): ## ## $ /sbin/capsh --decode=$(grep CapInh /proc/1/status|awk '{print $2}') ## 0000000000000000= ## ## The pam_cap module simply alters the value of the inheritable ## capability vactors (IAB). Including the 'none *' forces use of this ## module with an unspecified user to have their inheritable set ## forced to zero. ## ## Omitting the line will cause the inheritable set to be unmodified ## from what the parent process had (which is generally 0 unless the ## invoking user was bestowed with some inheritable capabilities by a ## previous invocation). created /etc/pam.d/virsh with this content: auth required pam_cap.so and set the caps on /usr/bin/virsh as follows: /usr/bin/virsh cap_net_admin=eip now I run virsh and break it with ^Z, getting the pid and running /sbin/capsh --decode=$(grep CapInh /proc/743/status | awk '{print $2}') and I get this: 0x0000000000000000= e.g. no permissions.... what am I doing wrong? Thanks, Dagg