У попередніх твердженнях є половина правди. Ви можете налаштувати сценарій так, щоб він не читався користувачем, але все-таки виконувався. Процес трохи промальовано, але це можливо, зробивши виняток у / etc / sudoer, щоб користувач міг тимчасово запускати скрипт як сам, не вимагаючи ввести пароль. Приклад нижче:
Деякі сценарії, якими я хочу поділитися з користувачем:
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
Створіть скрипт оболонки, який викликає 'somescript.pl', і збережіть його в / bin /:
me@OB1:/bin$ sudo cat somescript.sh
[sudo] password for me:
#!/bin/bash
sudo -u me /home/me/Desktop/script/somescript.pl $@
ОПЦІЙНИЙ КРОК Створіть символьне посилання на somescript.sh в / bin /:
sudo ln -s /bin/somescript.sh /bin/somescript
Переконайтесь, що сценарій оболонки читається / виконувався користувачем (немає доступу для запису):
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
Зробіть виняток у / etc / sudoer, додавши наступні рядки:
# 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
ДОКАЗ У ПУДІВНІ:
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
Цей метод повинен бути кращим, ніж намагатися притупити Filter::Crypto
чи / PAR::Filter::Crypto
або Acme::Bleach
який може бути перероблений інженером визначеного користувача. Те саме стосується і складання вашого сценарію до двійкового. Повідомте мене, якщо ви знайдете щось не так з цим методом. Для більш досвідчених користувачів ви можете повністю видалити розділ User_Alias та замінити SCRIPTUSER на "% name name". Таким чином ви можете керувати своїми сценаріями користувачами usermod
командою.