我正在开发一个Perl脚本,它在执行开始时检查root访问权限.
if ($< != 0) {
print "You need to be root";
die " ";
}
Run Code Online (Sandbox Code Playgroud)
如何$<在Windows中进行评估?我搜索谷歌和这里,但找不到答案.
我得到的最接近的是perlvar.它在Windows中有一些特殊变量处理的描述,但不适用于这种情况.
$ <
这个过程真正的uid.(助记符:如果你正在运行setuid,那就是你来自的uid.)你可以使用POSIX :: setuid()同时更改真实的uid和有效的uid.由于更改$ <需要系统调用,请检查$!更改后尝试检测任何可能的错误.
Gab*_*abe 10
在我的Win7中,$<并$>始终返回0,不管我是否以管理员身份运行,提高管理员或普通用户的.我认为Perl只是因为Windows上的用户ID不能简单地表示为整数,所以它甚至都没有尝试.
的确,这是源代码(第1073行):
/* Ownership
*
* Just pretend that everyone is a superuser. NT will let us know if
* we don\'t really have permission to do something.
*/
#define ROOT_UID ((uid_t)0)
#define ROOT_GID ((gid_t)0)
uid_t
getuid(void)
{
return ROOT_UID;
}
uid_t
geteuid(void)
{
return ROOT_UID;
}
gid_t
getgid(void)
{
return ROOT_GID;
}
gid_t
getegid(void)
{
return ROOT_GID;
}
int
setuid(uid_t auid)
{
return (auid == ROOT_UID ? 0 : -1);
}
int
setgid(gid_t agid)
{
return (agid == ROOT_GID ? 0 : -1);
}
Run Code Online (Sandbox Code Playgroud)