ไม่สามารถรันคำสั่งเป็นข้อมูล www โดยใช้ su


14
# su -l www-data ./http-app.py
This account is currently not available.
# su -l www-data -c ./http-app.py
This account is currently not available.
# su -c ./http-app.py www-data 
This account is currently not available.
# su -lc ./http-app.py www-data 
This account is currently not available.
# getent passwd www-data 
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
# getent shadow www-data 
www-data:*:16842:0:99999:7:::
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.6 (jessie)
Release:        8.6
Codename:       jessie

ผิดอะไรกับฉันsuหรือwww-data? มันเคยทำงาน ...

เป็นไปได้ว่านี่เป็นเพราะของ/usr/sbin/nologinแต่ฉันจะวางrootสคริปต์นี้โดยไม่ประนีประนอมกับบริการอื่น ๆ ในระบบ ( nologinได้รับเลือกโดยDebianทีมด้วยเหตุผลที่ดีฉันต้องการที่จะเชื่อ)?

คำตอบ:


19

โดยไม่ต้องโต้วาทีsuกับsudoคุณสามารถลองเพิ่ม-s /bin/shบรรทัดคำสั่งของคุณ (ฉันไม่สามารถตรวจสอบตัวเลือกนี้ได้สำหรับเจสซี่เนื่องจากเว็บเซิร์ฟเวอร์ Debian manpages ไม่ทำงาน: https://manpages.debian.org/ )


ฉันถือว่าไม่ถูกต้องที่/bin/shใช้เป็นค่าเริ่มต้นและคุณต้องระบุ-sตัวเลือกเฉพาะในกรณีที่คุณต้องการเปลี่ยนเป็น/bin/bashหรือคล้ายกัน
NarūnasK

3
ขอบคุณก็ทำงานใน Debian 9 ที่จะได้รับกลับไปที่รากเพียงแค่พิมพ์su www-data -s /bin/sh su
PJ Brunet

4
@PJBrunet - "เพื่อกลับสู่รูท" (สมมติว่าคุณต้องการจากรูท) คุณจะต้องพิมพ์ "exit" ในการเริ่มรูทเชลล์ใหม่คุณต้องพิมพ์ su
ChronoFish

31

คุณกำลังใช้suซึ่งใช้เพื่อ "สลับผู้ใช้" แน่นอนว่ามันจะไม่ทำงานเพราะwww-dataเป็นบัญชีผู้ใช้ที่ไม่สามารถใช้ในการเข้าสู่ระบบได้ /usr/sbin/nologinคุณได้บอกว่ามัน:

บางทีสิ่งที่คุณต้องการคือsudoใช้เพื่อ "เรียกใช้คำสั่งในฐานะผู้ใช้รายอื่น"

sudo -u www-data ./http-app.py

ฉันมักจะใช้suเพื่อจุดประสงค์นี้และมักจะใช้ในการทำงาน sudoเป็นแพ็คเกจพิเศษที่จะติดตั้ง แต่คุณพูดถูกฉันสามารถใช้มันเพื่อให้ได้สิ่งที่ฉันต้องการ
NarūnasK

1

หากคุณต้องการไม่เพียง แต่รันคำสั่งเดียว แต่เปลี่ยนเป็นwww-dataเพื่อทดสอบบางสิ่งสำหรับผู้ใช้สิ่งนี้ได้ผลสำหรับฉัน:

sudo -u www-data sh

มันสั้นกว่าเล็กน้อย ออกจากเซสชันด้วย [ctrl] + [d] หรือexit


0

ด้วยปัญหาแบบนี้ฉันได้ใช้ตัวเลือก-p:

su -pc ./http-app.py www-data

-p: สภาพแวดล้อมถูกเก็บรักษาไว้ This account is currently not available.ในที่แปลกประหลาดก็ไม่ได้พยายามที่จะเข้าสู่ระบบด้วยบัญชีใหม่เพื่อให้คุณไม่ได้รับข้อความ:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.