rsync

2012-06-21 18 views
13

के लिए मालिक को कैसे बदलें I rsync के लिए अनुमतियों को संरक्षित करते हुए समझते हैं। हालांकि मेरे मामले में मेरे स्थानीय कंप्यूटर में उपयोगकर्ता नहीं है, फ़ाइलों को वेबसर्वर के लिए नीचे की आवश्यकता है। तो जब मैं rsync करता हूं तो मुझे मालिक और समूह को वेबसर्वर पर अपाचे होने की आवश्यकता होती है, लेकिन मेरे स्थानीय कंप्यूटर पर मेरा उपयोगकर्ता नाम बनें। कोई सुझाव?rsync

मैं स्पष्ट रूप से समझाने के लिए स्पष्ट करना चाहता था कि मुझे क्या करना है।

मेरे पर्सनल कंप्यूटर: नामित 'घर' उपयोगकर्ता खाता 'माइकल' मेरे वेब सर्वर के साथ: मेरी वेबसाइट: उपयोगकर्ता खाता 'दूरस्थ' और उपयोगकर्ता खाता 'अपाचे'

वर्तमान स्थिति के साथ 'सर्वर' नाम मालिक 'माइकल' और मालिक 'अपाचे' के साथ 'सर्वर' पर 'घर' पर है। 'होम' को उपयोगकर्ता 'माइकल' और 'सर्वर' का उपयोग करने की आवश्यकता है उपयोगकर्ता 'अपाचे'

कार्य: मेरी वेबसाइट 'होम' पर 'सर्वर' पर rsync करें लेकिन सभी फाइलें स्वामी द्वारा ' अपाचे 'और समूह' अपाचे '

समस्या: rsync अनुमतियों, मालिक और समूह को पूर्व निर्धारित करेगा; हालांकि, मुझे अपाचे द्वारा सभी फाइलों को मालिक होने की आवश्यकता है। मुझे पता है कि मालिक को उपयोगकर्ता के मालिक को 'सर्वर' पर नहीं रखा जाएगा, लेकिन चूंकि वह उपयोगकर्ता 'रिमोट' है, तो यह 'अपाचे' के बजाय इसका उपयोग करता है। मैं उपयोगकर्ता 'apache' (जो अच्छा होगा) के साथ rsync नहीं कर सकता, लेकिन एक सुरक्षा जोखिम मैं खोलने के लिए तैयार नहीं हूँ।

हल करने के तरीके पर मेरा एकमात्र विचार: प्रत्येक rsync मैन्युअल रूप से दिखाए जाने के बाद -आर और chgrp -R, लेकिन यह एक बड़ी प्रणाली है और इसमें काफी समय लगता है, खासकर जब यह उत्पादन में जा रहा है।

किसी को भी ऐसा करने के तरीके पता है?

वर्तमान आदेश मैं rsync करने के लिए उपयोग करें: rsync --progress -rltpDzC --force --delete -e "ssh -p22" ./ [email protected]:/वेबसाइट

+0

आप इस बारे में थोड़ा अस्पष्ट था कि आप फाइलों को कैसे स्थानांतरित कर रहे हैं - एसएसएच पर, मैं मान रहा हूं? क्या आप वेबसर्वर पर ssh-ing हैं, और यदि ऐसा है, तो उपयोगकर्ता के रूप में क्या? क्या आप कमांड प्रदान कर सकते हैं क्योंकि आप इसे अभी चला रहे हैं? – Adam

+0

मैंने अपने प्रश्न को गहन स्पष्टीकरण के लिए अपडेट किया। हां, एक रिमोट वेब सर्वर पर ssh से rsync का उपयोग कर रहा हूँ। –

उत्तर

11

हैक्स आप कर सकते थे कर रहे हैं स्वामित्व प्राप्त करने के लिए प्राप्त करने वाली मशीन पर एक साथ रखो, क्रॉन से बाहर 'chmod -R apache/वेबसाइट' चलाएं एक प्रभावी लेकिन सुंदर क्लूजी विकल्प होगा - लेकिन इसके बजाय, मैं सुरक्षित रूप से अनुशंसा करता हूं rsync-over- ssh के रूप में अपाचे।

आप इस के लिए एक समर्पित ssh कुंजीयुग्म बनाएंगे:

ssh-keygen -f ~/.ssh/apache-rsync 

और फिर ले ~/.ssh/apache-rsync.pub से अधिक वेबसर्वर, जहां आप इसे ~ अपाचे में डाल दिया था करने के लिए/

command="rsync --server -vlogDtprCz --delete . /website",from="IP.ADDR.OF.SENDER",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAABKEYPUBTEXTsVX9NjIK59wJ+fjDgTQtGwhATsfidQbO6u77dbAjTUmWCZjKAQ/fEFWZGSlqcO2yXXXXXXXXXXVd9DSS1tjE6vAQaRdnMXBggtn4M9rnePD2qlR5QOAUUwhyFPhm6U4VFhRoa3wLvoqCVtCV0cuirB6I45On96OPijOwvAuz3KIE3+W9offomzHsljUMXXXXXXXXXXMoYLywMG/GPrZ8supIDYk57waTQWymUyRohoQqFGMzuDNbq+U0JSRlvLFoVUZ5Piz+gKJwwiFwwAW2iNag/c4Mrb/BVDQAyEQ== [email protected] 

और

01,235,164 की तरह कुछ तो अपने "घर" मशीन पर अपने rsync कमांड यह होगी: .ssh/authorized_keys और ध्यान से एक लाइन पर तो जैसे कुछ अनुमति आदेश निर्दिष्ट करते हैं,, सभी
rsync -av --delete -e 'ssh -i ~/.ssh/apache-rsync apac[email protected]' ./ /website 

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

संदर्भ यहाँ: http://ramblings.narrabilis.com/using-rsync-with-ssh, http://www.sakana.fr/blog/2008/05/07/securing-automated-rsync-over-ssh/

+0

धन्यवाद। मुझे नहीं पता था कि एसएसएच सुरक्षा कुछ आदेशों के लिए विशिष्ट हो सकती है। –

7

अंतिम संस्करण (कम से कम 3.1।

--usermap=tom:www-data 

परिवर्तन टॉम www-डेटा (उर्फ PHP/Nginx) के स्वामित्व: 1) rsync की आप "दूरस्थ स्वामित्व" निर्दिष्ट करने के लिए अनुमति देता है। यदि आप क्लाइंट के रूप में मैक का उपयोग कर रहे हैं, तो अंतिम संस्करण में अपग्रेड करने के लिए ब्रू का उपयोग करें। और अपने सर्वर पर, अभिलेखागार स्रोत डाउनलोड करें, फिर इसे "बनाएं"!

+0

धन्यवाद! मैं इसे देख लूंगा। –

28

आप rsync v.3.1.0 या बाद में करने के लिए पहुँच है, तो --chown विकल्प का उपयोग:

rsync -og --chown=apache:apache [src] [dst] 
एक समान प्रश्न यहां से एक जवाब में

और जानकारी: ServerFault: Rsync command issues, owner and group permissions doesn´t change

+0

क्रॉस-साइट विलय नहीं कर सकता, डेविड - हालांकि क्रॉसलिंक के लिए धन्यवाद। – Shog9

+1

ऐसा लगता है कि '--chown' का उपयोग करने के लिए क्लाइंट ** और सर्वर ** दोनों 3.1.0+ चलाना चाहिए। – Jacket

+0

धन्यवाद! मेरी स्थानीय मशीन पर होमब्री के साथ अद्यतन rsync और यह एक आकर्षण की तरह काम किया – OregonTrail

संबंधित मुद्दे