सभी फ़ाइलों और फ़ोल्डरों को उपयोगकर्ता की अनुमति दें


9

मैं ऐसा उपयोगकर्ता चाहता हूं जिसके पास सिस्टम की सभी फ़ाइलों और फ़ोल्डरों तक पहुंच हो। यह रिमोट मशीन का बैकअप लेने के लिए स्थानीय मशीन पर RSYNC का उपयोग करने के उद्देश्य से है।

फिलहाल हम उपयोगकर्ता का उपयोग कर रहे हैं backupsऔर हालाँकि हमने इस उपयोगकर्ता को समूहों में जोड़ दिया है sudoऔर adminrsync अभी भी संदेश लौटाता है जैसे:

rsync: opendir "/ location / to / folder" विफल: अनुमति अस्वीकृत (13)

rsync: send_files "/ location / to / file" को खोलने में विफल रहा: अनुमति अस्वीकृत (13)

कोई भी विचार कि हम उपयोगकर्ता backupsको सब कुछ एक्सेस करने की अनुमति कैसे देते हैं (उपयोगकर्ता को कभी भी सभी समूहों में जोड़ने की कमी - हम जिस दूरस्थ सर्वर का बैकअप लेने का प्रयास कर रहे हैं वह एक समर्पित होस्टिंग सर्वर है जहां हर खाते का सिस्टम पर अपना उपयोगकर्ता है)।

किसी भी मदद के लिए धन्यवाद।


1
क्या आप रास्तों का उदाहरण दे सकते हैं? यदि यह अंदर है आदि /proc, /devतो त्रुटियों की उम्मीद की जानी है।
फिल

उपयोगकर्ता backupsको जोड़ें sudoऔर adminकुछ भी न बदलें।
favadi

@ मैं पूरी / होम डायरेक्टरी का समर्थन करने की कोशिश कर रहा हूं। फ़ाइलें / निर्देशिका जो विफल हो रही हैं वे ऐसी हैं /home/a/c/account/users/mail:usernameजिनके पास अनुमतियाँ हैं drwx------और जिनके पास स्वामित्व है mail:4096। मुझे लगता है कि क्योंकि उपयोगकर्ता backupsसमूह में है sudoया adminइसकी पहुंच नहीं है क्योंकि समूहों के लिए कोई एक्सेस अनुमति नहीं है? मुझे पता नहीं है, लेकिन इसके फोल्डर / फाइल्स पर इसकी इरिटेशन है।
थॉमस क्लैसन

@ फावड़ी मैंने पहले ही कर ली है ... अभी भी काम नहीं कर रहा है।
थॉमस क्लैसन

आपको rsyncsudo के साथ कमांड चलाना होगा ।
फिल

जवाबों:


6

बस backupsउपयोगकर्ता समूह में उपयोगकर्ता को जोड़ने sudoसे सिस्टम पर सभी फ़ाइलों को खाता एक्सेस स्वचालित रूप से नहीं मिलता है। यह उपयोगकर्ता को sudoकमांड चलाने की अनुमति देता है ।

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

आपने पहले ही कुंजी विनिमय किया है और सत्यापित प्रमाणीकरण सफल है। में authorized_keysदूरस्थ होस्ट है कि आप का समर्थन कर रहे हैं पर फ़ाइल /homeसे निर्देशिका, आप एक जोड़ सकते हैं command=महत्वपूर्ण यह है कि उपयोगकर्ता द्वारा प्रयोग किया जाता है करने के लिए निर्देश backups। यह निर्देश केवल उस कमांड को चलाने की अनुमति देगा जब प्रमाणीकरण के लिए उस कुंजी का उपयोग किया जाएगा। तो कुंजी का पहला क्षेत्र इस तरह दिखेगा:

command="/path/to/sudo /path/to/rsync -az /home /local/folder" ssh-rsa AAAAB3NzaC1yblahblahblah

आप आगे भी जा सकते हैं और कुंजी में अधिक विकल्प जोड़ सकते हैं, जैसे कि from=myhost,no-pty,no-X11-forwarding

इससे आपको सभ्य सुरक्षा मिलनी चाहिए और आपको अंतर्निहित फ़ाइल सिस्टम अनुमतियों को संशोधित करने की आवश्यकता नहीं होगी। आपको संभवतः उस कमांड के साथ खेलने की आवश्यकता होगी जो आप authorized_keysफ़ाइल में रखते हैं जब तक कि यह आपकी अपेक्षा के अनुरूप काम न करे; आपके मस्तिष्क को इसके चारों ओर लपेटने में थोड़ा समय लग सकता है। authorized_keysवसीयत में निर्दिष्ट कमांड मूल रूप से उन rsyncविकल्पों को ओवरराइड करता है जिन्हें आप कनेक्टिंग होस्ट से पास करेंगे।

में अच्छी जानकारी के बहुत सारे man sshd। आप विशेष रूप से AUTHORIZED_KEYS FORMAT अनुभाग को पढ़ना चाहते हैं।


ठीक है, मुझे लगता है कि मैं का पालन कर रहा हूँ। अधिकृत_की फ़ाइल में उस निर्देश को जोड़ने से आप सुपरसुअर अनुमतियों के साथ रिमोट कमांड चला सकते हैं? rsync -e ssh -az backups@domain.com:/home /location/of/local/folderदूरस्थ मशीन पर सुपरयुसर के रूप में चलाने के निर्देश देने के लिए मैं कमांड को कैसे बदलूंगा? या यह स्वचालित रूप से करेगा? आपके समय एवं मदद के लिए धन्यवाद। :)
थॉमस क्लेयसन

1
निर्देश स्वचालित रूप से आपको सुपरयुसर के रूप में कमांड चलाने की अनुमति नहीं देता है। जब प्रमाणीकरण के लिए उस विशिष्ट कुंजी का उपयोग किया जाता है, तो यह उपयोगकर्ता को केवल निर्दिष्ट आदेश को प्रतिबंधित करता है। सुपरसुअर अनुमतियाँ "सुडो" से आती हैं। तकनीकी रूप से, आप अपना पूरा "rsync" कमांड अधिकृत_की फ़ाइल में रख सकते हैं और बैकअप होस्ट से केवल ssh कनेक्शन आरंभ कर सकते हैं। पूरी प्रक्रिया तब प्रमाणीकरण पूर्ण होने के बाद स्वचालित रूप से शुरू होगी। मैं "ssh backups @ Remotehost sudo rsync" जैसे कुछ के साथ संबंध शुरू करूंगा
जॉर्ज एम

यह आपके मस्तिष्क को चारों ओर लपेटने के लिए थोड़ा सा लेता है, लेकिन यह बहुत अच्छा है जब यह अंततः क्लिक करता है और आपको एहसास होता है कि आप क्या कर सकते हैं।
जॉर्ज एम

2

एक विकल्प रिमोट सिस्टम पर rsync सर्वर चलाने का है।

मूल रूप से, तब उपयोग के rsync.confसाथ बनाएँ ।uid=rootrsync -az rsync://domain.com

उदाहरण के लिए http://pastebin.com/5hQx1mRV देखें , जिसे उबंटू में किसी सर्वर को सक्षम करने के कुछ मूल बातों के लिए rsync डेमॉन को किसी और ने लिखा और कॉन्फ़िगर किया है

ध्यान दें कि आपको इस की सुरक्षा पर विचार करना होगा। रिमोट सिस्टम को अपने स्थानीय सिस्टम में धकेलने के लिए एक बेहतर तरीका है।


यह बहुत अच्छा लगता है धन्यवाद। क्या तब /backup/lcदूरस्थ सर्वर पर फ़ोल्डर से सब कुछ rsync होगा ? मुझे लगता है कि काम करने के pathलिए होने के /homeलिए थोड़ा बदल सकता हूँ ?
थॉमस क्लैसन

एडिट दोस्त के लिए धन्यवाद। इसके साथ एकमात्र समस्या यह है कि हम एक स्थिर आईपी पते की गारंटी नहीं दे सकते हैं कि हम कहाँ हैं, और हम क्रोन के माध्यम से ऐसा करना चाहते हैं ताकि यह हर समय हो। यदि हम "पुश" करते हैं तो यह काम करना बंद कर सकता है यदि हमारा आईपी पता बदल जाता है। : /
थॉमस क्लेयसन

@ThomasClayson: यही डायनेमिक DNS के लिए है। :)
वॉरेन यंग

1

यदि अंतर्निहित फाइल सिस्टम इसका समर्थन करता है तो आप शायद एसीएल का उपयोग कर सकते हैं

आपको प्रत्येक फ़ाइल और निर्देशिका के एसीएल में समूह बैकअप जोड़ना चाहिए। लेकिन नई बनाई गई फ़ाइल और निर्देशिका के लिए स्वचालित रूप से जोड़े जाने के लिए, आपको पहले सभी मौजूदा निर्देशिकाओं के लिए डिफ़ॉल्ट एसीएल सेट करना चाहिए। इसलिए दूरस्थ सर्वर पर:

sudo find /home -type d -print0 | xargs -0 setfacl -d -m group:backup:r-x

तब आपके पास सभी मौजूदा निर्देशिकाओं के लिए rx अनुमति होनी चाहिए और फ़ाइलों के लिए पढ़ना चाहिए। आप इसे 2 कमांड के साथ कर सकते हैं (इस समय -d के बिना)

sudo setfacl -R -m group:backup:r-- /home
sudo find /home -type d -print0 | xargs -0 setfacl -m group:backup:r-x

यह आपको मौजूदा उपयोगकर्ता और प्रत्येक फ़ाइल के स्वामित्व वाले समूह को बदले बिना समूह बैकअप के लिए फ़ाइलों को पढ़ने की अतिरिक्त अनुमति देगा।

नोट: खोज में तेजी लाने के लिए | xargs कमांड आप निम्न विकल्प को xargs कमांड में जोड़ सकते हैं: -P nn के साथ समानांतर प्रक्रिया की संख्या। आप इसे अपने मशीन + 1 पर आपके पास मौजूद सीपीयू की संख्या पर सेट कर सकते हैं।


समानांतर xargs इस मामले में चीजों को गति नहीं देगा, क्योंकि टोंटी I / O है, सीपीयू नहीं।
मिकेल

लिनक्स डिस्क में परिवर्तन करने से पहले मेमोरी में कैश का उपयोग करता है, इसलिए यह उपयोगकर्ता के दृष्टिकोण से तेज महसूस करता है। और यहां तक ​​कि एक छोटी नोटबुक hdd समानताएं में कई ACL की स्थापना का भार संभाल सकता है। यह मैं / ओ ज्यादा नहीं है। इसे
आजमाइए

मैंने अभी-अभी यहाँ पर सुपरयुसर . com/a/422954/53206 पढ़ा है जिसे आप बस इस्तेमाल कर सकते हैं: sudo setfacl -Rm d:group:backup:r-X,group:backup:r-X /home:) बहुत सरल!
ह्यूजेंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.