gpt4 book ai didi

perl - 如何在 Perl 中获取当前登录用户的主要组和其他组?

转载 作者:行者123 更新时间:2023-12-04 22:26:31 26 4
gpt4 key购买 nike

根据this site我可以简单地写

$user = getlogin();

但组处理功能似乎无法接受用户名/用户 ID 作为参数。我真的应该遍历所有/etc/group 文件行并从中解析组名吗?

最佳答案

无需解析系统文件,在类 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com