सुपरयूज़र / एडमिन के बजाय नए बनाए गए फ़ाइलों और फ़ोल्डरों के मालिक www-data बनाएं


13

मैं अब तक अनुमतियों के साथ संघर्ष कर रहा हूं, और एक और प्रश्न पोस्ट किया है लेकिन पहचान लिया कि समस्या क्या थी, बिना किसी तरीके के इसे अभी तक ठीक करने के लिए।

मेरा सेटअप:

  • लैम्प स्टैक के साथ उबंटू डेस्कटॉप
  • 5 "उपयोगकर्ता" मैंने उन उपयोगकर्ताओं को बनाया है sudo useradd -r -s /bin/false USERNAMEजिनका उपयोग करके मैंने ubuntu सर्वर में बनाया है और जिनका उपयोग सांबा का उपयोग करके साझा किए गए / var / www फ़ोल्डर से कनेक्ट करने के लिए मेरे नेटवर्क पर कंप्यूटरों के लिए स्थानीय नेटवर्क साझा किए गए फ़ोल्डरों तक पहुंचने के लिए किया जाता है।
  • EDIT: उद्देश्य एक "मास्टर लोकलहोस्ट" का निर्माण करना है, जहां मेरे स्थानीय नेटवर्क के सभी कंप्यूटर एक ही वेबसाइट पर काम कर सकते हैं, स्थानीय रूप से (मेरे पास एक स्थिर आईपी पता नहीं है, इस प्रकार सर्वर को कहीं और से एक्सेस नहीं किया जा सकता है) ।

मेरी समस्या:

वर्तमान में जब मैं एक नया फ़ोल्डर बनाता हूं /var/www/html(उदा: नेटवर्क के किसी भी कंप्यूटर का उपयोग करके फ़ोल्डर / var / www / html / testite1 बनाना), यह फ़ोल्डर स्वचालित रूप से boris:www-data("बोरिस") द्वारा मेरे ubuntu डेस्कटॉप इंस्टॉल पर मुख्य व्यवस्थापक उपयोगकर्ता के रूप में स्वामित्व में है , और यह वास्तव में बोरिस दिखाता है: ls -lनए बनाए गए फ़ोल्डर पर चलने पर www-data ), जो मेरे वर्तमान सेटअप (LifeInTheGrid द्वारा वर्डप्रेस के लिए डुप्लिकेट प्लगइन का उपयोग करके) के साथ समस्या पैदा कर रहा है। हालाँकि, मेरे /var/wwwऔर मेरे दोनों /var/www/htmlस्वामित्व हैंwww-data:www-data

इसलिए, मैं जानना चाहूंगा कि मैं कैसे कर सकता हूं:

  • Www-data के लिए स्वामित्व बदलें: सभी फ़ाइलों और निर्देशिकाओं के www-data नीचे / var / www और / var / www / html

  • सुनिश्चित करें कि मैं अपने नेटवर्क के किसी भी उपयोगकर्ता के साथ जो भी फ़ाइल या फ़ोल्डर बनाऊंगा, वह स्वचालित रूप से www-data के स्वामित्व में होगा: www-data (जिसमें php स्क्रिप्ट द्वारा बनाई गई फ़ाइलें स्वचालित रूप से शामिल हैं क्योंकि यह वही है जो डुप्लिकेटर प्लगइन करता है अगर मैं हूं गलत नहीं)।

क्या ऐसा करने के लिए कोई रास्ता है?

नोट: मैं लिनक्स और कमांड लाइन से संबंधित चीजों के साथ एक सुपर नौसिखिया हूं, लेकिन मैं तेजी से पकड़ता हूं।

नोट 2: umask पहले से ही 0002 के रूप में सेट है

संपादित करें:

इस की कोशिश की:

sudo chown -R www-data:www-data /var/www/

और फिर सेतु और सेटगिड बिट्स ऐसा करके सेट करें:

sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html

फिर लॉग-ऑफ, अपाचे को पुनरारंभ किया, और नेटवर्क आईपी (स्थानीय आईपी, स्थिर नहीं) के माध्यम से मेरे सर्वर से जुड़े मैक का उपयोग करके एक नया फ़ोल्डर बनाने की कोशिश की।

आई रैन

ls -l on /var/www/html

आउटपुट अभी भी है:

drwxr-sr-x 2 boris   www-data  testsite1

ध्यान दें:

मैंने पहले ही अपने अपाचे कॉन्फिग को पहले और envvars से जाँच लिया था, यह पहले से ही सेट है:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

संपादित करें: मैंने इसे पीछे की कोशिश की, जैसे कि बोरिस के स्वामित्व वाली सब कुछ सेट करना: www-data और मेरे envvars अपाचे को बोरिस से कॉन्फ़िगर करना: www-data। इसने काम कर दिया!

मैंने जो किया था यह रहा:

को बदल दिया है

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

दौड़ा

sudo chown -R boris:www-data /var/www/

अपाचे को फिर से शुरू किया, एक नया फ़ोल्डर बनाया, मेरी फाइलें जोड़ें, प्लगइन चलाया, अब कहते हैं कि यह अच्छा है !!!


Www-डेटा उपयोगकर्ता या समूह के स्वामित्व वाली फ़ाइलों को सेट करने के लिए सुरक्षा के लिए एक बुरा विचार है, हालांकि दुर्लभ मामलों में वेब सर्वर को लिखने के लिए वेब सर्वर की आवश्यकता होती है। यह क्या आप प्राप्त करने की कोशिश कर रहे हैं?
थोमसट्रेटर

जवाबों:


11

प्रश्न # 1 का उत्तर: पुनरावर्तीchown

एक पुनरावर्ती chownआपको स्वामित्व और समूह सेट करने देगा जो आप चाहते हैं /var/www/...। यह वह कमांड है जिसका आपको उपयोग करना चाहिए:

sudo chown -R www-data:www-data /var/www/

इसके साथ, प्रत्येक फ़ाइल और फ़ोल्डर को उन स्वामित्व अनुमतियों के साथ वहां अंदर सेट किया जाएगा।


प्रश्न # 2 का आधा-उत्तर: setgidबिट

यदि आप फ़ाइलों पर डिफ़ॉल्ट समूह स्वामित्व चाहते हैं, setgidतो /var/www/htmlफ़ोल्डर पर बिट सेट करें । नई फ़ाइलों को उस समूह के साथ बनाया जाना चाहिए जैसा कि फ़ोल्डर में कहा गया है।

sudo chmod g+s /var/www/html

आपको लिखने की अनुमति सेट करने की आवश्यकता होगी, हालांकि, यदि कोई उपयोगकर्ता OTHER से www-dataनिर्देशिकाओं को लिख रहा है, और ऐसा करने पर आप सुरक्षा छेद या दो पर खोल सकते हैं यदि आप सावधान नहीं हैं।

आप अनुमति के साथ समाप्त होते हैं $USER:www-data; तब स्वामी को बदलने के लिए आप chown# 1 में बताए गए तरीके का उपयोग करें (जो कहा गया, एक उचित सेटअप में आपको समूह अनुमतियों पर भरोसा करना चाहिए, न कि वेब फ़ाइलों तक पहुँच के लिए उपयोगकर्ता स्वामी अनुमतियाँ)।


PHP Wordpress Duplicator Problem

अनुमतियों के साथ समस्या यह है कि उपयोगकर्ता / समूह PHP रन के रूप में लिखने की जरूरत है और +xनिर्देशिका और dir संरचना को संपादित करने के लिए पढ़ने की संभावना है ।

PHP www-dataउबंटू में डिफ़ॉल्ट रूप से चलता है जो डिफ़ॉल्ट विन्यास का उपयोग करता है स्थापित करता है। आदर्श रूप से, ऊपर दिए गए आपके चरण इस समस्या को ठीक कर देंगे, क्योंकि आप डुप्लिकेटर प्लगइन के PHP प्लगइन होने के साथ फंस गए हैं।

आदर्श रूप से आपको यह सत्यापित करने के लिए कि इसे चलाने और काम करने के लिए किन अनुमतियों की आवश्यकता है, डुप्लिकेटेटर प्लगइन के लिए दस्तावेज की जांच करनी चाहिए।


मुझे सेट्युइड विधि पसंद है :)
Rinzwind

यही वह है जिसकी तलाश में मैं हूं!!!! केवल समस्या: यह काम नहीं किया :-( मैंने अपने स्थानीय आईपी के माध्यम से अपने सर्वर तक पहुंचकर अपने मैक (यानी ubuntu डेस्कटॉप कंप्यूटर के साथ नहीं) पर एक फ़ोल्डर बनाया है। जब मैंने ls -l चलाया, तब भी बोरिस के स्वामित्व में था: www- डेटा: - /
बोरिस शेवरू

क्या यह इसलिए है क्योंकि मैंने फ़ाइलों पर उपयोगकर्ता स्वामित्व सेट किया है, लेकिन फ़ोल्डर्स पर नहीं? क्या यह सिर्फ इसलिए है कि मैं जो फ़ोल्डर बना सकता हूं वह स्वचालित रूप से www-data: www-data के स्वामित्व में हो सकता है?
बोरिस शेवरू

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

1
निर्देशिकाओं पर लागू किया गया सेट्यूइड हमेशा लिनक्स पर नजरअंदाज किया जाता है, आईयूसी
एमआरयू

6

यह सुनिश्चित करने के लिए कि आपके द्वारा बनाई गई किसी भी फ़ाइल या फ़ोल्डर को आपके /var/www/htmlद्वारा उपयोग किए जा सकने वाले www-डेटा के स्वामित्व में स्वचालित रूप से प्राप्त किया जा सकता है inotify, यह क्रोन की तरह है, लेकिन एट्रिब्यूट्स, फ़ाइल क्रिएशन, संशोधनों और बहुत कुछ में बदलाव के लिए फ़ोल्डर / फ़ाइलों की निगरानी करता है।

पहले इसे स्थापित करें:

$ sudo apt-get install incron

रूट को incronखोलने के /etc/incron.allowसाथ उपयोग करने की अनुमति दें :

$ sudo vim /etc/incron.allow

और rootफ़ाइल में जोड़ें , फिर सहेजें और बाहर निकलें।

इसके साथ अपना इंकॉर्ब संपादित करें:

$ sudo incrontab -u root -e

और इसमें निम्न पंक्ति जोड़ें:

/var/www/html IN_CREATE /bin/chown -R www-data:www-data /var/www/html/

सुरषित और बहार।

अब जैसे ही फ़ाइल को /var/www/htmldirecotry में बनाया जाता है यह स्वतः onwership सेट कर देगा www-data:www-data

इंक्रीब में लाइन का स्पष्टीकरण:

/var/www/html वह निर्देशिका है जिसकी निगरानी की जाएगी।

IN_CREATEबनाई गई फ़ाइलों के लिए देखेंगे। यह फ़ाइल परिवर्तन मुखौटा है

/bin/chown -R www-data:www-data /var/www/html/ निष्पादित करने के लिए कमांड / कार्रवाई है।


संभावना उपयोगकर्ता स्वामित्व बार नहीं बदल रहा है किया जाना चाहिए और वे उपयोगकर्ता स्वयं स्वामित्व रीसेट कर सकते हैं ... या उपयोग एसीएल जो एक दर्द हो सकता है - वे inotify और setgid बिना कुछ इस तरह प्राप्त कर सकते हैं
थॉमस वार्ड

इस सर्वर का पूरा उद्देश्य हमारे लिए इसे "मास्टर स्थानीय होस्ट" के रूप में उपयोग करना है, उदाहरण के लिए, लोकलहोस्ट वेबसाइटें बनाना और बहुत आसानी से मक्खी पर परीक्षण साइटों को संपादित करने / बदलने / स्थानांतरित करने और बनाने में सक्षम हो। अगर मुझे मैन्युअल रूप से सब कुछ रीसेट करना है, तो यह पूरे उद्देश्य को मारता है: - /
बोरिस शेवरू

क्या यह "इनक्रोन" तरीका एकमात्र तरीका है? मुझे समझ नहीं आ रहा है कि इसे इतना जटिल क्यों होना पड़ता है। मैं जो देख रहा हूं वह इस सर्वर पर एक वेबसाइट बनाने के लिए नेटवर्क में मेरे सभी कंप्यूटरों के लिए एक सरल तरीका है। अंततः जैसा कि मेरे पास एक स्थिर आईपी नहीं है (इसलिए सुरक्षा एक मुद्दा नहीं है), क्या आपके मन में एक और बदलाव होगा?
बोरिस शेवरू

धन्यवाद, एक आकर्षण की तरह काम करता है!
trurl

3

Www-data के लिए स्वामित्व बदलें: सभी फ़ाइलों और निर्देशिकाओं के www-data नीचे / var / www और / var / www / html

cd /var/www/
chown -R  www-data:www-data /var/www/
  • ./html यहाँ निहित है (/ var / www / का हिस्सा होने के नाते)
  • -Rइसे पुनरावर्ती बनाता है (इसलिए यह सभी निर्देशिकाओं को पीछे छोड़ देगा /var/www/)।

सुनिश्चित करें कि मैं अपने नेटवर्क के किसी भी उपयोगकर्ता के साथ जो भी फ़ाइल या फ़ोल्डर बनाऊँगा वह स्वचालित रूप से www-data: www-data के स्वामित्व में होगा

  • अंदर / var / www / html / मैं मान लेंगे?

अपने अपाचे कॉन्फिगर को www-data पर सेट करें। देख/etc/apache2/envvars

# envvars - default environment variables for apache2ctl

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

इसे संपादित करने के बाद आपको अपाचे को फिर से शुरू करना होगा ( sudo service apache restart)।

इसमें स्वचालित रूप से php स्क्रिप्ट द्वारा बनाई गई फ़ाइलें शामिल हैं क्योंकि यह वही है जो डुप्लिकेटेटर प्लगइन करता है अगर मैं गलत नहीं हूं)।

यहाँ समस्या शायद प्लगइन नहीं है, लेकिन php है। उपयोगकर्ता वही प्रक्रिया होनी चाहिए जो PHP के तहत चलती है। तो आपको शायद यह सेट करने की आवश्यकता है कि www-data भी अगर वह आपका उपयोगकर्ता और समूह है ( /etc/php5/apache2/php.ini)।


उबंटू डिफॉल्ट्स PHP प्रक्रियाओं / श्रमिकों को चलाते हैं www-data, जैसा कि डेबियन, मुझे विश्वास है।
थॉमस वार्ड

इसके अलावा, इस मुद्दे के साथ /var/www/htmlसमूह के स्वामित्व और पढ़ने / लिखने के निजी भी हैं। दूसरी समस्या यह है कि वे चाहते हैं कि उपयोगकर्ता द्वारा बनाई गई कोई भी फ़ाइल हो www-data:www-data, और मेरा अनुमान है कि वे नेटवर्क उपयोगकर्ता हैं, वर्डप्रेस उपयोगकर्ता नहीं हैं, इसलिए आपको लिनक्स फ़ाइल अनुमतियों के बाद जाना होगा।
थॉमस वार्ड

वे वास्तव में नेटवर्क उपयोगकर्ता हैं, यह उन उपयोगकर्ताओं को है जो मैंने sudo useradd -r / -s / bin / false USERNAME का उपयोग करके ubuntu सर्वर में बनाया है और जिनका उपयोग स्थानीय नेटवर्क साझा किए गए फ़ोल्डरों तक पहुँचने के लिए किया जाता है
बोरिस शेवरू

क्या होगा यदि मैं स्वामित्व और सभी फ़ोल्डर और फ़ाइलों की अनुमतियाँ वापस बोरिस पर लिखूँ: www-data, तो Apache के लिए envvars को boris: www-data में बदलें? क्या यह संभव है कि समस्या को ठीक करने के बाद से जब भी मैं एक नई फ़ाइल बनाऊंगा जो मालिक के रूप में बोरिस: www-data है?
बोरिस शेवरू

2

मैंने इसे हल किया! मुझे अभी भी लगता है कि यह एक अपाचे एनवार्स की समस्या थी, लेकिन अनिश्चित है कि अगर वह विशेष चीज है जिसने समस्या को हल किया है ... वैसे भी यहां वही है जो मैंने किया था:

को बदल दिया है

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

दौड़ा

sudo chown -R boris:www-data /var/www/

अब यह अब तक काम कर रहा है। आगे परीक्षण करेंगे ...

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