Why does os.stat() tell me that my file-group has no members?
saqib.ali.75 at gmail.com
saqib.ali.75 at gmail.com
Wed Dec 19 20:23:23 EST 2012
Thanks!! This was very helpful. It worked perfectly.
I had no clue about the intricacies of how python represents the group data from the underlying OS.
This page doesn't go into to detailed explanation like you did: http://docs.python.org/2/library/grp.html
On Wednesday, December 19, 2012 6:17:16 PM UTC-5, Hans Mulder wrote:
> On 19/12/12 22:40:00, saqib.ali.75 at gmail.com wrote:
>
> >
>
> >
>
> > I'm using python 2.6.4 on Solaris 5-10.
>
> >
>
> > I have a file named "myFile". It is owned by someone else, by
>
> > I ("myuser") am in the file's group ("mygrp"). Below is my python
>
> > code. Why does it tell me that mygrp has no members???
>
> >
>
> >
>
> >>>> 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=[])
>
>
>
> It doesn't say that your group has no members.
>
>
>
> Every account has a primary group, and some accounts also
>
> have addtional groups. The primary group is the one in the
>
> .pw_gid attribute in the pwd entry. The additional groups
>
> are those that mention the account in the .gr_mem attribute
>
> in their grp entry.
>
>
>
> Your experiment shows that nobody has "mygrp" as an additional
>
> group. So if you're a member of mygrp, then it must be your
>
> primary group, i.e. os.getgid() should return 100 for you.
>
>
>
> You can get a complete list of members of group by adding
>
> two lists:
>
>
>
> 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
>
>
>
>
>
> Hope this helps,
>
>
>
> -- HansM
More information about the Python-list
mailing list