किसी अन्य उपयोगकर्ता के घर निर्देशिका में mkdir के लिए रूट का उपयोग करना


27

किसी अन्य उपयोगकर्ता के /home/devuser1/pubic_htmlफ़ोल्डर के तहत एक फ़ोल्डर बनाने की कोशिश में थोड़ा मुश्किल समय रहा । मैं sudoएक विकल्प की तलाश और उपयोग से बचने की कोशिश कर रहा हूं । उक्त फ़ोल्डर पर अनुमतियाँ इस प्रकार हैं:

drwxr-s--- 2 devuser1  www-data 4096 Apr 28 19:40 public_html

वैकल्पिक रूप से, यह मानते हुए कि मैं sudoउपसर्ग का उपयोग करता हूं , तो निहितार्थ क्या होगा? मैंने पढ़ा है कि sudoफ़ोल्डर बनाने के लिए उपयोग करना बुरा है । नया फ़ोल्डर बनने के बाद, मैं अभी भी उपयोगकर्ता के स्वामित्व को प्रश्न में बदल रहा हूँ। उदाहरण:

chown -vR devuser1:www-data /home/devuser1/public_html/$vhost

जवाबों:


31

इसके साथ install, आप एक विशिष्ट स्वामी, समूह और मोड के साथ एक निर्देशिका बना सकते हैं:

install -d -o <user> -g <group> -m <mode> <path>

29

sudo -u [username] mkdir /home/[username]/public_html/[folder_name] ठीक काम करता है।

यदि मैं अनुमतियों और स्वामित्व को देख सकता हूं तो वही है, यदि मैं उसी उपयोगकर्ता के रूप में लॉग इन करना चाहता हूं और फ़ोल्डर बनाना चाहता हूं public_html

आप भी कॉल कर सकते हैं su -c "mkdir /home/[username]/public_html/[folder_name]" [username]


2
जब आप चलते हैं sudo -u USERNAME mkdir DIRNAME, तो आप mkdirउपयोगकर्ता के रूप में कमांड निष्पादित कर रहे हैं USERNAME। यह बिल्कुल लॉग इन करने के बराबर नहीं है USERNAME, क्योंकि लॉगिंग का अर्थ है पर्यावरण चर और इतने पर सेटिंग भी, लेकिन यह वह हिस्सा है जो मायने रखता है, अर्थात् एक विशेष उपयोगकर्ता के रूप में एक प्रक्रिया को निष्पादित करना।
गिल्स एसओ- बुराई को रोकें '

1
इसके अलावा उस उपयोगकर्ता की अनुमति नहीं हो सकती है।
Mahemoff

1

उन अनुमतियों को देखते हुए, केवल निर्देशिका या सुपर उपयोगकर्ता का मालिक उपनिर्देशिका बना सकता है।

एकमात्र तरीका है कि आप अतिरिक्त विशेषाधिकार का उपयोग करने से बच सकते हैं फ़ोल्डर बनाने के लिए स्वामित्व को अपने आप से बदलना है (साथ sudo), उपनिर्देशिका बनाएं और अंत में मालिक को स्वामित्व वापस करें, लेकिन मेरे लिए एक अच्छा समाधान नहीं दिखता है।


हाँ, कठिन यह एक। यह एक मूर्खतापूर्ण प्रश्न है, लेकिन मेरे विकल्प क्या हैं?
मगज़

क्या (रूट के रूप में) उस उपयोगकर्ता के रूप में कमांड चला रहा है ?: sudo -u devuser1 mkdir /home/devuser1/public_html/test। यह फ़ोल्डर बनाने के समान नहीं sudoहै? ls -alसे पता चलता है:drwxr-sr-x 2 devuser1 www-data 4096 Apr 28 23:49 test
maGz

हो सकता है कि मैं भोले हो, लेकिन sudoजब तक आप स्वामित्व बदलते हैं, तब तक मुझे फ़ोल्डर बनाने में कोई बुराई नहीं दिखती ।
RSFalcon7

lsउपयोगकर्ता की सामग्री पर क्या पता चलता है public_html, यह ऐसा प्रतीत होता है जैसे कि स्वामित्व बदलने की आवश्यकता नहीं है, शायद अनुमति।
मागज़

मुझे लगता है कि मैं यह सोचकर भी भोला बन रहा हूं: मैं फ़ोल्डर नहीं बना रहा हूं su, इसके बजाय मैं इसका उपयोग खुद को प्रमाणित करने के लिए कर रहा हूं कि वह उपयोगकर्ता जो फ़ोल्डर बनाने जा रहा है ... क्या इसका कोई मतलब है?
मगज़

0

मैंने ऐसा करने की कोशिश की mkdir -p /srv/postgres/data/mydirक्योंकि

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv मालिक है root

install -d -o <user> -g <group> -m <mode> <path> @ user2313838

न ही sudo -u postgres mkdir -p /srv/postgres/data/mydirकाम करता है @maGz

इसलिए मुझे इसे दो कमांड में विभाजित करना है:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.