มีความจริงครึ่งหนึ่งของข้อความก่อนหน้านี้ คุณสามารถตั้งค่าสคริปต์เพื่อไม่ให้ผู้ใช้อ่านได้ แต่ยังสามารถใช้งานได้ กระบวนการนี้ถูกดึงออกมาเล็กน้อย แต่ทำได้โดยการยกเว้นใน / 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 $@
ขั้นตอนทางเลือกสร้าง symlink เพื่อ 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 ด้วย '% groupname' วิธีนี้คุณสามารถจัดการผู้ใช้สคริปต์ของคุณด้วยusermod
คำสั่ง