通过带有 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 重命名本地用户组?
如何使用 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'
}