1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

zfs_delegate_admin: fix: zfs allow cannot parse unknown uid/gid (#5943)

When setting allow permissions for particular users or groups
there will be circumstances when that user is not known to the
host system.

In that case the output of `zfs allow <pool/dataset>`
looks similar to this:

  $ sudo zfs allow tank/test
  ---- Permissions on tank/test ---------------------------------------
  Local+Descendent permissions:
    user (unknown: 1002) hold
    user zfsuser receive

The fix in this commit removes ' (unknown: '+')' from the output
leaving only the uid/gid.

This allows the current parser to continue even if the uid/gid
is not known.

This situation occurs most often when moving a zpool from one system
to another that may not have the same users/groups. Simply adding
permissions to a user/group and then deleting the user/group
from the system will cause this situation to occur.
This commit is contained in:
Phil Kauffman 2023-02-25 03:02:28 -07:00 committed by GitHub
parent f0529dcb0e
commit 53f729730b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 0 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- zfs_delegate_admin - zfs allow output can now be parsed when uids/gids are not known to the host system (https://github.com/ansible-collections/community.general/pull/5943).

View file

@ -184,6 +184,9 @@ class ZfsDelegateAdmin(object):
scope = linemap.get(line, scope) scope = linemap.get(line, scope)
if not scope: if not scope:
continue continue
if ' (unknown: ' in line:
line = line.replace('(unknown: ', '', 1)
line = line.replace(')', '', 1)
try: try:
if line.startswith('\tuser ') or line.startswith('\tgroup '): if line.startswith('\tuser ') or line.startswith('\tgroup '):
ent_type, ent, cur_perms = line.split() ent_type, ent, cur_perms = line.split()