2015-12-15 8 views
7

Befehl lautet:Kann Sudo nicht strazen; berichtet, dass eine effektive uid ungleich Null

[email protected] ~/work/lean $ sudo ls 
content_shell.pak leanote libgcrypt.so.11 libnotify.so.4 __MACOSX  resources 
icudtl.dat  leanote.png libnode.so locales  natives_blob.bin snapshot_blob.bin 

meiste Zeit es right.but manchmal ist es sehr langsam. so strace ich es.

Befehl:

[email protected] ~/work/lean $ strace sudo ls 
execve("/usr/bin/sudo", ["sudo", "ls"], [/* 66 vars */]) = 0 
brk(0)         = 0x7f2b3c423000 
fcntl(0, F_GETFD)      = 0 
fcntl(1, F_GETFD)      = 0 
fcntl(2, F_GETFD)      = 0 
...... 
...... 
...... 
write(2, "sudo: effective uid is not 0, is"..., 140sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges? 
) = 140 
exit_group(1)       = ? 
+++ exited with 1 +++ 

andere Informationen:

bigxu-ThinkPad-T410 lean # ls /etc/sudoers -alht 
-r--r----- 1 root root 745 2月 11 2014 /etc/sudoers 
bigxu-ThinkPad-T410 lean # ls /usr/bin/sudo -alht 
-rwsr-xr-x 1 root root 152K 12月 14 21:13 /usr/bin/sudo 
bigxu-ThinkPad-T410 lean # df `which sudo` 
Filesystem  1K-blocks Used Available Use% Mounted on 
/dev/sdb1  67153528 7502092 56217148 12% 
+0

Willkommen bei stackoverflow. Dies ist eine faire Frage, aber ein wenig off-topic für diese Website, weil es mehr über die Unterstützung für ein bestimmtes Tool (Privilegienerhöhung mit Sudo) als über die Programmierung ist. Vielleicht haben Sie mehr Glück bei serverfault.com oder superuser.com. –

+0

@PauloScardine, ich denke, es gibt ein Argument für die Aktualität, insofern es sich um ein Debugging-Tool handelt ("strace", hier, aber das gleiche würde mit 'gdb' passieren), das Verhalten des Programms, das es beobachten soll, modifiziert . –

+0

@CharlesDuffy: Fair genug, Sie haben absolut Recht. –

Antwort

8

Aus Sicherheitsgründen wird das Setuid-Bit und ptrace (verwendeten Programme unter einem Debugger ausgeführt werden) können nicht beide zugleich geehrt. Wenn diese Einschränkung in der Vergangenheit nicht durchgesetzt wurde, führte dies zu CVE-2001-1384.

Folglich wird jedes Betriebssystem, das aus Sicherheitsgründen entwickelt wurde, entweder die Ausführung von ptrace bei der Ausführung eines setuid-Binärprogramms beenden oder das setuid-Bit nicht mehr einhalten, wenn ptrace verwendet wird.

Unter Linux sollten Sie statt dessen Sysdig verwenden. Dies bedeutet, dass Sie zwar nur das Verhalten anzeigen, aber nicht ändern können und nicht die gleichen Risiken eingehen.

+0

vielen dank^_^ –

+0

Danke @ charles-duffy sehr viel. Könnten Sie bitte Ihre Antwort etwas erweitern, indem Sie auf die offizielle Dokumentation oder den Quellcode verweisen, wo "das setuid-Bit nicht für Binärdateien unter ptrace berücksichtigt wird"? –

+0

@DanielLe, hmm. R'ing TFS für den aktuellen (4.5-series) Kernel, aktuelle Codepathe gehen dagegen - entgegengesetzt zu setuid, aber deaktivieren ptrace. [Im Gegensatz dazu ist die Deaktivierung von setuid bei Verwendung von ptrace auf MacOS explizit auf der man-Seite dokumentiert]. Unabhängig davon, in welche Richtung ein bestimmtes Betriebssystem geht, haben wir den Effekt, dass gdb nicht effektiv in Kombination mit dem setuid-Bit verwendet werden kann - und das Risiko von Fehlern wie CVE-2001-1384 ohne diese Einschränkung. –