उपयोगकर्ता pi sudo अनुमतियां कैसे बदलें; विभिन्न अनुमतियों के साथ अन्य खाते कैसे जोड़ें?


14

चूंकि मैं कभी-कभी SSH के ऊपर अपने पाई का उपयोग करता हूं, इसलिए मैंने सीखा है कि SSH को सुडो कमांड का उपयोग करने की अनुमति देना खतरनाक है। इस प्रकार, मैं निकट भविष्य में इस अनुमति को बंद करने की योजना बना रहा हूं। लेकिन, जब मैं पैकेज स्थापित करता हूं तो मुझे आमतौर पर रिबूट करना पड़ता है। वर्तमान में, यह केवल सुपरयुसर के माध्यम से अनुमति है।

sudo reboot

क्या कोई ऐसा तरीका है जिससे मैं pi उपयोगकर्ता की अनुमति को संपादित कर उसे रिबूट (और इंस्टॉल) करने की अनुमति दे सकूं?

क्या मेरे पास विभिन्न अनुमतियों के साथ कई खाते हो सकते हैं?

धन्यवाद


1
क्या दिया गया कोई उत्तर सहायक है? क्या उनमें से कोई है जिसका उत्तर आपने खोजा है? कृपया फिर से चिह्नित करें जैसा कि उत्तर दिया गया है।
एंडर्स

हाँ। यदि आप अभी भी रुचि रखते हैं, तो मैंने उन्हें जून 2017 तक अपडेट किया - यह सवाल 4 साल और 2 महीने पहले पूछा गया था, और आज मुझे समस्या को हल करने के तरीके की ओर ले गया। नीचे दिए गए उत्तरों की जाँच करें:
एसडीसोलर

जवाबों:


22

थोड़ा स्पष्ट करने के लिए: कोई "sudo कमांड" नहीं हैं, केवल कमांड हैं जिन्हें सही तरीके से संचालित करने के लिए रूट विशेषाधिकारों की आवश्यकता होती है और sudoउन्हें एक कमांड के लिए प्राप्त करने की कमांड है: sudoबस दिए गए कमांड को रूट के रूप में चलाता है ("sudo" को आवश्यक के रूप में पढ़ें) वाक्य "सुपरयुसर, कुछ करो!")। जिन नियमों के बारे में उपयोगकर्ता ऐसा कर सकते हैं, वे नीचे लिखे गए हैं /etc/sudoers। डिफ़ॉल्ट रास्पियन इंस्टॉलेशन पर, डिफ़ॉल्ट उपयोगकर्ता "पी" को इस लाइन से अपनी अनुमति मिल गई है:

pi ALL=(ALL) NOPASSWD: ALL

इसका अर्थ है: सभी होस्ट पर "उपयोगकर्ता 'pi को सभी उपयोगकर्ताओं पर स्विच करने की अनुमति है और NOt को सभी का उपयोग करते समय अपना PASSWD टाइप करना होगा (पढ़ें: कोई भी) कमांड"। (मैंने लाइन के क्रम को बनाए रखने के लिए यहाँ पागल व्याकरण का उपयोग किया है .. मेजबानों को अलग करने का एक तरीका क्यों है इस पर एक नोट: इस तरह, एक ही sudoers फ़ाइल को एक नेटवर्क पर कई मशीनों में वितरित किया जा सकता है, इसलिए नेटवर्क व्यवस्थापक के पास कम काम है) ।

यह हो सकता है कि एडमिन पासवर्ड जारी किए बिना sudo का उपयोग करके कमांड चलाने में सक्षम हो, यही कारण है कि आप SSH पर sudo का उपयोग करना खतरनाक समझते हैं (मैंने ऐसा करने के साथ एक सामान्य समस्या के बारे में नहीं सुना है ... इसलिए आप कर सकते हैं स्पष्ट करें कि आपको किस खतरे का मतलब है?)।

सुनिश्चित करें कि आपके पास विभिन्न अनुमतियों के साथ कई उपयोगकर्ता हो सकते हैं। लेकिन मुझे डर है कि इन अनुमतियों को प्रबंधित करने के लिए sudo का उपयोग करना अभी भी सबसे अच्छा तरीका है।

तो, मुझे आशा है कि यह छोटी सी रेसिपी यहाँ है जो आपको चाहिए:

$ sudo adduser admin

यह एक उपयोगकर्ता "एडमिन" बनाएगा, पासवर्ड मांगेगा, उसकी होम डायरेक्टरी बनाएगा आदि।

$ sudo adduser admin sudo
$ sudo adduser admin adm

यह "व्यवस्थापक" उपयोगकर्ता को उपयोगकर्ता समूह "sudo" और "प्रशंसा" में डाल देगा। और चूंकि लिनक्स को उपयोगकर्ताओं को उपयोगकर्ता समूह में जोड़कर अनुमतियाँ प्रबंधित की जाती हैं, इसलिए यह "व्यवस्थापक" उपयोगकर्ता को सभी विशेषाधिकार और अनुमतियाँ देता है जिसकी उसे आवश्यकता होती है। इसमें एक पंक्ति है /etc/sudoersजो किसी भी उपयोगकर्ता को रूट कमांड के रूप में किसी भी कमांड को निष्पादित करने के लिए उपयोगकर्ता समूह "sudo" में अनुमति देता है; और यह विशेषाधिकार है जो हमें एक व्यवस्थापक उपयोगकर्ता के लिए चाहिए (उसे "प्रशंसा" में शामिल करने से उसे /var/logबिना उपयोग sudoऔर कुछ अन्य चीजों के कुछ लॉग फ़ाइलों को पढ़ने की अनुमति मिलती है )। sudoजब आप व्यवस्थापक के रूप में लॉग इन करते हैं तब भी आपको उपयोग करने की आवश्यकता होती है - लेकिन अब sudo बार-बार व्यवस्थापक के पासवर्ड के लिए पूछता है जब भी आपने लगभग पांच मिनट तक sudo का उपयोग नहीं किया था।

अब लॉग ऑफ करें और यूजर "एडमिन" के रूप में लॉग ऑन करें। हवामान जाँच लो

$ sudo apt-get update
$ sudo apt-get upgrade

काम करता है। यदि ऐसा होता है, तो आप "pi" उपयोगकर्ता के कुछ विशेषाधिकारों को रद्द कर सकते हैं, क्योंकि अब आप सुनिश्चित हैं कि आपके व्यवस्थापक उपयोगकर्ता के पास सही विशेषाधिकार हैं:

$ sudo deluser pi sudo
$ sudo deluser pi adm

यह उपयोगकर्ता "पी" को उपयोगकर्ता समूह "सूडो" से बाहर फेंक देता है।

$ sudo visudo

यह एक संपादक शुरू करेगा जो आपको संपादित करने की अनुमति देता है /etc/sudoers#"पी" से शुरू होने वाली लाइन से पहले एक हैश टैग ( ) डालें , यह टिप्पणी करते हुए (या बस इसे हटा दें)। फिर संपादक को बचाने और बाहर निकलने के लिए, विडोको फिर विशेषाधिकार नियमों को तुरंत लोड करेगा। अब उपयोगकर्ता "pi" को sudo का उपयोग करने की अनुमति नहीं है।

उसके बाद, आप उपयोगकर्ता "पी" के रूप में पुनः लॉग-इन कर सकते हैं। यदि आप कभी भी कुछ कमांड के लिए एडमिन पर स्विच करना चाहते हैं, तो su("स्विच यूजर") का उपयोग करें:

$ su - admin

यदि आप अधिक उपयोगकर्ता जोड़ना चाहते हैं: sudo adduser <name>ऊपर की तरह उपयोग करें , तो उपयोगकर्ता "पी" को मिला उपयोगकर्ता समूह की सूची देखें:

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

sudo adduser <username> <groupname>अपने नए उपयोगकर्ता को इनमें से कई उपयोगकर्ता समूह में जोड़ने के लिए उपयोग करें , जिससे वह ऑडियो, त्वरित वीडियो, प्लग करने योग्य उपकरणों का उपयोग करने में सक्षम हो, आदि यदि अनिश्चित हो, तो उसे इन सभी उपयोगकर्ता समूह में जोड़ें (लेकिन "sudo" पर नहीं!)।


2
visudoएक कमांड है जो sudoers फ़ाइल को संपादित करने के लिए आपके डिफ़ॉल्ट संपादक का उपयोग करेगा। इसके बिना इस फ़ाइल को संपादित करना एक दर्द हो सकता है और अनुशंसित नहीं है । आप अपने पसंदीदा संपादक को जारी करके बदल सकते हैंsudo update-alternatives --config editor
EarthmeLon

या आप VISUAL=vim visudoसिर्फ इस समय के लिए यह कोशिश कर सकते हैं । लेकिन डिफ़ॉल्ट कार्यक्रमों को बदलने के महान उदाहरण, संपादक की तरह।
एंडर्स

6

हां, आप sudoकेवल अतिरिक्त विशेषाधिकारों के साथ उपयोगकर्ता को कुछ कमांड चलाने के लिए कॉन्फ़िगर कर सकते हैं । आप इसे अपनी /etc/sudoersफ़ाइल में बदल सकते हैं , लेकिन यह सलाह दी जाती है कि इसे सीधे न करें लेकिन इसके लिए sudo visudoकमांड का उपयोग करें।

डिफ़ॉल्ट सिस्टम इंस्टॉलेशन में आपको ऐसी लाइन मिलनी चाहिए:

pi ALL=(ALL) NOPASSWD: ALL

यह sudoउपयोगकर्ता piको rootपासवर्ड प्रदान किए बिना सभी कैममैंड को उपयोगकर्ता के रूप में चलाने की अनुमति देना बताता है । आप ALLचलाने के लिए अनुमति दी गई अंतिम कमांड को बदल सकते हैं और कमांड की सीमांकित सूची निर्दिष्ट कर सकते हैं । आपके मामले में आपको यह लाइन बदलनी चाहिए:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

ध्यान दें कि उपयोगकर्ता sudoersको प्रभावित करने में एक और पंक्ति है pi:

%sudo   ALL=(ALL:ALL) ALL

इस पंक्ति को सभी उपयोगकर्ताओं को समूह sudo( %नाम के सामने वर्ण का अर्थ है कि यह उपयोगकर्ता के नाम के बजाय एक समूह का नाम है) सभी पासवर्ड प्रदान करते हैं, बशर्ते कि वे अपना स्वयं का पासवर्ड जानते हों । यदि आप इस लाइन को छोड़ देते हैं, तो उपयोगकर्ता piअन्य सभी कमांड चला सकेगा , लेकिन उससे पासवर्ड मांगा जाएगा।

यदि आप इसे होने से रोकना चाहते हैं तो आप इस लाइन को हटा सकते हैं या उपयोगकर्ता piको sudoसमूह से हटा सकते हैं ।

/etc/sudoersफ़ाइल में परिवर्तन करने के बाद आप निरीक्षण कर सकते हैं कि यह वास्तव में वही करता है जो आप sudo -l -U piकमांड को कॉल करके चाहते हैं ।

बेशक आप अलग-अलग खाते बना सकते हैं और sudoersउन्हें विभिन्न कमांडों तक पहुंच प्रदान कर सकते हैं।


1

मई 2018, यह अभी भी अवधारणा में स्पष्ट है लेकिन बाद के संस्करणों के साथ प्रक्रिया बदल गई है:

सबसे पहले, फ़ाइलों को सीधे vi या नैनो या लीफपैड या emacs में संपादित किया जाना चाहिए - जो भी आपका पसंदीदा पाठ संपादक है।

इस फ़ाइल में यूज़रनेम पी का उल्लेख नहीं है:

/etc/sudoers

और फ़ाइल की अंतिम पंक्ति यह है:

#includedir /etc/sudoers.d

यह एक निर्देशिका है जिसमें एक फ़ाइल नाम है

010_pi-nopasswd

जिसमें यह एकल पंक्ति है

pi ALL=(ALL) NOPASSWD: ALL

जब तक मैं उपयोगकर्ता पी के रूप में लॉग इन कर रहा हूँ किसी भी sudo कमांड के लिए संकेत नहीं करने का प्रभाव है। (ध्यान दें कि सिंटैक्स ठीक इसी तरह होना चाहिए)

यह भी खूब रही।

समूह रेखा %sudo ALL=(ALL:ALL) ALLअभी भी वहीं है

तो सवाल के पहले भाग का जवाब देने के लिए:

जब मैंने फ़ाइल /etc/sudoers/sudoers.d/010_pi-nopasswd फ़ाइल को शामिल करने के लिए एक डायरेक्टरी स्तर को ऊपर उठाया, जिसमें फेल हो गया, तो 15 मिनट इंतजार किया, इसने मेरे रास्पबियन सिस्टम को सूडो के उपयोग के लिए अपने स्वयं के पासवर्ड के लिए संकेत दिया। मेरे Ubuntu 14.04 LTS सिस्टम की तरह।

फिर जब मैंने इसे वापस ले लिया, जहां यह है, तो 10 मिनट के बाद भी यह मुझे प्रेरित नहीं करता है।

कोई रिबूट आवश्यक नहीं है। Voo, sudo का उपयोग करते समय पासवर्ड के लिए संकेत नहीं दे रहा है

मेरे lubuntu 14.04 एलटीएस परीक्षण प्रणाली में एक ही सेटअप है सिवाय इसके कि 010_pi-nopasswd फ़ाइल मौजूद नहीं थी। रूट उपयोगकर्ता के रूप में lubuntu को pi के साथ स्थापित किया गया था। इसने मुझे हर बार संकेत दिया कि मैंने सुडो का उपयोग किया है, फिर बाद में 10 मिनट के लिए मुझे संकेत नहीं दिया।

मैंने उसी फाइल को उबंटू प्रणाली में जोड़ा, जिस तरह से रास्पियन को स्थापित किया गया है, (इस फ़ाइल पर 0440 को याद रखना जब आप अभी भी उस 10 मिनट की खिड़की में हैं) - और

वोइला, यह अब मुझे अपने पासवर्ड के लिए संकेत नहीं देता है जब मैं 15 मिनट के बाद भी पाई के रूप में लॉग इन होता हूं।

फिर, परिवर्तन तुरंत आवश्यक नहीं रिबूट के साथ होता है।

यह मई 2018 का उत्तर है कि कैसे रूट यूजर पी में लॉग इन करते समय सुडो कमांड के उपयोग के लिए संकेत को अक्षम और सक्षम किया जाए। अन्य उपयोगकर्ताओं और समूहों को इसी शैली में कॉन्फ़िगर किया जा सकता है।

- उबंटू 16.04 एलटीएस के लिए अद्यतन करें यह प्रणाली बहुत समान है। हालाँकि, सबसे बड़ा अंतर यह है कि 16.04 में बहुत अधिक सख्त फ़ाइल अनुमतियां हैं, इसलिए कार्य को suमोड में किया जाना चाहिए । यदि आप अपना रूट पासवर्ड भूल गए हैं तो आप इसे अपने सामान्य प्रॉम्प्ट से रीसेट कर सकते हैं। sudo passwd rootइसके बाद suकमांड काम करेगा और आप वहां से जा सकते हैं।


बस इसे Google के माध्यम से पाया गया - इसलिए यदि मैं इसका अनुसरण कर रहा हूं, तो उपयोगकर्ता को अभी भी sudoers समूह में होना चाहिए, लेकिन /etc/sudo.d नियंत्रित करता है कि विशिष्ट उपयोगकर्ता से पासवर्ड के लिए कितनी बार पूछा जाता है?
लोनस्टार

1
हां। तुम्हें यह मिल गया है। इसका सदस्य sudoersआमतौर पर उस समय किया जाता है जब उपयोगकर्ता बनाया जाता है। उदाहरण का उपयोग करें: आप ध्यान देंगे कि सामान्य कमांड स्ट्रिंग sudo apt-get update && sudo apt-get upgradeदो बार सूडो का आह्वान करती है, फिर भी यह कष्टप्रद है कि यह रुक सकता है और नवीनीकरण से पहले पासवर्ड के लिए फिर से पूछ सकता है। इसलिए मैंने अपना एक लॉगिन नाम (पीआई) का संकेत देने के लिए कभी भी सेट नहीं किया और तब भी इसका उपयोग sudo apt-get update -y && sudo apt-get upgrade -yकरता हूं, इसी तरह से बड़े बदलाव करने के लिए ओके पूछने के लिए बंद नहीं होगा। इसे और अधिक यूनिक्स की तरह बनाने के लिए। बस वही करो जो मैं पूछता हूं, और यहां तक ​​कि अगर मैं दूर चला जाता हूं तो मैं चाहता हूं कि यह समाप्त हो जाए।
एसडीसोलर

0

यह किसी भी उपयोगकर्ता को पैकेजों को स्थापित करने की अनुमति देने के मुकाबले एसएसएच के माध्यम से सुडो तक पहुँचने के लिए सुरक्षित है। यदि आप वास्तव में इसके बारे में चिंतित हैं, तो इसे इस लाइन /etc/sudoersसे बदल दें :

pi ALL=(ALL) NOPASSWD: ALL

सेवा

pi ALL=(ALL) PASSWD: ALL

इसका मतलब है कि आप किसी भी सत्र में पहली बार sudo का उपयोग करने के लिए एक पासवर्ड के लिए प्रेरित होंगे, और फिर कुछ मिनटों के समय के बाद। आप /etc/sudoersसीधे संपादित नहीं कर सकते ; sudo visudoऐसा करने के लिए उपयोग करें।

Krzysztof की तरह लग रहा है बस वहाँ एक जवाब के साथ hopping। क्या आप वाकई नए पैकेज स्थापित करने के लिए हर बार रिबूट करने की आवश्यकता है? जब तक आप एक नया कर्नेल या फर्मवेयर स्थापित नहीं कर रहे हैं, तब तक रिबूट की आवश्यकता नहीं है। यह एक गुणवत्ता ओएस है जो हमें यहाँ मिला है ...


3
timestampटाइमआउट का उल्लेख करना एक अच्छा विचार है। यह डिफ़ॉल्ट रूप से 15 मिनट है, BTW। ध्यान दें कि PASSWDयह डिफ़ॉल्ट है (यदि NOPASSWDइस कमांड सूची में पहले निर्दिष्ट नहीं किया गया था)। यह भी नोट करें कि /etc/sudoersसमस्याओं के बिना सीधे संपादित किया जा सकता है यदि आप जानते हैं कि आप क्या कर रहे हैं। का उपयोग करते हुए visudoअस्थायी फ़ाइल में बनाता है परिवर्तन फ़ाइल को रोकने ऑटो परिवर्तन (जो वाक्यविन्यास त्रुटियों और / या सुरक्षा समस्याओं को लागू कर सकते हैं) के बीच में लिखा होना चाहिए, यह एकाधिक संपादन के खिलाफ इस फाइल ताले और फ़ाइल लिखने से पहले कुछ वाक्य रचना की जाँच करता है।
Krzysztof Adamski

मुझे लगता है कि ओपी अपडेट जो शायद ही कभी होता है कि उसे हमेशा एक नया कर्नेल मिलता है ... या किसी सहकर्मी ने उसे हर बार रिबूट करने के लिए कहा, क्योंकि वह यह नहीं बताना चाहता था कि ओपी अपडेट सूची में कर्नेल पैकेज को कैसे प्रदर्शित कर सकता है।
ओरिथेना

इस टिप्पणी के लिए TNX, @Krzysztof मैंने अपने उत्तर में सुधार किया। और आप संपादन के बारे में सही हैं। वास्तव में, मेरी 16.04 मशीन पर, मैंने बस pi लाइन को सीधे sudoers फ़ाइल में डाला, क्योंकि sudoers.d में सिर्फ एक रीडमी सम्‍मिलित था। मैंने इसे सिर्फ 'कारण' में छोड़ दिया, लेकिन कम से कम पाई अनुमतियों पर कार्रवाई की जा रही है। (मेरा पसंदीदा संपादक VI / VIM, btw है, लेकिन कभी-कभी लीफपैड या आइडल का उपयोग करेगा। फिर से महारत हासिल करने में महारत हासिल नहीं है - 15 साल एक लंबा समय है - और मैं बहुत अधिक, जल्दी कर सकता हूं, जितना कि मैं emacs में कर सकता हूं। , दूर तक।) फिर से धन्यवाद।
एसडीसोलर

0

स्क्रैच ने क्या कहा, इसका केवल एक विकल्प है, /etc/sudoers.d/010_pi-nopasswdफ़ाइल को चलाकर हटा दें sudo rm /etc/sudoers.d/010_pi-nopasswd। बहुत आसान और सुरक्षित फिर मुख्य sudoers फ़ाइल को संपादित करना, जो sudo को तोड़ सकता है।

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