加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:07:24 所属栏目:大数据 来源:网络整理
导读:根据 this site我可以简单地写 $user = getlogin(); 但是组处理函数似乎无法接受用户名/ userid作为参数.我是否应该遍历所有/ etc / group文件行并从中解析组名? 解决方法 不需要解析系统文件,在类UNIX操作系统上,我会使用内置接口来访问getpwuid和getgrgid
根据 this site我可以简单地写

$user = getlogin();

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

解决方法

不需要解析系统文件,在类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,$group,$gid;

比较简单的东西

my $group = getgrgid $(

也可以,因为$(和$)已经应该包含GID和EGID.

最后是POSIX模块中定义的getgroups函数,

use POSIX qw(getgroups)

正如dsw所建议的那样,如果您的操作系统(例如Linux不同)支持同时拥有多个活动组,那么还应允许您获取辅助组.

查找非活动的辅助组可能确实涉及解析/ etc / group文件,直接或通过getgrend内置和标准User :: grent模块的组合使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读