Tidak dapat menjalankan perintah sebagai www-data menggunakan 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

Apa yang salah dengan saya suatau www-data? Dulu bekerja ...

Agaknya ini karena /usr/sbin/nologin, tetapi bagaimana saya menjatuhkan rootskrip yang satu ini, tanpa kompromi layanan lain pada sistem (nologin telah dipilih oleh Debiantim karena alasan yang baik, saya ingin percaya)?

Jawaban:


18

Tanpa berdebat suvs sudoAnda dapat mencoba menambahkan -s /bin/shke baris perintah Anda. (Saya tidak dapat memverifikasi opsi ini tersedia untuk jessie karena server web Debian tidak berfungsi: https://manpages.debian.org/ )


Saya salah berasumsi bahwa /bin/shini digunakan secara default dan Anda harus menentukan -sopsi hanya jika Anda ingin mengubahnya /bin/bashatau serupa.
— NarūnasK

3
Terima kasih, ini berfungsi di Debian 9 su www-data -s /bin/shuntuk kembali ke root ketik saja su.
— PJ Brunet

4
@ PJBrunet - "untuk kembali ke root" (dengan asumsi Anda su'd dari root) Anda akan mengetik "keluar". Untuk memulai shell root baru Anda mengetikkan su.
— ChronoFish

31

Anda menggunakan suyang digunakan untuk "mengalihkan pengguna". Tentu saja itu tidak akan berhasil karena www-dataakun pengguna yang tidak dapat digunakan untuk masuk. Anda telah diberitahu itu: /usr/sbin/nologin.

Mungkin yang Anda inginkan adalah sudoyang digunakan untuk "menjalankan perintah sebagai pengguna lain".

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

Saya selalu digunakan suuntuk tujuan ini dan selalu bekerja. sudoadalah paket tambahan untuk diinstal, tetapi Anda benar, saya dapat menggunakannya untuk mencapai apa yang saya inginkan.
— NarūnasK

1

Jika Anda ingin tidak hanya menjalankan satu perintah, tetapi beralih ke www-datauntuk menguji beberapa hal untuk pengguna itu, ini bekerja untuk saya:

sudo -u www-data sh

Ini sedikit lebih pendek. Keluar dari sesi dengan [ctrl] + [d] atauexit


0

Dengan masalah seperti ini saya telah menggunakan opsi -p:

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

-p: lingkungan dilestarikan. Dalam aneh itu tidak mencoba untuk login dengan akun baru, sehingga Anda tidak mendapatkan pesan: This account is currently not available..

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.