मैं NGINX उपयोगकर्ता को कैसे बदल सकता हूँ?


37

मेरे पास एक PHP स्क्रिप्ट है जो एक निर्देशिका बनाता है और एक छवि को निर्देशिका में आउटपुट करता है। यह अपाचे के तहत ठीक काम कर रहा था लेकिन हमने हाल ही में अपने सीमित रैम का अधिक उपयोग करने के लिए NGINX पर स्विच करने का निर्णय लिया। मैं निर्देशिका बनाने के लिए PHP mkdir () कमांड का उपयोग कर रहा हूं:

mkdir(dirname($path['image']['server']), 0755, true);

NGINX पर स्विच करने के बाद, मुझे निम्नलिखित चेतावनी मिल रही है:

Warning: mkdir(): Permission denied in ...

मैंने पहले ही मूल निर्देशिका की सभी अनुमतियों की जाँच कर ली है, इसलिए मैंने निर्धारित किया है कि मुझे शायद NGINX या PHP-FPM 'उपयोगकर्ता' को बदलने की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि यह कैसे करना है (मुझे उपयोगकर्ता को कभी निर्दिष्ट नहीं करना था APACHE के लिए अनुमति)। मुझे इस पर ज्यादा जानकारी नहीं मिल रही है। कोई भी मदद बहुत अच्छी रहेगी!

(नोट: इस छोटे हैंग-अप के अलावा, NGINX पर स्विच बहुत सहज है; मैं पहली बार इसका उपयोग कर रहा हूं और इसका शाब्दिक रूप से NGINX के साथ उठने और चलने में केवल 10 मिनट का समय लगा है। अब मैं सिर्फ इस्त्री कर रहा हूं। बाहर डूबता है।)


1
यदि nginx को पैकेज मैनेजर द्वारा स्थापित किया गया था, तो सबसे अच्छा संभवतया यह देखने के लिए कि उपयोगकर्ता nginx क्या चल रहा है और उस उपयोगकर्ता के लिए निर्देशिका के स्वामी को बदलने के लिए 'ps' का उपयोग करना संभव है। आमतौर पर सुरक्षा संकुल द्वारा डिफ़ॉल्ट रूप से बहुत अच्छी तरह से सेट की जाती है, बदलते उपयोगकर्ता कुछ और परेशान कर सकते हैं।
जोचिम इस्कसन

nginx.confऔर www.confडिफ़ॉल्ट रूप से IIRC।
PeeHaa

यदि आप फास्टगि का उपयोग कर रहे हैं, तो जांचें कि क्या आप phpscripts suexec कर सकते हैं। कि आप अपने विशिष्ट उपयोगकर्ता के तहत विभिन्न साइटों को चलाने के लिए अनुमति देगा। मुझे यकीन है कि कुछ सेटअप निर्देश ऑनलाइन उपलब्ध हैं।
हकर्रे

जवाबों:


58

Nginx & php-fpm को www: www के रूप में चलाएं

1. नग्नेक्स

Nginx.conf को संपादित करें और उपयोगकर्ता को इसमें सेट करेंwww www;

यदि मास्टर प्रक्रिया को रूट के रूप में चलाया जाता है, तो nginx USER / GROUP के लिए सेट्युइड () / सेटगिड () होगा। यदि ग्रुप निर्दिष्ट नहीं है, तो nginx USER के समान नाम का उपयोग करता है। डिफ़ॉल्ट रूप से यह कोई भी उपयोगकर्ता और कोई भी या समूह समूह नहीं है - या .user = USER और --group = GROUP ./configure स्क्रिप्ट से।

2. PHP-FPM

Php-fpm.conf संपादित करें और उपयोगकर्ता और समूह को इसमें सेट करें www

उपयोगकर्ता - यूनिक्स प्रक्रियाओं का उपयोगकर्ता। डिफ़ॉल्ट "www-data"

समूह - प्रक्रियाओं का यूनिक्स समूह। डिफ़ॉल्ट "www-data"


1
ठीक है, मैंने अभी nginx.conf को बदला (यह सेट हो गया था user www-data)। हालाँकि, मैं किसी भी उपयोगकर्ता को परिभाषित नहीं देखता हूँ php-fpm.conf। क्या मुझे उसी सिंटैक्स ( user www www) का उपयोग करके इसे शीर्ष पर जोड़ना चाहिए ?
डेविड

php-conf syntax एक ही os nginx.conf नहीं है। [www]भाग ढूंढें और user=wwwअगली पंक्ति में जोड़ें , और group=wwwअगली में।
glavić

Nginx को पुनरारंभ करते समय मुझे निम्न त्रुटि मिली: nginx को पुनरारंभ करना [emerg] getpwnam("www") failed in /etc/nginx/nginx.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed:।
डेविड

फिर आप या तो Nginx और php-fpm को चला सकते हैं क्योंकि उपयोगकर्ता के पास उपयुक्त निर्देशिकाओं के लिए उपयुक्त अनुमति है या "sudo useradd -g www www" चलाकर www नामक एक नया उपयोगकर्ता बना सकते हैं। कृपया हमें बताएं, यदि आपको अधिक विस्तृत विवरण की आवश्यकता है।
बजे रोमन Prykhodchenko

1
@xorinzor: नहीं, आपके पास जो है उसका उपयोग करें: D
glavić

24

में Ubuntu 14.04 परिवर्तन करने के लिए फ़ाइल उपयोगकर्ता और समूह में पीएचपी-एफ पी एम है: /etc/php5/fpm/pool.d/www.conf। इस फ़ाइल में इन मापदंडों को बदलें:

user = www
group = www
listen.owner = www
listen.group = www

3
यह भी Ubuntu 16.10 के लिए मामला है।
क्रिमासजीन

1
यह उबंटू 18.04 के लिए भी मामला है
सिलिकॉनट्रस्टस्टार

यह स्वीकृत उत्तर के लिए एक बहुत अच्छा जोड़ होगा।
अशोकन ख। नाजरी

पीएचपी 7.2 के लिए यह है/etc/php/7.2/fpm/pool.d/www.conf
Cromax

6

अपने वास्तविक प्रश्न का उत्तर देने के लिए बस userलाइन को इस nginx.confतरह बदलना है:

user    [username];

उदाहरण:

user    www-data;

वास्तव में चलाने के लिए Nginx के लिए पसंदीदा उपयोगकर्ता ऑपरेटिंग सिस्टम के बीच भिन्न होता है। कभी-कभी नग्नेक्स को चलाने के लिए माना जाता है www-data। अन्य समय के रूप में यह वास्तव में चलाने के लिए माना जाता है nobody

कुछ ऑपरेटिंग सिस्टम (जैसे विंडोज) पर, यह भी कोई फर्क नहीं पड़ता है, और userलाइन में nginx.confटिप्पणी की जा सकती है या पूरी तरह से बाहर रखा जा सकता है।


यदि मैं उपयोगकर्ता के निर्देश को जोड़ देता हूं और Nginx सेवा को पुनरारंभ करता हूं, तो यह यह कहते हुए एक त्रुटि फेंकता है कि 'उपयोगकर्ता' एक अस्वाभाविक निर्देश है - क्या यह सिर्फ इसे छोड़ने के लिए ठीक है?
जोतिडे

हां, OS और / या Nginx के आधार पर, कुछ संस्करणों को एक स्पष्ट उपयोगकर्ता निर्देश की आवश्यकता नहीं है।
rubynorails

मुझे उपयोगकर्ता के निर्देश को अपनी पहचान के लिए अपने Nginx config फ़ाइल के शीर्ष पर रखना था।
जोईटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.