क्या मुझे rsync के लिए रूट खाता सक्षम करना चाहिए?


10

मैं रूट खाता कैसे सक्षम कर सकता हूं? मुझे पता है कि यह आमतौर पर अनुशंसित नहीं है, लेकिन मैं rsync का उपयोग करके अपने सर्वर को बैकअप करने के लिए एक गैर-संवादात्मक स्क्रिप्ट सेटअप करना चाहता हूं। मैं उपयोग कर सकता था --rsync-path="sudo rsync"लेकिन फिर मुझे अपना sudo पासवर्ड क्लियर करने की आवश्यकता होगी जो रूट अकाउंट को सक्षम करने की तुलना में बहुत खराब लगता है।

जवाबों:


10
  1. mybackupक्लाइंट और सर्वर पर नए, अलग उपयोगकर्ता खाते बनाएँ
  2. sudo passwd -l mybackupसीधे प्रवेश को रोकने के लिए इन खातों के साथ पासवर्ड लॉक करें
  3. अनुमति दें, के माध्यम से sudo, उन नए खातों एक बहुत ही विशेष को चलाने के लिए /usr/bin/rsync/ --some-long-command /from/here /to/thereरूट के रूप में आदेश के साथ NOPASSWD:में /etc/sudoersउपयोग करते हुएsudo visudo
  4. उपयोग करने वाले दूरस्थ होस्ट के लिए स्थानीय के लिए नई पासवर्ड रहित SSH कुंजियाँ बनाएँ sudo -u mybackup ssh-keygen
  5. परिवहन का उपयोग करके sudo -u crontab -eरिमोट और कुंजियों को चलाने के लिए एक या दूसरे छोर पर जोड़ेंrsyncssh

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


ठीक यही है कि मैंने सूडोर्स में बहुत विशिष्ट कमांड की अनुमति देने के बारे में नहीं सोचा था (मैंने 'rsync' की अनुमति दी थी)। महान सुझाव!
ओलिवियर लालोंडे

2
+1 "बहुत विशिष्ट ... कमांड" नोट करने के लिए। अन्यथा, उपयोगकर्ता को चलाने का अधिकार sudo rsyncदेने और उपयोगकर्ता को rsync को दिए गए विकल्पों को चुनने की अनुमति देने का मतलब है कि उपयोगकर्ता /etc/sudoersउदाहरण के लिए फ़ाइल को पढ़ने / लिखने के लिए rsync का उपयोग कर सकता है , और खुद को पूर्ण sudo पहुँच प्रदान कर सकता है।
सुजैन डुपरॉन

7
  1. आप /etc/sudoersजो कुछ भी कमांड (या सभी उपयोगकर्ता) चला रहे हैं, उसे rootबिना पासवर्ड के चलाने के लिए अनुमति दे सकते हैं ।

  2. क्या आप पूरी कमांड / स्क्रिप्ट नहीं चला सकते / जो भी हो root? मुझे लगता है कि यह क्रोन के माध्यम से चलने वाला है इसलिए बस एक rootनौकरी जोड़ें :

    sudo crontab -e
    

    नोट: आप अपने क्रोन कमांड को bash -e "..."ब्रेस में लपेटकर काफी जटिल चीजें कर सकते हैं या बस इसे एक अलग स्क्रिप्ट में कर सकते हैं। यह मानते हुए कि यह निर्धारित नहीं है, अगर rootइसे चलाता है (के माध्यम से cron), तो यह चल जाएगा rootताकि आपकी अनुमति समस्या का समाधान हो।


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

आप प्रत्येक छोर पर एक स्क्रिप्ट लिख सकते हैं और इसे sudoसामान्य उपयोगकर्ताओं द्वारा चलाने की अनुमति दे सकते हैं। यह सिर्फ अनुमति देने से अधिक सुरक्षित होगा rsync
ओली

सूदो एक महान विचार है। आप यह निर्दिष्ट कर सकते हैं कि कौन सा उपयोगकर्ता किस कमांड को चला सकता है। कर दो।
फ्रैंक

6

आप रूट उपयोगकर्ता को पासवर्ड दे सकते हैं (लेकिन नहीं करना चाहिए)

sudo passwd root

संपादित करें: Setuid बिट स्क्रिप्ट के लिए काम नहीं करता है। अन्यथा, आप बैकअप प्रोग्राम पर सेट्युड बिट का उपयोग कर सकते हैं।

sudo chown root backup
sudo chmod u+s backup

हो सकता है, आप भी बैकअप को क्रॉन जॉब के रूप में चलाना चाहते हों?


1
आप sudo रन के बाद से "रूट" निर्दिष्ट करने के लिए रूट के env के रूप में अपनी उपयोगकर्ता की जरूरत नहीं है है जड़। ( sudo whoamiरिटर्न, रूट) तो बस sudo passwdजरूरत है।
मार्को Ceppi


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