首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么python的os.stat()告诉我我的文件组是空的?

为什么python的os.stat()告诉我我的文件组是空的?
EN

Stack Overflow用户
提问于 2012-12-20 05:44:22
回答 1查看 173关注 0票数 3

我在Solaris 5-10上使用python 2.6.4。

我有一个名为"myFile“的文件。它归其他人所有,我("myuser")在文件的组("mygrp")中。下面是我的python代码。为什么它告诉我mygrp没有成员?

代码语言:javascript
复制
>>> import os, pwd, grp 
>>> stat_info = os.stat("myFile") 
>>> fileUID = stat_info.st_uid 
>>> fileGID = stat_info.st_gid 
>>> fileGroup = grp.getgrgid(fileGID)[0] 
>>> fileUser = pwd.getpwuid(fileUID)[0] 
>>> print "grp.getgrgid(fileGID) = %s" % grp.getgrgid(fileGID) 
grp.getgrgid(fileGID) = grp.struct_group(gr_name='mygrp', gr_passwd='', gr_gid=100, gr_mem=[]) 
EN

回答 1

Stack Overflow用户

发布于 2012-12-20 06:13:42

根据the docs的说法(重点是我的):

gid是一个整数,名称和密码是字符串,成员列表是字符串列表。(请注意,根据密码数据库,大多数用户不会被明确列为他们所在组的成员。检查两个数据库以获取完整的成员信息。还注意到,以+或-开头的gr_name很可能是YP/NIS参考,可能无法通过getgrnam()或getgrgid()访问。)

这可能解释了为什么你没有被列在结果中,即使你是那个组的成员。我相信你必须使用pwd.getpwall并过滤出组id,才能获得该组中的其他成员。

更新:根据OP在评论中发布的link进一步解释:

每个帐户都有一个主要组,有些帐户还具有附加组。主组是pwd条目的.pw_gid属性中的组。附加组是那些在其组条目的.gr_mem属性中提到帐户的组。

检索组所有成员的示例代码:

代码语言:javascript
复制
def all_members(gid):
    primary_members = [user.pw_name for user in pwd.getpwall() if user.pw_gid == gid]
    additional_members = grp.getgrgid(gid).gr_mem
    return primary_members + additional_members 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13961753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档