# 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 su
atau www-data
? Dulu bekerja ...
Agaknya ini karena /usr/sbin/nologin
, tetapi bagaimana saya menjatuhkan root
skrip yang satu ini, tanpa kompromi layanan lain pada sistem (nologin
telah dipilih oleh Debian
tim karena alasan yang baik, saya ingin percaya)?
/bin/sh
ini digunakan secara default dan Anda harus menentukan-s
opsi hanya jika Anda ingin mengubahnya/bin/bash
atau serupa.su www-data -s /bin/sh
untuk kembali ke root ketik sajasu
.Anda menggunakan
su
yang digunakan untuk "mengalihkan pengguna". Tentu saja itu tidak akan berhasil karenawww-data
akun pengguna yang tidak dapat digunakan untuk masuk. Anda telah diberitahu itu:/usr/sbin/nologin
.Mungkin yang Anda inginkan adalah
sudo
yang digunakan untuk "menjalankan perintah sebagai pengguna lain".sumber
su
untuk tujuan ini dan selalu bekerja.sudo
adalah paket tambahan untuk diinstal, tetapi Anda benar, saya dapat menggunakannya untuk mencapai apa yang saya inginkan.Jika Anda ingin tidak hanya menjalankan satu perintah, tetapi beralih ke
www-data
untuk menguji beberapa hal untuk pengguna itu, ini bekerja untuk saya:Ini sedikit lebih pendek. Keluar dari sesi dengan [ctrl] + [d] atau
exit
sumber
Dengan masalah seperti ini saya telah menggunakan opsi
-p
:-p: lingkungan dilestarikan. Dalam aneh itu tidak mencoba untuk login dengan akun baru, sehingga Anda tidak mendapatkan pesan:
This account is currently not available.
.sumber