如何在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模块的组合使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |