将脚本限制为用户子集

asf*_*107 1 unix bash perl hidden

假设我有一个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"; 
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但是因为脚本必须是可读的(否则Perl本身就无法执行它),没有什么能阻止人们简单地复制脚本,注释掉这段代码,然后运行它们的"黑客入侵"版本以规避身份检查!

有没有更好的方法来实现对用户子集的脚本执行限制?例如,我可以使用不可读的perl代码,但每个人都能以某种方式执行吗?

Chr*_*isJ 7

仅允许某用户读取/执行您的脚本,并将相关用户放入该组.

编辑:更准确地说:

  • 创建一个名为的组,例如trusted_users使用您首选的用户管理工具
  • 将授权用户添加到该组
  • 使用chgrp设置脚本的组:chgrp trusted_users my_script.pl
  • 使用chmod设置其权限:( chmod u=rwx,g=rx,o= my_script.pl所有者可以读取,写入,执行;组成员可以读取和执行;其他人无能为力)