भूल जाओ sudo su
उपयोग करने के लिए कोई लाभ नहीं है sudo su
, यह तब से एक अभिरंजित आदत है जब लोगों को उपयोग करने के लिए इस्तेमाल किया गया था su
। sudo
जब लिनक्स डिस्ट्रोस ने रूट पासवर्ड सेट करना बंद कर दिया और sudo
रूट अकाउंट एक्सेस करने का एकमात्र तरीका बना तो लोगों ने सामने आना शुरू कर दिया । अपनी आदतों को बदलने के बजाय, उन्होंने बस इस्तेमाल किया sudo su
। (मैं अपेक्षाकृत हाल ही में उनमें से एक था जब sudoers
विन्यास वाले बक्से का उपयोग करके मुझे अपनी आदत बदलने के लिए मजबूर किया गया था)।
उपयोग sudo -u
एक लॉगिन शेल के लिए, sudo -u postgres -i
बेहतर है sudo su - postgres
। इसकी आवश्यकता नहीं है कि उपयोगकर्ता के पास रूट एक्सेस है /etc/sudoers
, उन्हें केवल उपयोगकर्ता बनने के अधिकार की आवश्यकता है postgres
। यह आपको बेहतर पहुंच नियंत्रण लागू करने की सुविधा भी देता है।
कमान के निष्पादन के लिए
sudo -u postgres psql -c "SELECT 1"
विकल्प से बेहतर है:
sudo su - postgres -c "psql -c \"SELECT 1\""
उस में आपको डबल-भागने के उद्धरण और अन्य शेल मेटाचैकर के साथ-साथ रूट की आवश्यकता नहीं होने के अन्य सुरक्षा लाभ नहीं हैं। आप शायद गलती से लेखन में उतर जाएंगे:
sudo su - postgres -c psql -c "SELECT 1"
कभी-कभी, जो ठीक से काम नहीं करेगा।
अंत में, यह पर्यावरण के चर के माध्यम से सेट करना आसान है sudo
, जैसे
sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster
के माध्यम से su
। (यहां, PATH
सेटिंग की आवश्यकता है ताकि initdb
सही postgres
निष्पादन योग्य मिल सके )।
इसलिए। su
आदेश मौजूद है भूल जाओ । अब आपको इसकी आवश्यकता नहीं है आदत को तोड़ने के लिए, इसे किसी ऐसी चीज़ के लिए उपनाम दें जो एक त्रुटि प्रिंट करेगी। (कुछ init और पैकेज सेटअप स्क्रिप्ट अभी भी उपयोग करते हैं su
इसलिए आप इसे हटा नहीं सकते, हालांकि)।
यह भी देखें: