sudo नहीं खोल सकता / etc / sudoers


15

sudoकाम नहीं करता। मेरे पास आर्क लिनक्स है जो BTRFS के साथ स्वरूपित USB कुंजी पर स्थापित है। जब मैं 'sudo' चलाता हूं तो यहां आउटपुट होता है:

$ sudo
sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

$ ls -l /etc/sudoers
-r--r----- 1 root root 2849 May 18 15:00 /etc/sudoers

$ lsattr /etc/sudoers
--------------- /etc/sudoers

$ ls -ld /etc
drwxr-xr-x 1 root root 2476 May 25 13:45 /etc

$ ls -ld /
drwx------ 1 root root 142 May 25 06:51 /

$ ls -l $(which sudo)
---s--x--x 2 root root 123995 May 25 13:10 /usr/bin/sudo

$ strace -u ross sudo true 2>&1 | egrep '(sudo|set.*[ug].*id)'
execve("/usr/bin/sudo", ["sudo", "true"], [/* 30 vars */]) = 0
read(3, "31799 (sudo) R 31796 31796 31754"..., 1024) = 223
lstat64("/etc/sudo.conf", 0xbfcddeb0)   = -1 ENOENT (No such file or directory)
stat64("/usr/lib/sudoers.so", {st_mode=S_IFREG|0755, st_size=235092, ...}) = 0
open("/usr/lib/sudoers.so", O_RDONLY|O_CLOEXEC) = 3
stat64("/usr/lib/sudoers.so", {st_mode=S_IFREG|0755, st_size=235092, ...}) = 0
setresuid32(0, -1, -1)                  = 0
setresgid32(-1, 0, -1)                  = 0
setresuid32(-1, 1, -1)                  = 0
lstat64("/etc/sudoers", 0xbfcddd60)     = -1 EACCES (Permission denied)
setresuid32(-1, 0, -1)                  = 0
write(2, "sudo", 4sudo)                     = 4
write(2, "unable to stat /etc/sudoers", 27unable to stat /etc/sudoers) = 27
setresuid32(-1, 1, -1)                  = 0
setresgid32(-1, -1, -1)                 = 0
setresuid32(-1, 0, -1)                  = 0
setresuid32(-1, 0, -1)                  = 0
setresgid32(-1, 1000, -1)               = 0
write(2, "sudo", 4sudo)                     = 4
write(2, "no valid sudoers sources found, "..., 40no valid sudoers sources found, quitting) = 40
write(2, "sudo", 4sudo)                     = 4


$ ltrace -u ross sudo true 2>&1 | egrep '(sudo|stat|set.*[ug].*id)'
bindtextdomain("sudo", "/usr/share/locale")      = "/usr/share/locale"
textdomain("sudo")                               = "sudo"
fopen("/proc/31813/stat", "r")                   = 0x9e51d40
__xstat(3, "/dev/console", 0xbffd6074)           = 0
__xstat(3, "/dev/wscons", 0xbffd6074)            = -1
__xstat(3, "/dev/pts/4", 0xbffd6074)             = 0
__lxstat64(3, "/etc/sudo.conf", 0xbffd9040)      = -1
strlen("sudo")                                   = 4
memcpy(0x09e51e71, "sudo", 4)                    = 0x09e51e71
__xstat64(3, "/usr/lib/sudoers.so", 0xbffd810c)  = 0
dlopen("/usr/lib/sudoers.so", 257 <unfinished ...>
dlsym(0x09e51ef8, "sudoers_policy")              = 0xb75af520
__xstat64(3, "/usr/lib/sudoers.so", 0xbffd810c)  = 0
dlopen("/usr/lib/sudoers.so", 257)               = 0x09e51ef8
dlsym(0x09e51ef8, "sudoers_io")                  = 0xb75af560
fputs("sudo", 0xb7760920sudo)                        = 1
fputs("unable to stat /etc/sudoers", 0xb7760920unable to stat /etc/sudoers) = 1
fputs("sudo", 0xb7760920sudo)                        = 1
fputs("no valid sudoers sources found, "..., 0xb7760920no valid sudoers sources found, quitting) = 1
fputs("sudo", 0xb7760920sudo)                        = 1
+++ exited (status 1) +++

किस बारे में ls -ld /etc?
अंसार एग्जटरमैन

नवीनतम संपादन में जोड़ा गया।
चिपुबा

3
आउटपुट दिखाएँ ls -l $(which sudo), यह समस्या का स्रोत है
daisy

क्या आपने सत्यापित किया है कि sudoers सिंटैक्स में कोई समस्या नहीं है?
टिम

एडिट में दोनों को जोड़ा गया, कोई सिंटैक्स त्रुटियां नहीं ...
चिपुबा

जवाबों:


19

ठीक है, आप के लिए उपयोग करने के लिए नहीं लगता / (सीडी नहीं कर सकते हैं),

क्या आप इसे आजमा सकते है chmod 755 /


@UlrichDangel वास्तव में? मैंने एक साधारण प्रोग्राम की कोशिश की, उन कॉल्स के साथ, भले ही प्रोग्राम suid-ed हो, फ़ंक्शन अभी भी -1 वापस आ जाएगा। (मैंने किया chown root ./suid_testऔर chmod 4755 ./suid_test), स्रोत कोड: pastebin.mozilla.org/1650215
daisy

'./suid_test': 0 setresuid: 0 0
चिपुबा

इस मुद्दे को ठीक नहीं करता
चिपूबा

"strace -uuli -f। /suid_test | & grep uid" कुछ भी नहीं पैदा करता है।
चिपुबा

"strace -f। /suid_test | & grep uid" का निर्माण: निष्पादित करें ("// suid_test ", [" / .suid_test "], [/ * 22 vars * /] = 0 geteuid32 () = 0 setresuid32 (0)। -1, -1) = 0 geteuid32 () = 0 लिखें (1, "0 \ nsetresuid: 0 \ n0 \ n", 170 setresuid: 0
चिपुबा

1

निष्पादन योग्य को रूट द्वारा निर्धारित और स्वामित्व में होना चाहिए:

$ ls -la /usr/bin/sudo
---s--x--x 2 root root 173154 Oct 19  2010 /usr/bin/sudo

आपका बाइनरी उन लक्षणों में से एक को याद कर रहा है। ऐसा करें (मूल के रूप में):

# chown root /usr/bin/sudo
# chmod u+xs /usr/bin/sudo

मैं गलत हो सकता हूं लेकिन मुझे नहीं लगता कि suid bit के लिए वापसी मान के रूप में गायब है setresuid32(0, -1, -1)और setresgid32(-1, 0, -1)दोनों समय 0 है जो इंगित करता है कि कार्यक्रम की सही अनुमति है
Ulrich Dangel

उलरिक डांगेल सही, दुख की बात है। इससे कोई फर्क नहीं पड़ता (और मैंने पहले ही कोशिश की थी)।
चिपुबा

0

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

उपयोगकर्ता माउंट सिस्टम में सबसे अधिक शायद कुछ टूट गया है।


-2

इन कदमों का अनुसरण करें:

~# chmod 440 /etc/sudoers
~# chmod -R 755 /root
~# chmod -R 755 /etc
~# chmod 755 /etc/phpmyadmin/config.inc.php

-1: यह बहुत बुरी सलाह है। आप आँख बंद करके में सब कुछ पर अनुमतियों को तोड़ नहीं होना चाहिए /rootऔर /etc। इन फ़ाइलों को अलग-अलग अनुमतियों के साथ स्थापित करने का एक कारण है। इन सभी फाइलों पर निष्पादन योग्य अनुमतियों को नेत्रहीन रूप से सेट करने की सलाह फर्जी है; इन पेड़ों की कुछ फाइलों को इसकी आवश्यकता होती है। और दुनिया में सब कुछ करने के लिए और पढ़ने की अनुमति देने की सलाह - /rootऔर /etcआश्चर्यजनक रूप से खराब है; आप हर उपयोगकर्ता को रूट पासवर्ड ईमेल कर सकते हैं, जो उस सिस्टम में लॉग इन कर सकते हैं, जबकि आप पहले से ही ऐसा कर चुके हैं।
वारेन यंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.