Dateizugriffsrechte

T

Traxstar

Grünschnabel
Hey,

wenn ich eine Datei habe und einem Nutzer Ausührrechte (x) gebe aber keine Lesrechte (r)? Was passiert dann? Kann er die Datei normal öffnen oder kann er sie sogar lesen ??

Und was ist genau andersrum ? Also r aber kein x?

Bitte mit erklärung :/

MfG
Trax
 
Benutze doch einfach mal die Suchmaschine deiner Wahl.
Dazu gibt es Erklärungen ohne Ende im Netz und deshalb wird dir wohl kaum jemand noch einmal alles "vorkauen"!
 
hätte ich was im netz gefunden hätte ich wohl kaum gefragt
 
Hey,

wenn ich eine Datei habe und einem Nutzer Ausührrechte (x) gebe aber keine Lesrechte (r)? Was passiert dann? Kann er die Datei normal öffnen oder kann er sie sogar lesen ??
Wenn ein User Execute-Rechte hat, aber keine Leserechte, kann er die Datei noch immer nicht ausführen und bekommt ein "Permission denied"-Fehler. Zum Ausführen muss der User ja den Inhalt nutzen können und dafür braucht's Leserechte.

Code:
$ cat test
#!/bin/bash

echo "Hello"

$ ls -lha test
-r-x------  1 bitmuncher  staff    26B Oct 29 10:51 test # <- User hat Read und Execute zur Verfügung

$ ./test
Hello
# Datei kann also ausgeführt werden, sofern sie einen ausführbaren Inhalt hat

$ chmod u-r test && ls -l test
---x------  1 bitmuncher  staff  26 Oct 29 10:51 test # Leserechte wurden entzogen

$ ./test
/bin/bash: ./test: Permission denied 
# Datei kann nicht mehr ausgeführt werden, da der Interpreter - die Shell - den Inhalt nicht mehr lesen kann

$ cat test
cat: test: Permission denied # Lesen der Datei ist nicht mehr möglich

Und was ist genau andersrum ? Also r aber kein x?

Bitte mit erklärung :/

MfG
Trax

Dann kann der User die Datei lesen aber nicht ausführen.

Code:
$ chmod u-x,u+r test && ls -l test
-r--------  1 bitmuncher  staff  26 Oct 29 10:51 test # <- User hat nur noch Leserechte

$ ./test
-bash: ./test: Permission denied # Datei ist nicht mehr ausführbar

$ cat test
#!/bin/bash

echo "Hello"
# aber die Datei kann gelesen werden

Natürlich bringen die Execute-Rechte nur was, wenn die Datei auch einen ausführbaren Inhalt hat. Es muss sich also um ein ELF-Binary oder um ein Skript mit einleitender Shebang handeln. Sonst gibt's Fehler von der Shell.

Code:
$ echo foobar > test

$ ls -l test
-rwx------  1 bitmuncher  staff  7 Oct 29 11:02 test

$ cat test
foobar

$ ./test
./test: line 1: foobar: command not found

Die einzige Ausnahme sind Skripte, die von der ausführenden Shell verstanden werden. Das heisst, dass du bei einem Bash-Skript auf die Shebang verzichten kannst, wenn deine Shell die Bash ist. Bei einem Korn-Shell-Skript kannst du auf die Shebang verzichten, wenn deine Shell die Korn-Shell ist usw..

Code:
$ cat test
echo "Hello"

$ ls -l test
-rwx------  1 bitmuncher  staff  13 Oct 29 11:08 test

$ ./test
Hello
# es wird automatisch die aktuelle Shell als Interpreter verwendet, da keine Shebang verwendet wird
 
Wenn ein User Execute-Rechte hat, aber keine Leserechte, kann er die Datei noch immer nicht ausführen und bekommt ein "Permission denied"-Fehler. Zum Ausführen muss der User ja den Inhalt nutzen können und dafür braucht's Leserechte.
Fast :-)
Code:
xxx@linux7 ~]$ cd work/
[xxx@linux7 work]$ ls -la
insgesamt 8
drwxrwxr-x   2 xxx xxx 4096 29. Okt 11:11 .
drwx------. 46 xxx xxx 4096 29. Okt 11:09 ..
[xxx@linux7 work]$ cp /bin/ls ls
[xxx@linux7 work]$ chmod 100 ls
[xxx@linux7 work]$ ./ls
ls
[xxx@linux7 work]$ ls
ls
[xxx@linux7 work]$ ls -la
insgesamt 116
drwxrwxr-x   2 xxx xxx 4096 29. Okt 11:11 .
drwx------. 46 xxx xxx 4096 29. Okt 11:09 ..
---x------   1 xxx xxx 109208 29. Okt 11:11 ls

vs. :-)
Code:
[xxx@linux7 work]$ vi ls.sh
[xxx@linux7 work]$ more ls.sh
#!/bin/bash

ls

[xxx@linux7 work]$ ls -la
insgesamt 120
drwxrwxr-x   2 xxx xxx 4096 29. Okt 11:14 .
drwx------. 46 xxx xxx 4096 29. Okt 11:14 ..
---x------   1 xxx xxx 109208 29. Okt 11:11 ls
-rw-rw-r--   1 xxx xxx 16 29. Okt 11:14 ls.sh
[xxx@linux7 work]$ bash ls.sh
ls  ls.sh
[xxx@linux7 work]$ chmod 100 ls.sh
[xxx@linux7 work]$ bash ls.sh
bash: ls.sh: Keine Berechtigung
[xxx@linux7 work]$ ./ls.sh
/bin/bash: ./ls.sh: Keine Berechtigung
[xxx@linux7 work]$

... kommt also drauf an. Siehe Doku :-)
 
Stimmt, bei Binaries verhält es sich offenbar anders, da ja "nur" der Interpreter/das ausführende Programm die Datei lesen können muss. Im Fall von ELF-Binaries wird die Ausführung dem Kernel übergeben und der kann die Datei eh lesen.
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Amarok - komisches Verhalten bzgl. Mp3 über Netzwerk

FTP-server frage - mount-nullfs

Ordnerinhalt als Textdatei - ls packt alles hintereinander

Browser-Problem

Zurück
Oben