सबसे बड़ा अंतर यह है कि sudo
आपको कमांड को रूट के रूप में चलाने के लिए रूट पासवर्ड की आवश्यकता नहीं है, जैसा कि आप करेंगेsu
। आपको sudoers
फ़ाइल में किसी को जोड़ने के लिए रूट पासवर्ड की आवश्यकता होती है, लेकिन उसके बाद वह व्यक्ति आगे पासवर्ड की आवश्यकता के बिना सभी या कुछ (यदि आपने इसे प्रतिबंधित किया है) को रूट के रूप में चला सकता है।
अन्य अंतर यह है, जैसा आपने नोट किया है, sudo
वास्तव में क्या कमांड चलाया जा सकता है इस पर बहुत बेहतर नियंत्रण की अनुमति देता है।
sudoers
फ़ाइल चलाने के प्रारूप के विवरण के लिए man sudoers
। आपको केवल कुछ आदेशों को रूट के रूप में चलाने की अनुमति देने के उदाहरण मिलेंगे। प्रत्येक पंक्ति की मूल संरचना है:
user_list host_list = cmd_list
cmd_list में वह विवरण शामिल हो सकता है जिसमें उपयोगकर्ता वास्तविक उपयोगकर्ता को स्विच करने की अनुमति देता है। उदाहरण के लिए, आप एक वेबमास्टर को Apache को पुनरारंभ करने के लिए wwwroot पर स्विच करने की अनुमति दे सकते हैं लेकिन रूट करने के लिए नहीं। इसमें अन्य विकल्प भी शामिल हो सकते हैं जैसे कि स्विच करने से पहले उपयोगकर्ता का पासवर्ड आवश्यक है (यह डिफ़ॉल्ट है)।
एक उदाहरण पंक्ति हो सकती है:
joe ALL=(ALL) ALL
जिसका अर्थ है: जो किसी भी उपयोगकर्ता के रूप में किसी भी होस्ट पर कोई कमांड चलाने के लिए दो। एक तंग रेखा हो सकती है:
joe ALL=(operator) /usr/local/ops/
जिसका अर्थ है: joe / usr / local / ops डायरेक्टरी में किसी भी कमांड को यूजर "ऑपरेटर" के रूप में चलाता है।
Sudoers man पेज के अंत में बहुत सारे उदाहरण हैं।
आपको /etc/sudoers
कमांड के साथ एडिट करना चाहिए visudo
। यह जाँचता है कि फ़ाइल कानूनी है और आपको इसे गलती से तोड़ने से रोकने में मदद करती है।
sudo
एक भयानक आविष्कार है