如何使用Perl库函数将UID映射到用户名?

时间:2010-05-24 19:06:17

标签: perl unix

我正在寻找一种使用Perl将uid(代表系统用户的唯一编号)映射到用户名的方法。

请不要建议grep / etc / passwd:)

修改

作为澄清,我并不是在寻找一个明确阅读/ etc / passwd 的解决方案。我意识到,在引擎盖下,任何解决方案最终都会这样做,但我正在寻找一个库函数来为我做这件事。

3 个答案:

答案 0 :(得分:8)

标准函数getpwuid与同一个C函数一样,根据其ID获取用户信息。不需要use

my ($name) = getpwuid(1000);
print $name,"\n";

虽然它最终读取/etc/passwd文件,但使用标准接口对于其他用户来说更加清晰,更不用说它可以为您节省一些按键。

答案 1 :(得分:1)

读取/ etc / passwd并将UID哈希到登录名。

编辑:

$uid   = getpwnam($name);
$name  = getpwuid($num);
$name  = getpwent();
$gid   = getgrnam($name);
$name  = getgrgid($num;
$name  = getgrent();

如您所见,无论您选择哪一个,系统调用都从/ etc / passwd读取(请参阅this以供参考)

答案 2 :(得分:0)

实际上我建议建立一个基于/ etc / passwd的哈希:-)这应该很好用,因为用户ID必须是唯一的。