Score:0

ความช่วยเหลือเกี่ยวกับ 'sudo --askpass' บนเซิร์ฟเวอร์ Ubuntu / Apache2

ธง no

ฉันต้องการความช่วยเหลือเกี่ยวกับก 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รหัสผ่านของ ฉันได้ลองเปลี่ยนคำสั่งนั้นมาทั้งวันแล้ว ไม่มีใครเห็นว่าฉันทำผิดอะไร?

waltinator avatar
it flag
Ubuntu 16.04 ผ่านวันหมดอายุไปแล้ว และไม่รองรับ AskUbuntu อีกต่อไป
hr flag
ฉันคิดว่าปัญหาพื้นฐานคือ (อย่างน้อยในการกำหนดค่าเริ่มต้น) `sudo` ต้องการรหัสผ่านของผู้ใช้ *invoking* - ไม่ใช่รหัสผ่านของผู้ใช้ *target*
Pete avatar
no flag
@steeldriver ดังนั้นเมื่อสคริปต์ของฉันทำงานเป็น `www-data` แล้วไปถึงคำสั่ง `sudo -u user1 --askpass $SUDO_ASKPASS 'runUser1Script.exe' ` , AskPass ควรใส่รหัสผ่านของ `www-data` ไม่ใช่ `user1 ของ? ว้าว. คุณเพิ่งพัดใจของฉัน ... !
hr flag
@Pete ใช่ ฉันเชื่ออย่างนั้น - เว้นแต่คุณจะตั้งค่า `targetpw` ใน sudo config ของคุณ ดู `man sudoers`
guiverc avatar
cn flag
[Ubuntu 16.04 LTS ถึงจุดสิ้นสุดของการรองรับ *มาตรฐาน*](https://fridge.ubuntu.com/2021/03/13/extended-security-maintenance-for-ubuntu-16-04-xenial-xerus -begins-april-30-2021/) ดังนั้นตอนนี้จึงไม่อยู่ในหัวข้อที่นี่ เว้นแต่คำถามของคุณจะเจาะจงเพื่อช่วยให้คุณย้ายไปยัง Ubuntu รุ่นที่รองรับ รองรับ Ubuntu 16.04 ESM แต่ไม่อยู่ในหัวข้อนี้ โปรดดูที่ https://askubuntu.com/help/on-topic ดูเพิ่มเติมที่ https://ubuntu.com/blog/ubuntu-16-04-lts-transitions- เพื่อขยายการรักษาความปลอดภัยการบำรุงรักษา esm

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา