ฉันต้องการความช่วยเหลือเกี่ยวกับก sudo -A
คำสั่งในเชลล์สคริปต์ ตัวเลือก -A สำหรับ AskPass ให้เป็นไปตาม sudo หน้าคน:
โดยปกติ หาก sudo ต้องการรหัสผ่าน ก็จะอ่านจากรหัสผ่านของผู้ใช้
เทอร์มินัล. หากระบุอ็อพชัน -A (askpass) a (อาจเป็นไปได้
โปรแกรมตัวช่วยแบบกราฟิก) ทำงานเพื่ออ่านรหัสผ่านของผู้ใช้และ
ส่งออกรหัสผ่านไปยังเอาต์พุตมาตรฐาน หาก SUDO_ASKPASS
มีการตั้งค่าตัวแปรสภาพแวดล้อม โดยจะระบุเส้นทางไปยังตัวช่วย
โปรแกรม.
ฉันสนใจ AskPass เพราะฉันใช้ apache2 (v 2.4.41) บนเซิร์ฟเวอร์ Ubuntu 16.04 หน้าเว็บ Apache จำเป็นต้องดำเนินการเชลล์สคริปต์ หน้าเว็บเรียกใช้สคริปต์ในฐานะผู้ใช้ www-ข้อมูล
. แต่สคริปต์จำเป็นต้องเรียกใช้โปรแกรมอื่นที่สามารถเรียกใช้ในฐานะผู้ใช้เท่านั้น ผู้ใช้1
. ดังนั้นฉันต้องการ sudo --AskPass
เพื่อให้ผู้ใช้ www-ข้อมูล
สามารถเรียกใช้ผู้ใช้ ผู้ใช้1
รหัสของ
การตั้งค่าของฉัน: ทำตามตัวอย่างเช่น ที่นี่ และ ที่นี่ฉันได้เขียนสคริปต์ทั้งสองนี้ใน /var/www/html/
ไดเรกทอรี:
user1@myUbuntu:/var/www/html$ ls -l
-rwxr-xr-x 1 www-data TestUsers 29 ก.พ. 28 11:34 น. passwdScript.sh
-rwxrwxr-x 1 www-data TestUsers 2009 28 ก.พ. 11:32 น. webpageScript.sh
user1@myUbuntu:/var/www/html$
(กลุ่ม ผู้ใช้ทดสอบ
รวมถึงผู้ใช้ www-ข้อมูล
และ ผู้ใช้1
.) ตัวเล็ก passwdScript.sh
สคริปต์มีไว้เพื่อส่งรหัสผ่านของ user1 ไปยัง STD OUT:
user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/htmlอีก $ passwdScript.sh
#!/bin/sh
echo 'รหัสผ่านของฉัน'
user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$ ./passwdScript.sh
รหัสผ่านของฉัน
user1@myUbuntu:/var/www/html$
(ใช่ ฉันรู้ว่าสิ่งนี้ไม่ปลอดภัยสูง แต่ฉันจะเป็นคนเดียวที่ใช้เซิร์ฟเวอร์นี้ ฉันกังวลเกี่ยวกับฟังก์ชันการทำงานเท่านั้น)
โอเค: เมื่อตั้งค่าด้านบนแล้ว นี่คือของฉัน เว็บเพจScript.sh
สคริปต์ซึ่งหมายถึงการโทร sudo --AskPass
:
echo "สคริปต์กำลังทำงาน"
ส่งออก SUDO_ASKPASS="/var/www/html/passwdScript.sh"
echo "ทดสอบ :: $SUDO_ASKPASS"
cd /home/user1/path/to/other/directory.cd
รหัสผ่าน
sudo -u user1 --askpass $SUDO_ASKPASS 'runUser1Script.exe'
echo "เสร็จสิ้นการรันสคริปต์"
นี่คือผลลัพธ์ที่ไม่น่าประทับใจ:
user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$ sudo -u www-data ./webpageScript.sh
สคริปต์กำลังทำงานอยู่
ทดสอบ :: /var/www/html/passwdScript.sh
/home/user1/path/to/other/directory
ขออภัย ลองอีกครั้ง
ขออภัย ลองอีกครั้ง
sudo: รหัสผ่านไม่ถูกต้อง 3 ครั้ง
เสร็จสิ้นการรันสคริปต์
user1@myUbuntu:/var/www/html$
user1@myUbuntu:/var/www/html$
เห็นได้ชัดว่า sudo --askpass
คำสั่งไม่ยอมรับ ผู้ใช้1
รหัสผ่านของ ฉันได้ลองเปลี่ยนคำสั่งนั้นมาทั้งวันแล้ว ไม่มีใครเห็นว่าฉันทำผิดอะไร?