Die vorherigen Aussagen haben eine halbe Wahrheit. Sie können ein Skript so einrichten, dass es vom Benutzer nicht gelesen, aber dennoch ausführbar ist. Der Vorgang ist etwas langwierig, aber Sie können eine Ausnahme in / etc / sudoer machen, damit der Benutzer das Skript vorübergehend als Sie selbst ausführen kann, ohne zur Eingabe eines Kennworts aufgefordert zu werden. Beispiel unten:
Einige Skripte, die ich mit einem Benutzer teilen möchte:
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
Erstellen Sie ein Shell-Skript, das 'somescript.pl' aufruft, und speichern Sie es in / bin /:
me@OB1:/bin$ sudo cat somescript.sh
[sudo] password for me:
#!/bin/bash
sudo -u me /home/me/Desktop/script/somescript.pl $@
OPTIONALER SCHRITT Erstellen Sie einen Symlink zu somescript.sh in / bin /:
sudo ln -s /bin/somescript.sh /bin/somescript
Stellen Sie sicher, dass das Shell-Skript für den Benutzer lesbar / ausführbar ist (kein Schreibzugriff):
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
Machen Sie eine Ausnahme in / etc / sudoer, indem Sie die folgenden Zeilen hinzufügen:
# 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
Beweis in der Pudding:
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
Diese Methode sollte besser sein als der Versuch, sie zu verschleiern Filter::Crypto
oder PAR::Filter::Crypto
oder Acme::Bleach
die von einem bestimmten Benutzer rückgängig gemacht werden kann. Gleiches gilt für das Kompilieren Ihres Skripts in Binärform. Lassen Sie mich wissen, wenn Sie mit dieser Methode etwas falsch finden. Für fortgeschrittene Benutzer möchten Sie möglicherweise den Abschnitt User_Alias vollständig entfernen und SCRIPTUSER durch '% groupname' ersetzen. Auf diese Weise können Sie Ihre Skriptbenutzer mit usermod
Befehl verwalten.