在Python和Linux中如何获取指定用户的ID

36 投票
4 回答
55402 浏览
提问于 2025-04-17 04:19

有一个函数叫做 os.getuid(),它的作用是“返回当前进程的用户 ID”。但是,我该如何查找某个特定用户的 ID 呢?

4 个回答

7

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')
38

假设你想要的是和用户ID相关的用户名字符串,可以试试下面的代码:

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

如果你在意有效用户ID和实际用户ID之间的区别,可以使用 os.geteuid() 来获取有效的用户ID。

如果你的系统上有“真实姓名”这个信息,可以用 pw_gecos 来代替 pw_name 来获取它。

41

你可以使用 pwd.getpwnam() 这个方法:

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

撰写回答