当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在Perl中获取当前登录用户的主要组和其他组?》经验,为你挑选了1个好方法。

根据这个网站我可以简单地写

$user = getlogin();

但是组处理函数似乎无法接受用户名/ userid作为参数.我是否应该遍历所有/ etc/group文件行并从中解析组名?



1> fB...:

不需要解析系统文件,在类UNIX操作系统上我会使用内置接口来访问getpwuid和getgrgid系统:

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模块的组合使用.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有