Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Wie kann Linux eine Datei ausfuehren, ohne das das lese recht gesetzt ist. Es muss doch z. B. bei einem Shell skript der code gelesen werden koennen, oder?
DEMO: echo -e '#!/bin/bash \n echo "ich bin ein Programm"' > script.sh
DEMO: ls
script.sh
DEMO: chmod +x script.sh
DEMO: ./script.sh
ich bin ein Programm
DEMO: chmod -r script.sh
DEMO: ./script.sh
./script.sh: ./script.sh: Keine Berechtigung
DEMO:
Nur über Umweg. Wenn so etwas benötigt wird, dann muss der Teil des Scripts, den der Anwender nicht lesen können soll, von jemand anderen ausgeführt werden ( :idea: "man sudo").
~/dummy> strace ./xxx -l
execve("./xxx", ["./xxx", "-l"], [/* 94 vars */]) = 0
uname({sys="Linux", node="ocv", ...}) = 0
brk(0) = 0x805d000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=104062, ...}) = 0
old_mmap(NULL, 104062, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40017000
....
=> Ich würde mal behaupten execve() kann lesen, wenn "x" Rechte vorhanden sind.
Ich schätze das ist irgendwo im Kernel drin.
Haveaniceday
PS:Wäre mal interessant zu wissen, ob man irgendwie an den Prozessspeicher drankommt.
So mit "SIGSTOP", gdb und das "binary", allerdings "reloziert" lesen kann.
Aber wir graben ja nicht nach Lücken...