的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