sudo
tidak bekerja. Saya sudah menginstal Linux Arch pada kunci USB yang diformat dengan BTRFS. Inilah hasilnya ketika saya menjalankan '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) +++
arch-linux
sudo
keripik
sumber
sumber
ls -ld /etc
?ls -l $(which sudo)
, itulah sumber masalahnyaJawaban:
Oke, sepertinya Anda tidak memiliki akses untuk / (tidak bisa melakukan cd),
Bisakah kamu mencoba
chmod 755 /
sumber
chown root ./suid_test
danchmod 4755 ./suid_test
), kode sumber: pastebin.mozilla.org/1650215Eksekusi harus setuid dan dimiliki oleh root:
Biner Anda kehilangan salah satu dari sifat-sifat itu. Lakukan ini (sebagai root):
sumber
setresuid32(0, -1, -1)
dansetresgid32(-1, 0, -1)
keduanya adalah waktu 0 yang menunjukkan bahwa program memiliki izin yang benarbagaimana Anda menginstalnya? Anda harus me-mount partisi pada usb-stick sebagai root untuk instalasi. Saya tidak tahu mengapa tetapi hanya bekerja untuk saya dengan cara ini. Setelah itu Anda dapat me-mount partisi sebagai pengguna dan memperbaruinya melalui rsync dan tidak ada masalah yang muncul (tapi saya belum menguji ini secara ekstensif).
Kemungkinan besar ada yang rusak pada sistem mount pengguna.
sumber
Ikuti langkah ini:
sumber
/root
dan/etc
. Ada alasan mengapa file-file ini diinstal dengan berbagai izin. Saran untuk secara membabi buta mengatur izin yang dapat dieksekusi pada semua file ini adalah palsu; beberapa file di pohon ini memerlukannya. Dan saran untuk memberikan izin baca-ke-dunia & laksanakan untuk semuanya/root
dan/etc
sangat buruk; Anda mungkin juga mengirim email kata sandi root ke setiap pengguna yang dapat masuk ke sistem itu saat Anda sedang melakukannya, karena Anda telah memberi mereka jalankan penuh kotak dengan melakukan itu.