Ограничение скриптов для подмножеств пользователей - PullRequest
1 голос
/ 09 февраля 2012

Предположим, у меня есть скрипт на 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-код, который не читается, но каким-то образом исполняется всеми?

Ответы [ 2 ]

7 голосов
/ 09 февраля 2012

Разрешить только / определенную группу пользователей читать / выполнять ваш сценарий и помещать соответствующих пользователей в эту группу.

РЕДАКТИРОВАТЬ: точнее:

  • создайте группу с именем, например trusted_users, с помощью предпочитаемого вами инструмента управления пользователями
  • добавить авторизованных пользователей в эту группу
  • установить группу скрипта с помощью chgrp : chgrp trusted_users my_script.pl
  • установить свои разрешения с помощью chmod : chmod u=rwx,g=rx,o= my_script.pl (владелец может читать, писать, выполнять; члены группы могут читать и выполнять; другие не могут ничего делать)
2 голосов
/ 09 февраля 2012

Сценарий проверяет, может ли он работать, и завершается, если не может, но наличие исполняемого разрешения подразумевает разрешение на чтение для сценария, поэтому пользователи могут просто скопировать его, удалить эту глупую проверку и запустить.группа пользователей, и разрешить только пользователям из этой группы читать и выполнять этот файл.Затем вы просто добавляете пользователей, которым хотите предоставить эту привилегию, в эту группу и вуаля!Например, см. Unix - Режимы доступа к файлам / доступа .

...