• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Verstaendnisfrage

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?

Gruss
 
gar nicht.

Code:
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").
 
dann muss es aber für diesen 3. lesbar sein. Für den ausführenden prozess/User muss das File lesbar sein
 
Skripte müssen zur laufzeit interpretiert werden, dazu müssen sie gelesen werden können. (Vom z.B bash oder Perl interpreter)

Binarys sind bereits kompiliert, da entfällt dieses.

Siehe Unterschied zwischen Skriptsprachen und Programmiersprachen.


MfG
texus
 
Vorarbeit:
cp /bin/ls xxx
chmod 111 xxx

~/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...
 
Oben