सु का उपयोग करके www-data के रूप में कमांड नहीं चला सकता


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अपनी कमांड लाइन में जोड़ने का प्रयास कर सकते हैं । (मैं यह विकल्प सत्यापित नहीं कर सका कि डेसी के लिए यह विकल्प उपलब्ध है क्योंकि डेबियन मैनपावर वेबसर्वर काम नहीं कर रहा है: https://manpages.debian.org/ )


मैंने गलत तरीके से मान लिया है कि /bin/shयह डिफ़ॉल्ट रूप से उपयोग किया जाता है और आपको -sविकल्प को केवल तभी निर्दिष्ट करना होगा जब आप इसे /bin/bashया इसी तरह बदलना चाहते हैं ।
Nar .nasK

3
धन्यवाद, यह डेबियन 9 में काम su www-data -s /bin/shकरने के लिए वापस रूट के लिए मिलता है su
पीजे ब्रुनेट

4
@PJBrunet - "रूट पर वापस जाने के लिए" (यह मानते हुए कि आप रूट से मुकदमा करेंगे) आप "निकास" टाइप करेंगे। एक नया रूट शेल शुरू करने के लिए आप su टाइप करेंगे।
क्रोनोफिश

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.:।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.