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.