在Python和Linux中如何获得给定用户的id

时间:2011-10-14 15:37:19

标签: python linux

有os.getuid(),它“返回当前进程的用户ID。”。但是如何找出任何给定用户的ID?

4 个答案:

答案 0 :(得分:28)

您可以使用pwd.getpwnam()

In [5]: pwd.getpwnam('aix').pw_uid
Out[5]: 1004

答案 1 :(得分:18)

假设您想要的是与您的程序的用户ID关联的用户名字符串,请尝试:

import os
import pwd
pwd.getpwuid( os.getuid() ).pw_name

使用os.geteuid()获取有效的uid,如果这种差异对你很重要。

如果系统中填充了“真实姓名”,请使用pw_gecos而不是pw_name来获取“真实姓名”。

答案 2 :(得分:5)

pwd

import pwd
for p in pwd.getpwall():
    print p

pwd.struct_passwd(pw_name='_calendar', pw_passwd='*', pw_uid=93, pw_gid=93, pw_gecos='Calendar', pw_dir='/var/empty', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_teamsserver', pw_passwd='*', pw_uid=94, pw_gid=94, pw_gecos='TeamsServer', pw_dir='/var/teamsserver', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_update_sharing', pw_passwd='*', pw_uid=95, pw_gid=-2, pw_gecos='Update Sharing', pw_dir='/var/empty', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_installer', pw_passwd='*', pw_uid=96, pw_gid=-2, pw_gecos='Installer', pw_dir='/var/empty', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_atsserver', pw_passwd='*', pw_uid=97, pw_gid=97, pw_gecos='ATS Server', pw_dir='/var/empty', pw_shell='/usr/bin/false')
pwd.struct_passwd(pw_name='_ftp', pw_passwd='*', pw_uid=98, pw_gid=-2, pw_gecos='FTP Daemon', pw_dir='/var/empty', pw_shell='/usr/bin/false')

答案 3 :(得分:-2)

你可以解析/etc/passwd,它存储在那里。