的id -Gn
当用户属于一个或多个组,其中几个组名称映射到相同gid
可能不一样的答案公布结果。举例来说,如果/etc/groups
与此类似:
% ypcat group | grep mygroup
mygroup:*:66485:user1,user2,user3,...
mygroup1:*:66485:user101,user102,user103,...
mygroup2:*:66485:user201,user202,user203,...
...
而且,如果用户没有mygroup
列出,但在mygroup<n>
,id -Gn
回报mygroup
但贴出答案返回mygroup<n>
。
看来在我的环境中,由于UNIX组可能有成百上千的用户,这是一种常见的组管理策略,尽管我不确切知道每个组的用户数限制以及为什么id -Gn
总是返回mygroup
。
然而,与下面的代码我有一个匹配id -Gn
:如果你想在当前用户的组
import pwd, grp
def getgroups(user):
gids = [g.gr_gid for g in grp.getgrall() if user in g.gr_mem]
gid = pwd.getpwnam(user).pw_gid
gids.append(grp.getgrgid(gid).gr_gid)
return [grp.getgrgid(gid).gr_name for gid in gids]
至少我可以使用 从子进口check_output mygroups = check_output([ 'ID', '-Gn',用户])。分裂() – 2012-02-17 06:34:57