当使用“groups”或“id -Gn”时,我最终会得到当前用户所有组的典型空格分隔列表。这些命令运行时假设组名不能包含空格字符,事实上,只要我们留在 Unix 中,情况就是如此。
然而,我的公司现在是一个更大的公司的一部分,该公司拥有 Microsoft 域设置,不幸的是,他们的 Active Directory 域组名称包含空格字符,例如“FOOBAR\Domain Users”。
我们的一个脚本通常使用“组”输出并根据空格字符分隔符创建列表,这意味着它现在彻底失败了:
$ groups
FOOBAR\Domain Users FOOBAR\Other Domain everyone admin
...显然最终会生成这样的列表:
FOOBAR\Domain
Users
FOOBAR\Other
Domain
everyone
admin
您可以想象,前 4 组不存在,并且脚本的其余部分未能实现任何有价值的东西。
有谁知道在哪里可以更好地获取此类组名?
PS:我知道 /etc/group,但那里没有提到此类 AD 组。除了 AD 组之外,是否还有其他类似的文件可供我解析?
答案1
我偶然发现的旧帖子,但我目前的方法是
id | egrep -o 'groups=.*' | sed 's/,/\n/g' | cut -d'(' -f2 | sed 's/)//'