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)?

NarūnasK
sumber

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/ )

Mark Wagner
sumber
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
fikr4n
sumber
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

rundekugel
sumber
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..

Arno Bozo
sumber