web-dev-qa-db-ja.com

sudoが/ etc / sudoersを開けない

Sudoは機能しません。 Arch Linuxが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) +++
15
chipuba

わかりました、/へのアクセス権がないようです(cdできません)。

chmod 755 /

19
daisy

実行可能ファイルはsetuidされ、rootが所有する必要があります。

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

バイナリにこれらの特性の1つがありません。これを(ルートとして)行います。

# chown root /usr/bin/Sudo
# chmod u+xs /usr/bin/Sudo
1

どのようにインストールしましたか?インストールのルートとして、usb-stickにパーティションをマウントする必要があります。理由はわかりませんが、この方法でのみ機能しました。その後、ユーザーとしてパーティションをマウントし、rsyncを介してそれを更新できます。問題は発生しません(ただし、これについては十分にテストしていません)。

ユーザーマウントシステムに問題がある可能性があります。

0
alk