使用 Puppet 重命名 Debian/Ubuntu 上的本地用户组

问题描述 投票:0回答:1

通过带有 idmap_rid 的 Samba,LDAP 中的用户和组可在 Ubuntu 系统上使用。但是用户组名

staff
与Debian/Ubuntu自带的本地用户组
staff
(GID:50)发生了冲突。

因此我想将本地用户组

staff
重命名为
debian-staff

我尝试通过 Puppet 来实现这一点,不幸的是没有成功。 Puppet 似乎总是尝试使用

groupadd
而不是
groupmod
,尽管本地 GID 50 已经存在。

group { 'debian-staff':
    ensure => present,
    gid => 50,
    forcelocal => true,
}

错误:无法创建组 debian-staff:执行 '/usr/sbin/groupadd -g 50 debian-staff' 返回 4:groupadd:GID '50' 已存在

如何使用 Puppet 重命名本地用户组?

ubuntu debian puppet
1个回答
0
投票

如何使用 Puppet 重命名本地用户组?

您无法使用内置的

Group
资源类型执行此操作,因为组名称是该类型的 namevar。即它的唯一标识符。具有不同名称的
Group
必然是不同的组。此外,这可能会丢失您关心的信息,例如将本地
staff
组作为辅助组的用户。

原则上,您可以删除

Group
,然后添加另一个,但这可能仍然会在最初(如果系统尝试管理 LDAP 组而不是本地组)和之后(因为即使之前未选择 LDAP 组进行修改,冲突解决后,在后续运行中很有可能会选择该组)。

一种快速而肮脏的方法是这样的:

  exec { 'rename local "staff" group':
    command => [
      '/bin/bash',
      '-c',
      'for f in /etc/{shadow,gshadow}; do /bin/sed --in-place s/^staff:/debian-staff:/ "$f"; done'
      ],
    onlyif  => 'grep -q ^staff: /etc/group'
  }
© www.soinside.com 2019 - 2024. All rights reserved.