उपमा में खाली होमी


1

मेरे पास एक वेबएप्प (nginx, gunicorn, python) है जो गिट पोस्ट हुक प्राप्त करता है और कमांड लाइन टूल (माणिक, कैपिस्ट्रानो) को चलाता है। सब कुछ एक उपयोगकर्ता नाम के माध्यम से चलाया जाता है deployer। कमांड लाइन टूल बहुत अच्छी तरह से चलता है और ssh के माध्यम से दूरस्थ सर्वर से जुड़ सकता है।

जब वेब इसे ट्रिगर करता है, तो यह ssh के माध्यम से कनेक्ट नहीं हो सकता है। एक पासवर्ड की आवश्यकता है। मुझे लगता है कि मुझे पता है कि इसे कैसे दरकिनार किया जाता है (मुझे यहां क्रोनॉजर्स के साथ एक समान समस्या थी: सर्वर की बढ़ती संख्या के कारण सर्वर की मौत हो जाती है ) लेकिन किसी तरह उपयोगकर्ता वेबैब में खाली है।

इस स्क्रिप्ट को देखते हुए:

#!/bin/bash
echo "$(whoami)"

जब मैं दौड़ता हूं deployer@tools:/srv/deployment$ ./test > test.txtतो test.txt में "परिनियोजक" होता है और फ़ाइल test.txtका स्वामित्व: परिनियोजक के पास होता है।

जब मैं अपने वेबऐप के भीतर से एक ही कमांड चलाता हूं तो test.txt खाली होता है (केवल एक लाइन ब्रेक होता है) लेकिन मालिक के स्वामित्व में: www-data (जैसा कि अपेक्षित है और gunicorn में कॉन्फ़िगर किया गया है)।

यह कैसे संभव है और मैं इसके बारे में क्या कर सकता हूं?


2
लेकिन .. तुम echo $(whoami)सिर्फ के बजाय क्यों भाग रहे हो whoami? और जब आप कहते हैं कि आप ऐप से एक ही कमांड चलाते हैं, तो आपने ऐसा कैसे किया?
मुरु

whoami, बस एक खाली फ़ाइल LINEBREAK बिना ही परिणाम लाता है (और मैं के साथ इसे चलाने os.system('cd /srv/deployment && ./test > test.txt')अजगर अनुप्रयोग के भीतर से।
टुकड़ों में

आप क्या चलाते हैं os.system('whoami > test.txt'), या का उपयोग id -uकरने के बजाय whoami, या का उपयोग echo $USER?
मुरु

दिलचस्प रूप से whoamiशुद्ध रिटर्न रिटर्न के रूप में 0 के बजाय 127।
कतरनी

2
PATHआपके वेबऐप में क्या है ? क्या होगा यदि आप whoami( /usr/bin/whoami, IIRC) को पूर्ण पथ देते हैं ?
मूरू

जवाबों:


1

इसलिए समस्या एक अलग पथ सेटिंग बन गई।

Gunicorn PATH के रूप में अजगर virtualenv का उपयोग कर रहा था और इसलिए whoami बिल्कुल नहीं जानता था। पूर्ण पथ में धक्का काम किया!

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