2012-02-08 63 views
1

的子集,假设我有一个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

在'开放ALLOWED_USERS, “猫allowedUsers.txt |” 猫与管;'是无用的。编写'open(ALLOWED_USERS,“allowedUsers.txt)更清晰;' – ChrisJ 2012-02-08 22:34:28

+0

够公平的...... – asf107 2012-02-08 22:35:20

+1

你知道如果用户可以复制脚本并使用它,那也意味着他们对你的系统有权限访问你试图从他们隐藏的任何数据,换句话说,这是[“通过隐晦的安全性”](http://en.wikipedia.org/wiki/Security_through_obscurity)。 – TLP 2012-02-08 22:44:41

回答

7

只允许用户读取/执行你的脚本,并把相关用户该组中的某些group

编辑:更准确地说:

  • 创建一个名为组,例如trusted_users与喜欢的用户管理工具
  • 授权的用户添加到该组
  • 配置脚本的组chgrpchgrp trusted_users my_script.pl
  • 设置其权限与chmodchmod u=rwx,g=rx,o= my_script.pl(所有者可以读,写,执行;该组的成员可以读取并执行;其他人可以什么都不做)
2

该脚本检查,如果它可以运行并退出如果不能,但有可执行权限暗示的读取权限脚本,使用户可以简单地复制,删除愚蠢的检查并运行它。

创建一组用户,并允许来自该组唯一的用户读取和执行该文件。然后,您只需将您想要授予此特权的用户添加到该组,并声音!有关示例,请参阅Unix - File Permission/Access Modes