假设我有一个perl(或python)脚本,可以做一些高度秘密的事情;我只想让某些用户真正能够使用该脚本。目前,我通过维护名为allowedUsers.txt
的只读文本文件来获得此功能,并检查以下内容:
my $username = `whoami`;
my %allowedUsers;
open ALLOWED_USERS, "allowedUsers.txt";
while(<ALLOWED_USERS>) {
$allowedUsers{$_} = 1;
}
if($allowedUsers{$username} != 1) {
die "Sorry, user $username does not have access.\n";
}
这很好用,但是因为脚本必须是可读的(否则Perl本身就无法执行它),没有什么能阻止人们简单地制作脚本副本,注释掉这部分代码,然后运行他们的“黑客”版本来规避身份检查!
是否有更好的方法来实现对用户子集的脚本执行限制?例如,我可以使用不可读但只能以某种方式可由所有人执行的perl代码吗?
答案 0 :(得分:7)
仅允许某些group用户阅读/执行您的脚本,并将相关用户放入此群组。
编辑:更确切地说:
答案 1 :(得分:2)
脚本检查它是否可以运行,如果不能运行则退出,但具有可执行权限意味着脚本的读取权限,因此用户可以简单地复制它,删除那个愚蠢的检查并运行它。
创建一组用户,并仅允许该组中的用户读取和执行该文件。然后,您只需将要授予此权限的用户添加到该组即可!有关示例,请参阅Unix - File Permission / Access Modes。