最佳答案
无需解析系统文件,在类 UNIX 操作系统上,我将使用 getpwuid 和 getgrgid 系统调用的内置接口(interface):
use strict;
use warnings;
# use $< for the real uid and $> for the effective uid
my ($user, $passwd, $uid, $gid ) = getpwuid $< ;
my $group = getgrgid $gid ;
printf "user: %s (%d), group: %s (%d)\n", $user, $uid, $group, $gid;
更简单的东西,比如
my $group = getgrgid $(
也可以工作,因为 $( 和 $) 已经应该包含 GID 和 EGID。
最后是 POSIX 模块中定义的 getgroups 函数,
use POSIX qw(getgroups)
正如 dsw 所建议的那样,如果您的操作系统(与 Linux 不同)支持同时拥有多个事件组,则还应该允许您获取辅助组。
查找非事件辅助组可能确实涉及解析/etc/group 文件,
直接或通过 getgrend 内置和标准 User::grent 模块的组合使用。
关于perl - 如何在 Perl 中获取当前登录用户的主要组和其他组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/337588/