sudo कुछ कमांड पर काम नहीं कर रहा है


15

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

उदाहरण:

यह विन्यास ठीक काम करता है

root@server:~# cat /etc/sudoers.d/nginx 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/nginx

और यह विफल रहता है:

root@server:~# cat /etc/sudoers.d/update-rc.d 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/update-rc.d

user@www42:~$ sudo update-rc.d 
[sudo] password for user: 
Sorry, user user is not allowed to execute '/usr/sbin/update-rc.d' as root on server.

क्या गलत हो सकता है?

निदान:

Mar  5 12:12:51 server sudo:    user : command not allowed ; TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/sbin/update-rc.d
Mar  5 12:14:25 www42 su[1209]: pam_unix(su:session): session closed for user user

root@server:~# sudo --version
Sudo version 1.8.10p3
Configure options: --prefix=/usr -v --with-all-insults --with-pam --with-fqdn --with-logging=syslog --with-logfac=authpriv --with-env-editor --with-editor=/usr/bin/editor --with-timeout=15 --with-password-timeout=0 --with-passprompt=[sudo] password for %p:  --disable-root-mailer --with-sendmail=/usr/sbin/sendmail --with-rundir=/var/lib/sudo --mandir=/usr/share/man --libexecdir=/usr/lib/sudo --with-sssd --with-sssd-lib=/usr/lib/x86_64-linux-gnu --with-selinux --with-linux-audit
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43

जवाबों:


28

समस्या डॉट इन update-rc.d(इन /etc/sudoers.d/update-rc.d) है; से man sudo:

#Includedir निर्देश का उपयोग एक sudo.d निर्देशिका बनाने के लिए किया जा सकता है जो सिस्टम पैकेज प्रबंधक sudoers नियमों को पैकेज स्थापना के भाग के रूप में छोड़ सकता है। उदाहरण के लिए, दिया गया:

#includedir /etc/sudoers.d

sudo /etc/sudoers.d में प्रत्येक फ़ाइल को पढ़ेगा, जो फ़ाइल नामों को स्किप करता है जो ~ या अंत में होता है a। चरित्र पैकेज प्रबंधक या संपादक अस्थायी / बैकअप फ़ाइलों के साथ समस्या पैदा करने से बचने के लिए।


3
यह sudoers में 2 संदिग्ध डिजाइन निर्णय है। का उपयोग करते हुए #एक टिप्पणी के रूप में और एक निर्देश के भाग के रूप में अच्छी तरह से अनदेखी फ़ाइलों के रूप में। दिलचस्प है (चिड़चिड़ापन) visudo -f some.file यह चेतावनी नहीं देता है कि बाहर निकलने पर इसे नजरअंदाज करने की संभावना है। क्वेरुलस अल्बाट्रॉस को एक साधारण अपवोट द्वारा शांत किया जा सकता है।
user9517

1
@istheEnglishway पूरी तरह से सहमत हैं। लेकिन क्वेरुलस अल्बाट्रॉस क्वेरुलस रहता है।
14

फ़ाइलों को अनदेखा करना एक ~ (या, वास्तव में कुछ एक्सटेंशन वाले) वास्तव में एक बहुत अच्छा विचार है, क्योंकि आप निश्चित रूप से संपादन के बाद सक्रिय बैकअप फ़ाइल में पुराने कॉन्फ़िगरेशन को नहीं चाहते हैं। और आप शायद मैन्युअल रूप से जांचना नहीं चाहते हैं कि उस मशीन के संपादक ने बैकअप फ़ाइल को छोड़ दिया या नहीं। हालाँकि, यह केवल एक श्वेतसूची विस्तार (उदाहरण *.cf) के साथ केवल फ़ाइलों को शामिल करके किया जा सकता है, लेकिन फिर यह हो सकता है कि इस सुविधा को बाद में जोड़ा गया था और कुछ उपयोगकर्ता वैसे भी एक सेट एक्सटेंशन का उपयोग करने के लिए मजबूर होने के बारे में शिकायत करेंगे।
ilkkachu

जैसा कि हैश साइन के लिए टिप्पणियों में और निर्देशों में दोनों का उपयोग किया जा रहा है, किसी को भी जाँच करने के लिए कि क्या पिछड़े संगतता भी इसके पीछे तर्क है?
ilkachachu

5

कोशिश करें और sudo -llअपने उपयोगकर्ता के लिए लागू आदेशों / विन्यास की सूची प्राप्त करने के लिए दौड़ें ।

यदि (जैसा कि मामला प्रतीत होता है) आपके अपडेट- rc.d क्लॉज दिखाई नहीं देते हैं, तो आप कई के बजाय प्रति उपयोगकर्ता sudoers.d फ़ाइल को तैनात करने के लिए अपने शेफ व्यंजनों को समायोजित करने पर विचार कर सकते हैं।

यदि समूह से संबंधित sudoers फ़ाइल को वॉरंट किया जा सकता है, तो आप इस पर भी विचार कर सकते हैं।

इस प्रश्न के उत्तर मदद कर सकते हैं: /ubuntu/246455/how-to-give-nopasswd-access-to-multiple-commands-via-sudoers

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