PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Welche Group darf Datei ausführen?



Gorn
24.06.03, 09:42
Hi,


will nichts falsch machen. Die Group bin erlaubt einem User eine Datei auszuführen??

GoRn

Thomas Mitzkat
24.06.03, 10:26
Die Group bin erlaubt einem User eine Datei auszuführen??
nein. da das ausführungsattribut für user, group und andere seperat gesetzt werden kann, ergibt sich nur daraus die erlaubnis eine datei ausführen zu dürfen.

Gorn
24.06.03, 11:36
Hi,

das meinte ich. Ein User muss in Group bin sein, und die Datei ausführbar. Somit kann der User die Datei ausführen. Richtig?

GoRn

zander
24.06.03, 11:51
Eine solche Konfiguration ist mit den Zugriffsrechten umsetzbar, aber nicht zwingend erforderlich; eine Datei kann mit entsprechenden Rechten versehen auch von Benutzern ausgeführt werden, die nicht der Gruppe bin oder derjenigen Gruppe angehören, der die Datei zugehörig ist. Die Zugriffsrechte sehen zu diesem Zweck drei Felder vor, für den Besitzer, die Gruppe und "andere".

cirad
24.06.03, 23:49
@Gorn:
Jede Datei hat einen Owner, dem die Datei gehört, und eine Group. (Ich bin mir bewußt, daß ich Gruppe hätte schreiben können. :D)

Insgesamt gibt kann man Rechte für Owner, Group und Others setzen. Hat der Owner ein x, darf er die Datei ausführen. Hat Group ein x, darf die Gruppe die Datei ausführen. Ist bei Others ein x gesetzt, dürfen alle anderen die Datei ausführen (damit sind wirklich alle gemeint, die nicht Owner und nicht in Group sind).

Die Gruppen haben also nichts damit zu tun, ob du eine Datei ausführen darfst. Die Rechte werden direkt "von" der Datei bestimmt. Datei a kann von Gruppe X ausgeführt werden, Datei b aber nicht.

Gorn
25.06.03, 06:45
Ah ok,


d.h. ich setzte mit chown -R user:group wem die Datei gehört.
Hm, ich hatte nämlich versucht per ssh

su $CS_USER -c "screen -d -m -S $NAME $DAEMON $PARAMS"

auszuführen. Aber es klappt nicht.

z.b. das klappt auch nicht

su $CS_USER -c "ls" oder
su $CS_USER -c ls.

Was geht ist

su "root" -c ls
allerdings klappt

su "irgendeinuser" -c ls wieder nicht. :(

GoRn

pitu
25.06.03, 08:51
Nein, man muss nicht in bin sein, um Dateien auszufuehren.

Wenn du mal ein "ls -l" machst, wirst du viel kryptisches sehen:



-rwxr-xr-x 1 pitu users 20 Jun 2 15:04 test.sh
-rw-r----- 1 pitu users 4385 May 15 18:22 theme.html
drwxr-x--- 3 pitu users 1024 Apr 8 09:15 tmp
lrwxrwxrwx 1 pitu users 4 Jun 25 2003 etc -> test.sh


Von hinten nach vorne:

So also, das was am Ende steht ist der Datainame, das davor ist das das Datum und die Uhrzeit der letzten Modifikation (aelter als 6 Monate statt Zeit das Jahr), und dann die groesse in Bytes.

Die naechsten beiden sind "group" und "user". Man kann zwar auch in mehreren Gruppen Mitglied sein, aber das ist erstmal uninteressant.
Am Anfang stehen deine Permissions. (Dazwischen die Zahl ist die Anzahl der Hardlinks, aber das vergiss jetzt erstmal.)

So, das erste Zeichen der Permissions gibt den Filetype an. Fuer dich ist erstmal eigentlich nur interessant, dass dort ein "d" fuer Directory oder nix ("-") steht. Ab und zu auch ein "l" fuer einen Soft(!)link.

So, der Rest ist aufgeteil in 3 Tripel, jeweil r fuer read, w fuer write und x fuer execute. Das erste Tripel steht fuer den User, das zweite fuer die Group und das dritte fuer Other (leicht zu merken: "ugo").

Zum obigen Beispiel:
test.sh hat read/write/exe fuer den User, damit darf der User, also der eigentuemer dieses Files diese Datei lesen, ausfuehren und schreiben. Merke, ausfuehren ohne lesen macht keinen Sinn, denn zum ausfuehren muss man die Datei auch lesen duerfen. Diese Berechtigung ist Gruppenunabhaengig
Fuer die Group ist nur read und execute gesetzt. Also darf ein Mitglied er Gruppe users diese Datei lesen und ausfuehren, aber nicht beschreiben bzw loeschen.
Das göleiche gilt fuer alle anderen (other) die nicht eigentuemer oder gruppenmitglied sind.

Die naechste Datei ist theme.html ist fuer den eigentuemer les und beschreibbar und fuer die gruppe lesbar aber nicht beschreibbar, alle anderen bleiben aussen vor.

So, tmp ist nun ein Directory, zu erkennen an dem "d" ganz am Anfang. Hie bedeutet "x" nun nicht "execute" sonder so etwas wie "berechtigt"
Demzufolge darf der eigentuemer in dem Directory lesen und schreiben, sowie "hineinwechseln" (x) mitgleider der gruppe duerfen lesen und hineinwechseln und alle anderen duerfen in das directory nicht mal hineinschauen.

Das letzte ist ein link (l) Bei einem Link sind IMMER ALLE atribute gesetzt, das heisst, dass diesem Link jeder folgen darf, (aber nur der eigentuemer darf ihn auch wieder loeschen) Am ende zaehlen dann die "echten Dateiatribute. Im obigen Fall zeigt etc auf test.sh, damit gelten dann die Rechte wie sie oben bei test.sh beschrieben sind.

Du siehst, es haengt nicht von der Gruppe "bin" ab, auch nicht von Dateiendungen.
Alles andere fuehrt jetzt viel zu weit.

gruss,
pitu

pitu
25.06.03, 09:01
zu su:

du musst anstatt "su user -c befehl" ein "su - user -c befehl" machen. Das - vor dem user bewirkt, dass du eine loginshell benutzt. nimm mal an, usera hat keine berechtigung im verzeichniss von userb zu lesen (zur erinnerun, kein x beim directory). Wenn nun userb ein "su usera -c ls" macht, beiben alle veriablen, unter anderem auch $HOME erhalten. $HOME zeigt aber auf das home von userb, das usera nicht lesen darf. mit su (switch user) hast du aber die identietaet zu usera gewechselt., ergo: geht nicht. Als root geht das natuerlich, denn root darf alles, auch directories lesen fuer die er eigentlich keine berechtigung hat. daher hast du mit "su root -c befehl" erfolg.

Das - bewirkt nun das oeffnen einer loginshell, damit werden auch alle Variablen si gesetzt wie wenn sich der user einloggen wuerde, ergo $HOME enthaellt das Homeverzeichniss von usera, damit kann userb dann ein ls durchfuehren.

gruss,
pitu