W poprzednich stwierdzeniach jest połowa prawdy. Możesz skonfigurować skrypt, aby nie był czytelny dla użytkownika, ale nadal był wykonywalny. Proces ten jest nieco przeciągnięty, ale można go zrobić, robiąc wyjątek w / etc / sudoer, aby użytkownik mógł tymczasowo uruchomić skrypt jak sam, bez pytania o hasło. Przykład poniżej:
Niektóre skrypty, które chcę udostępnić użytkownikowi:
me@OB1:~/Desktop/script/$ chmod 700 somescript.pl
me@OB1:~/Desktop/script/$ ls -l somescript.pl
-rwx------ 1 me me 4519 May 16 10:25 somescript.pl
Utwórz skrypt powłoki, który wywołuje „somescript.pl” i zapisz go w / bin /:
me@OB1:/bin$ sudo cat somescript.sh
[sudo] password for me:
#!/bin/bash
sudo -u me /home/me/Desktop/script/somescript.pl $@
OPCJONALNY KROK Utwórz dowiązanie symboliczne do somescript.sh w / bin /:
sudo ln -s /bin/somescript.sh /bin/somescript
Upewnij się, że skrypt powłoki jest czytelny / wykonywalny dla użytkownika (brak dostępu do zapisu):
sudo chmod 755 /bin/somescript.sh
me@OB1:/bin$ ls -l somescript*
lrwxrwxrwx 1 root root 14 May 28 16:11 somescript -> /bin/somescript.sh
-rwxr-xr-x 1 root root 184 May 28 18:45 somescript.sh
Zrób wyjątek w / etc / sudoer, dodając następujące linie:
# User alias specification
User_Alias SCRIPTUSER = me, someusername, anotheruser
# Run script as the user 'me' without asking for password
SCRIPTUSER ALL = (me) NOPASSWD: /home/me/Desktop/script/somescript.pl
DOWÓD W PUDDINGU:
someuser@OB1:~$ somescript
***You can run me, but can't see my private parts!***
someuser@OB1:~$ cat /home/me/Desktop/script/somescript.pl
cat: /home/me/Desktop/script/somescript.pl: Permission denied
Ta metoda powinna być lepsza niż próba zaciemnienia za pomocą Filter::Crypto
lub PAR::Filter::Crypto
lub Acme::Bleach
która może zostać odwrócona przez określonego użytkownika. To samo dotyczy kompilowania skryptu do pliku binarnego. Daj mi znać, jeśli znajdziesz coś złego w tej metodzie. Bardziej zaawansowani użytkownicy mogą chcieć całkowicie usunąć sekcję User_Alias i zastąpić SCRIPTUSER '% groupname'. W ten sposób możesz zarządzać użytkownikami skryptu za pomocą usermod
polecenia.