splinter: Berechtigungen

Hallo

Lesen    Schreiben   Ausführen

Besitzer    x          x           x

Gruppe      x          x

Andere      x

Ich hab mir mal ein paar Erklärungen angeschaut und immer noch nicht begriffen was diese Einstellungen genau bewirken. =)
Wer ist "Gruppe", wer "Besitzer" und wer "Andere"?
Und was genau mit "Ausführen" gemeint ist kapier ich auch nicht (hängt wohl damit zusammen dass ich schon nicht weis wer Gruppe,usw. ist).
Kann mir jemand das ganze mit ein paar Beispielen erklären?

MfG

splinter

  1. Hallo,

    auf Unix(-Derivaten) gibt es für jede Datei drei Benutzerklassen für die Rechteverwaltung, wodurch sich eine ganze Reihe von Abstufungen zur Vergabe von Rechten ergibt. "User" ist der "Ersteller" und "Inhaber", wenn man so will, der Datei und kann in diesem Fall somit alles mit der Datei machen, was er will (schreiben, lesen, ausführen).
    Dasselbe gilt für Benutzer, die in einer bestimmten "Gruppe" eingetragen sind. Jeder am System angemeldete Benutzer mit dieser Gruppe hat die Berechtigung, das File zu löschen, zu lesen, oder auszuführen. je nachdem wie die Rechte gesetzt wurden.
    Auf meinem Linuxsystem sind die Gruppen (die in einer Dateien zusammengefasst sind) beispielsweise so organisiert. Die Gruppen befinden sich links. Rechts davon sind die "Benutzer" eingetragen, die diese Gruppe benutzen dürfen:

    root::0:root
    bin::1:root,bin,daemon
    daemon::2:root,bin,daemon
    sys::3:root,bin,adm
    adm::4:root,adm,daemon,markus
    tty::5:
    disk::6:root,adm,markus
    lp::7:lp,markus
    mem::8:
    kmem::9:
    wheel::10:root,markus
    floppy::11:root,markus
    mail::12:mail
    news::13:news
    uucp::14:uucp
    man::15:man
    console::17:
    audio::18:markus
    cdrom::19:markus
    dialout::20:root
    tape::26:root
    video::27:root,markus
    cdrw::80:markus
    usb::85:markus
    users::100:games,markus
    nofiles:x:200:
    smmsp:x:209:smmsp
    portage::250:portage
    utmp:x:406:
    nogroup::65533:
    nobody::65534:
    ldap:x:439:markus
    sshd:x:22:
    postgres:x:70:
    gdm:x:1001:
    messagebus:x:1002:
    markus:x:1000:
    apache:x:81:
    scanner:x:1003:markus
    games:!:35:markus

    Wie du siehst darf ich z.B. Spiele spielen, da ich in der Gruppe "games" eingetragen bin, oder ich darf in der Konsole auf den Superuser wechseln (falls ich das Passwort kenne), daich in der Gruppe "wheel" bin.

    Im Berechtigungskonzept sind die "Anderen" alle anderen Benutzer.
    Stell dir doch mal eine Datei auf einem Webserver vor: Der "Besitzer" ist derjenige, der die Datei hochgeladen hat und editieren/löschen usw kann. Das Team, das den Webserver betreut könnte beispielsweise in der gleichen "Gruppe" sein wie du, und darf somit auch deine Files irgendwohin kopieren, bpsw auf eine neue Festplatte.
    "Andere" sind die Internetbenutzer, die auf das File zugreifen.
    Jetzt kannst du diese grobe Einteilung natürlich "verfeinern". Beispielsweise könntest du bestimmen, dass Internetbenutzer (=Andere) deine Dateien am Webserver zwar sehen können (lesen), aber nicht ausführen können (execute), das heißt, würden sie die Datei anklicken und den Inhalt lesen wollen, würde das für den Besucher nur zu einer Fehlermeldung führen.
    Mit diesen Eigenschaften kannst du somit jeden gewünschten Zustand deiner Dateien festlegen.

    Beispielsweise passierte mir vor kurzem ein Missgeschick:
    Ich ließ meinen lokalen Apache-Server zu Hause laufen, um auf die Dateien von wo anders zugreifen zu können. Auf meinem eigenen Computer war ich der Besitzer der Datei, und konnte hier damit machen, was ich will. "Draußen" galt ich dann natürlich als "Anderer" und konnte die Dateien zwar sehen, aber nicht herunterladen, da ich für "andere" nicht die Eigenschaft "ausführen" setzte.

    --
    http://www.apostrophitis.at
    六 7東曲 人港ラ
    1. hallo,

      auf Unix(-Derivaten) gibt es für jede Datei drei Benutzerklassen für die Rechteverwaltung

      Nicht nur für Dateien, sondern auch für Verzeichnisse. Manchen mag es verwirren, daß Dateien, die in einem bestimmten Verzeichnis liegen, durchaus anderen Benutzern gehören können als dem Inhaber des Verzeichnisses selbst.

      "User" ist der "Ersteller" und "Inhaber"

      "user" ist der Besitzer, aber nicht unbedingt der "Ersteller". Du kannst, wenn du eine Datei erstellst, sie auch einem anderen Benutzer schenken.

      und kann in diesem Fall somit alles mit der Datei machen, was er will (schreiben, lesen, ausführen).

      Im vorgestellten Fall. Er kann sich aber auch selbst einschränken und beispielsweise das Recht für "Ausführen" eliminieren, da das eine besondere Bedeutung hat und bei reinen Textdateien (oder zum Beispiel HTML-Dateien) unsinnig ist.

      Dasselbe gilt für Benutzer, die in einer bestimmten "Gruppe" eingetragen sind.

      In diesem Fall: derselben Gruppe, der der "Besitzer" der Datei angehört.

      Jeder am System angemeldete Benutzer mit dieser Gruppe hat die Berechtigung, das File zu löschen, zu lesen, oder auszuführen.

      Was nicht immer gewünscht ist, aber am vorgestellten Beispiel so konfiguriert wurde, daß Gruppenmitglieder zwar lesen und schreiben, aber nicht ausführen dürfen. Man sollte dazusetzen, daß "Schreiben" auch "löschen" beinhaltet.

      Auf meinem Linuxsystem sind die Gruppen (die in einer Dateien zusammengefasst sind) beispielsweise so organisiert

      Du hättest ruhig verraten dürfen, daß du diese Liste mit "cat /etc/group" erhältst ;-)

      da ich in der Gruppe "wheel" bin.

      Das ist keine "Voreinstellung", das muß man so konfigurieren. Jedenfalls unter Gentoo. Auf anderen Linuxsystemen kann dieselbe Auflistung, die du angegeben hast, deutlich anders ausfallen. Zum Beispiel gibt es bei einer SUSE nicht "default" eine Gruppe "wheel", dafür aber eine Gruppe "haldaemon".

      Im Berechtigungskonzept sind die "Anderen" alle anderen Benutzer.

      ... die der Gruppe des Dateibesitzers _nicht_ angehören.

      Wie weit wollen wir bei der Erklärung gehen? Ist es nötig, noch darzulegen, wieso es "Benutzer" geben kann, die keinen "Namen", sondern nur eine "Nummer" tragen?

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. Hallo,

        Du hättest ruhig verraten dürfen, daß du diese Liste mit "cat /etc/group" erhältst ;-)

        Ich wollte nicht zu sehr vom Thema abschweifen. :)

        Wie weit wollen wir bei der Erklärung gehen? Ist es nötig, noch darzulegen, wieso es "Benutzer" geben kann, die keinen "Namen", sondern nur eine "Nummer" tragen?

        Ich glaube fast nicht, dass der OP die technischen Grundlagen dahinter erfahren will, wobei sie mich schon interessieren würden, da ich es selbst nicht weiß. Also kläre uns diesbezüglich bitte auf. :)

        Markus

        --
        http://www.apostrophitis.at
        六 7東曲 人港ラ
        1. hallo,

          kläre uns diesbezüglich bitte auf. :)

          Warte ab, was http://forums.gentoo.org/viewtopic-t-531979.html eventuell für kluge Hinweise bringt, ich will ja dem dort geballten Sachverstand auch nicht vorgreifen.

          (Übrigens gelte ich "dort" neuerdings als Guru, was mich sehr belustigt)

          Grüße aus Berlin

          Christoph S.

          --
          Visitenkarte
          ss:| zu:) ls:& fo:) va:) sh:| rl:|
      2. echo $begrüßung;

        "user" ist der Besitzer, aber nicht unbedingt der "Ersteller". Du kannst, wenn du eine Datei erstellst, sie auch einem anderen Benutzer schenken.

        Kann man nur, wenn man root ist. Ansonsten könnte ich mal eben alle meine Dateien meinem Nachbarn schenken - natürlich nur so, dass ich selbst noch drauf zugreifen kann - und schon hätte ich wieder mehr Quota.

        [...] Man sollte dazusetzen, daß "Schreiben" auch "löschen" beinhaltet.

        Löschen ist eine Operation im Verzeichnis. Man muss die Schreibrechte für das Verzeichnis haben. Was für Rechte und Besitzverhältnisse die Dateien haben ist nicht relevant.

        Wie weit wollen wir bei der Erklärung gehen? Ist es nötig, noch darzulegen, wieso es "Benutzer" geben kann, die keinen "Namen", sondern nur eine "Nummer" tragen?

        Namen <del>sind Schall und Rauch und</del> nehmen nur unnötig Platz weg, wenn sie zu jeder Datei notiert werden müssen. Deswegen werden in der Dateiverwaltung Nummern verwendet. Die einem Benutzer zugeordnete Nummer (UID) findet man im dritten der mit : getrennten Felder in der /etc/passwd. Im vierten Feld steht die Gruppen-ID (GID). Den Namen der Gruppe findet man in /etc/group, wenn man dort im dritten Feld die GID wiedergefunden hat.

        Manchmal gibt es auch Dateien mit GID und/oder UID, die im aktuellen System nicht gesetzt sind (nicht in /etc/passwd bzw. /etc/group enthalten sind). Dies kann passieren, wenn man anderswo erstellte tar-Dateien auspackt. Da werden dann beispielsweise bei einem Directory-Listing keine Namen sondern nur die Nummern angezeigt.

        echo "$verabschiedung $name";

  2. echo $begrüßung;

    Lesen    Schreiben   Ausführen
    Besitzer    x          x           x
    Gruppe      x          x
    Andere      x

    Ich hab mir mal ein paar Erklärungen angeschaut und immer noch nicht begriffen was diese Einstellungen genau bewirken. =)
    Wer ist "Gruppe", wer "Besitzer" und wer "Andere"?

    Jede Datei (auch Verzeichnisse zählen dazu) ist einem Besitzer und eine Gruppe zugeordnet.
    Eine Benutzerkennung gehört einer oder mehrerer Gruppen an. Wenn jemand der Besitzer ist, gelden die Rechte für den Besitzer. Wenn jemand mitglied in der Gruppe der Datei ist, gelten die Gruppen-Rechte. Für alle andernen gelten die Rechte für andere.

    Ein Beispiel: splin und ter sind zwei auf dem System eingerichtete Benutzer. Beide gehören der Gruppe users an. Eine Datei, die Benutzer splin und Gruppe users gehört kann von ter nur gelesen werden, wenn das Lesen-Recht der Gruppe gesetzt ist.

    Und was genau mit "Ausführen" gemeint ist kapier ich auch nicht

    Man braucht für eine Datei, die ausführbaren Code enthält, das Ausführen-Recht, um sie ausführen zu dürfen. Bei Verzeichnissen bedeutet das Ausführen-Recht aber, dass man in sie hineinwechseln darf.

    echo "$verabschiedung $name";