2012-02-08 77 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