Titel: ls Ausgabe verstehen
Beitrag von: Sebastian am 02. Oktober 2024, 16:56:00
Hallo Suletuxe,
Kann mir jemand erklären was die folgende Ausagbe bedeutet? (Außer Andreas)
Code:
❯ ls -l testfile -rwsr-xr-- 1 sebastian sebastian 0 2. Okt 18:37 testfile
|
|
Ich habe folgende fragen dazu:
- Was bedeuten die Striche und Buchstaben an Anfang der Zeile?
- Wofür steht das s an vierter Stelle?
- Was bedeutet die 1 vor meinen Namen?
- Warum steht dort mein Name zweimal?
- Was bedeutet die 0 vor dem Datum?
- Gibt es ein Handbuch wo ich, das selbst nachschlagen kann? Wenn ja, wie komme ich da dran (ohne Internet)
Wenn ihr es nicht wisst, dürft ihr auch gerne Vermutungen äußern, damit diese richtig gestellt werden können falls diese Falsch sind.
Freue mich auf eure Antworten und der Regen Teilnahme ;)
LG Sebastian
|
Titel: Re:ls Ausgabe verstehen
Beitrag von: daggi am 03. Oktober 2024, 13:44:54
Hallo Sebastian,
großes DANKE - deine Fragen haben mich ( endlich )aus der Reserve gelockt um Lösungen zu finden ...
Buchstaben und Striche - der erste - steht für Datei / r = read / w = write / s ( war mir unbekannt ) ich vermute Sonderrechte ? - xr = execute and read
1 vor deinem Namen sagt du bist Eigentümer ( = Vermutung ) oder besser Benutzer ? Dein Name erscheint zweimal ... als User und root ? d.h. du hast 2 unterschiedlich ID für die testfile ???? Bin grad unsicher ob mein Verstand jetzt falsche Schlüsse zieht ????
Ein Handbuch gibt es auf der Konsole ... LG Daggi
|
Titel: Re:ls Ausgabe verstehen
Beitrag von: Dietrich am 03. Oktober 2024, 21:22:18
Hallo Sebastian,
ich fange mal mit den Strichen und Buchstaben an
es sind insgesamt 10 Stellen, wenn ein Strich dort steht ist er ein Platzhalter für eine nicht vergebene "Berechtigung", bzw. "Eigenschaft" der Datei. die erste Stelle gibt Info zum Dateityp die Stellen 2-4 Lese-, Schreib- und Ausführungsrechte für den Besitzer die Stellen 5-7 Lese-, Schreib- und Ausführungsrechte für die Gruppe der Datei die Stellen 8-10 Lese-, Schreib- und Ausführungsrechte für andere Benutzer
die 1 vor Sebastian gibt ihn als Besitzer aus , die 0 vor dem Datum sagt das 0 Byte in der Datei sind
Der 2. Sebastian gibt die Gruppe an hier "Sebastian"
So das ist mein erster "Wurf", bleibe dran
|
Titel: Re:ls Ausgabe verstehen
Beitrag von: Andreas am 04. Oktober 2024, 06:47:17
Ich gebe mal einen Tipp: Die "1" vor Sebastian habt ihr noch nicht richtig zugeordnet, sonst schon ganz gut! Aber das ist Sebastians Thread :)
LG Andreas |
Titel: Re:ls Ausgabe verstehen
Beitrag von: Sebastian am 04. Oktober 2024, 07:18:07
Hallo Daggi,
Erst einmal ich freue mich riesig, dass du dich durchringen konntest mitzumachen. So können wir auch außerhalb der Treffen weiter etwas Neues zusammen lernen :)
@Allgemein
Vieles ist schon mal richtig und andere Dinge wurden von Dietrich auch schon ergänzt bzw. korrigiert. So das ich die Dinge die hier schon mal richtig sind noch einmal herausschreibe;
Das erste Feld/Block (das mit den Strichen und Buchstaben). Gibt Auskunft über die die Art (Ist es ein Datei? ist es ein Ordner? Ein Link etc.) und die Berechtigungen an. Dies zeigt wie ihr beide richtig erkannt habt die erste Stelle an. (- = Datei).
Die weiteren Buchstaben bzw. Striche sind die Berechtigungen, wie ihr beide auch schon richtig festgestellt habt. Jeweils immer in dreier schritten für Lesen, schreiben, ausführen (bzw. Sonderrechte). Das kleine s an vierter Stelle ist etwas gemein, dies habe ich absichtlich mit hereingenommen. Weil ihr das beim normalen Arbeiten selten sieht. Ich aber möchte das ihr wisst, das an dieser Stelle auch etwas anderes als nur ein x (excute = Ausführen) drin stehen kann. Macht hier nicht den Fehler und versucht euch hier nicht etwas vom Deutschen herzuleiten (s = Sonderrecht) in diesen fall ist es zwar eine ein Sonderrecht, das s steht aber auf Englisch für etwas anderes. Hier rauf seid ihr mir noch eine richtige Antwort schuldig ;) so schaut noch mal ob ihr im Internet darüber etwas findet.
------------
Die 1 vor meinen Namen, sagt nicht aus das ich der Besitzer bin (Das sagt ganz alleine nur mein erster Name aus). Dies ist auch etwas gemein weil man darauf selten achten muss. Trotzdem fehlt hier noch die richtige Antwort. Um euch auf den richtigen Pfad zu bringen, werde ich die 1 mal verändern, mal schauen ob ihr drauf kommt und etwas im Internet darüber findet. Bitte ruhig gerne weiter vermutungen anstellen wenn ihr es nicht genau wisst. (Nur wenn man sich mit dem Themen aktiv beschäftigt lernt man)
Code:
❯ ln ./testfile testfile_2
|
|
Code:
❯ ls -l testfile testfile_2 -rwsr-xr-- 2 sebastian sebastian 0 2. Okt 18:37 testfile -rwsr-xr-- 2 sebastian sebastian 0 2. Okt 18:37 testfile_2
|
|
- Was habe ich mit den Befehl ln gemacht?
- Wofür verwendet man ln?
- Wie komme ich an das Handbuch von ln?
- Warum ist die Zeit und die größe Identisch zur "testfile"? Ich habe die Datei im Nachhinein angelegt.
Wie ihr sieht habe ich eine zweite Datei mit dem Namen "testfile_2" und habe jetzt an beiden Dateien die Zahl 2 stehen. Warum ist das so? Tipp: diese "zwei" Dateien gehen nun eine besondere Beziehung ein.
-----------------
Ansonsten, wie ihr beide richtig erkannt habt, sagt der erste meiner Namen aus, dass diese Datei mir gehört. (Ich bin der Besitzer) mein Name an der zweiten Stelle ist die Gruppe zu der die Datei gehört. Diese heist, (weil ich die Datei angelegt habe) auch sebastian. Da jeder "normale" neu angelegter Benutzer (im Regelfall) automatisch eine Gruppe, die genauso heißt wie er selbst bekommt.
------------------
Die 0 Gibt die Dateigröße wie Dietrich auch schon richtig schrieb an. Also in dem Fall ist die Datei leer.
-------------------
Das Datum und die Zeit gibt an wann die Datei zuletzt bearbeitet wurde (Modifiziert, mtime)
--------------------
Und zuguter letzt folgt der Dateiname.
Offene Fragen
- Wofür steht das kleine s im Berchtigungs Block am Anfang?
- Was bedeutet die 1 bzw. jetzt 2 vor meinen Namen?
Bin gespannt ob ihr das auch noch herraus bekommt ;)
Freue mich auf eure Antworten
LG Sebastian
|
Titel: Re:ls Ausgabe verstehen
Beitrag von: Dietrich am 04. Oktober 2024, 18:53:53
Ich hoffe ich kann das S richtig erklären Es geht um das Setuid-Bit , es kennzeichnet zusätzliche Rechte für den Besitzer, die nur für die Ausführung dieses Programmes gelten.
Soweit für heute, morgen dann die 1 und 2 ;D
|
Titel: Re:ls Ausgabe verstehen
Beitrag von: Sebastian am 04. Oktober 2024, 19:28:24
Genau, das kleine s steht für das Setuid-Bit. Dies bewirkt folgendes:
Wäre "testfile" nun ein Programm so würde dies immer mit meinen Benutzer gestartet werden bzw. mit meinen Benutzerrechten als ob ich das Programm gestartet hättet. Auch wenn es ein ganz anderer Benutzer gestartet hat.
Wofür wird so etwas gebraucht? Nunja ohne dem würde das Programm sudo nicht funktionieren
Code:
❯ ls -l `type -P sudo` -rwsr-xr-x 1 root root 257136 2. Sep 07:50 /usr/bin/sudo
|
|
Denn wie man sieht, gehört das Programm sudo dem Benutzer root der wie ihr wisst alles darf. Das heist wenn ihr das Programm sudo verwendet, so startet sich das Programm mit den Rechten von root und das ermöglicht es dem Programm alles zu tun.
Deswegen ist es wichtig das sudo bevor es sich startet kontrolliert ob der Benutzer der sudo verwenden möchte, dies auch darf. Deswegen ist es wichtig das sudo richtig/sicher konfiguriert wurde. Damit kein unautorisierter Benutzer sudo verwendet.
Bin gespannt ob ihr den rest auch noch raus bekommt ;)
LG Sebastian |
Titel: Re:ls Ausgabe verstehen
Beitrag von: Dietrich am 04. Oktober 2024, 20:47:14
ok nun mal zu 1 und 2
hier wird ein Zähler gesetzt der, wieviel Dateien nach dem Befehl ls -l direkt abgefragt wurden, anzeigt.
Habe auch mal Dateien angelegt um zu sehen was dabei herauskommt....wobei ich dann einen Namen geändert habe, So ist eine Datei testfil vorhanden, wird mit einer 1 versehen die beiden testfile und testfile2 Dateien sind gleich werden nicht extra ausgewiesen, aber in der Summe mit der 3 versehn. Auch bei dreu unterschiedlichen Dateien bekomme ich in der Aufzählung 2 mit einer 1 voran und in der Dritten wird wieder eine 3 ausgegeben. |
Titel: Re:ls Ausgabe verstehen
Beitrag von: Sebastian am 05. Oktober 2024, 06:15:26
Hallo Dietrich,
Es wird schon wärmer, ;)
Ja, es ist ein Zähler. Er zeigt aber nicht die Anzahl der Dateien an, die mit ls -l abgefragt wurden. Das ist hier nur Zufall, dass dies passt. Um dies zu beweisen, kann man eine von deinen 3 Dateien in einen anderen Ordner legen und den Ordner mit den übrigen zwei Dateien einfach mal mit
Code:
Abfragen (Also ohne Angabe von Dateinamen wenn du im Ordner drin bist). Dann würde ls nur 2 Dateien dir Anzeigen und trotzdem müsste bei dir testfeile2, eine 3 Anzeigen. Solange du nicht eine von den Dateien in ein anderes Dateisystem verschiebst, oder eine der anderen Dateien gelöscht hast ;)
Dies kannst du auch an deinen Screenshot erkennen. Wäre es so, müsste ja bei allen drei Dateien eine 3 angezeigt werden. Oder zumindest hochgezählt werden (Es fehlt aber die 2) Da du ja auch jedes Mal 3 Dateien abgefragt hast mit ls. Das wäre so ja, ziemlich inkonsequent und willkürlich.
Der Schlüssel auf die Antwort ist zu wissen, wofür man das programm ln benutzen kann. Was macht man damit? Bzw. was kann man damit machen? Ich warte hier auf ein Stichwort, besser sogar 2 Stichwörter
Dein Screenshot sagt mir das du höchstwahrscheinlich auch ln verwendet hast für deine Testdateien. Aber was macht ln genau? Hast du schon mal versucht in eine Datei (Zähler ist höher als 1) etwas herein zuschreiben (irgendein Wort) und dir dann die anderen Dateien (zähler ist höher als 1) angeschaut, die du mit ln verbunden hast? ;)
PS:
Nimm für das Forum bei Text lieber ein Code Block statt eines Screenshots. Dann kann man bei Bedarf da auch was raus kopieren bzw. Text nimmt auch weniger Speicherplatz weg.
[ code ] Dein Teminal Output [ /code ]
Die Leerzeichen zwischen den Klammern musste ich setzten, damit das Board nicht gleich einen Code Block draus macht. Die müssen weggelassen werden.
LG Sebastian |
Titel: Re:ls Ausgabe verstehen
Beitrag von: Dietrich am 05. Oktober 2024, 18:45:03
ich hoffe das ist jetzt der Enspurt
ln = Link
Mit ln können symbolische und harte Links erstellt werden
Den Zähler dazu verstehe ich immer noch nicht, da ist noch eine Hürde, finde aber den Absprung nicht ::)
Code:
[dietrich@dietrich-medion ~]$ ln ./testfile_1 testfile1 [dietrich@dietrich-medion ~]$ ln ./testfile_2 testfile2 [dietrich@dietrich-medion ~]$ ln ./testfile_3 testfile3 [dietrich@dietrich-medion ~]$ ls -l testfile_1 testfile_2 testfile_3 -rw-r--r-- 2 dietrich dietrich 0 5. Okt 20:32 testfile_1 -rw-r--r-- 2 dietrich dietrich 0 5. Okt 20:32 testfile_2 -rw-r--r-- 2 dietrich dietrich 0 5. Okt 20:32 testfile_3 [dietrich@dietrich-medion ~]$ ls -l testfile1 testfile2 testfile3 -rw-r--r-- 2 dietrich dietrich 0 5. Okt 20:32 testfile1 -rw-r--r-- 2 dietrich dietrich 0 5. Okt 20:32 testfile2 -rw-r--r-- 2 dietrich dietrich 0 5. Okt 20:32 testfile3 [dietrich@dietrich-medion ~]$
|
|
es wird zwar der Unterschied zwischen den beiden Linkarten erklärt, aber wenn ich drei Dateien abfrage kommt maximal eine 2, ??? |
Titel: Re:ls Ausgabe verstehen
Beitrag von: Sebastian am 06. Oktober 2024, 07:10:36
Hallo Dietrich,
Ich löse jetzt auf. Wie du schon richtig festgestellt hast, kann man mit ln Links erstellen. Symbolische wie auch Harte Links (Wo drin der Unterschied ist, ist ein anderes Thema. Ihr könnt euch darüber aber gerne schlaumachen).
Was der Zähler nun eigentlich zählt, hat nichts mit ls zu tun, wie viel Dateien hier abgefragt werden oder so. Sondern der Zähler gibt an, wie viele harte Links es zu einer Datei (oder genauer gesagt zu deren Inhalt es gibt.)
Da möchte ich gleich mal dein Beispiel aufgreifen:
du hast mit
ln ./testfile_1 testfile1
Die beiden Dateien Hart verlinkt. Das bedeutet änderst du in der einen Datei etwas passiert das auch in der anderen (Warum das so ist erkläre ich weiter unten). Deswegen zeigt der Zähler 2 an da es jetzt 2 harte Links auf die Daten (Inhalt) der beiden Dateien gibt. Also egal welche Datei du dir mit ls -l angeschaut hättest, ob "testfile_1" oder "testfile1" bei beiden hätte dir der zähler 2 Angezeigt. Wie du ja auch gesehen hast.
Hintergrundwissen (Basiswissen):
Was sind harte Links?
Um das zu erklären, muss ich etwas weiter ausholen. Stellt euch jetzt mal nur den Inhalt einer Datei vor (ein Text, ein Brief, ein Foto was auch immer). Also nur den Inhalt, nicht den Dateinamen dazu. Dieser Inhalt (Daten) muss irgendwo auf euer Festplatte gespeichert werden. Am Anfang, vielleicht in der Mitte oder ziemlich am Ende eurer Festplatte. Egal wie, euerer Computer muss sich irgendwie merken können wo genau diese Daten gespeichert sind.
Und hier setzt ein sogenanntes Dateisystem an. Ein Dateisystem merkt sich genau das, wo liegen eure Daten, wo fängt der Brief/ das Foto an? Und wo hört es auf? Wo fangen die nächsten Daten an? All das merkt sich ein Dateisystem und trennt die Daten mithilfe von Dateinamen voneinander. Technisch weil ein Dateisystem wie eine Datenbank funktioniert, und eurer Computer besser mit Zahlen umgehen kann, nummeriert das Dateisystem eure Daten durch mit sogenannten Inodes (Hier ist wieder eine Gelegenheit was neues zu lernen ;) ) und diese Inodes können für uns Menschen da wir schlecht in Zahlen merken sind beschriftet werden. Wie z.B. mit einem Dateinamen oder auch anderen Informationen wie, wann wurden die Daten zuletzt bearbeitet? Oder gesichtet? etc. diese zuästzlichen Infoormationen zu einen Inode/Datei nennt man dann Metadaten da diese Daten andere Daten beschreiben.
Ihr könnt euch also ein Dateisystem wie eine art Inhaltsverzeichnis für eure Festplatte vorstellen. Womit mithilfe von Indoes/Dateinamen auf eine gewisse Position auf eurer Festplatte gezeigt wird wo sich eure Daten (Dokumente, Fotos etc.) befinden.
Und da die Welt Bund ist, und jeder eine Idee hat dinge besser zu machen, gibt nicht nur ein Dateisystem, sondern es gibt viele verschiedene, das eine ist besser für rotierende Festplatten, das andere ist besser für Flash Laufwerke (USB-Sticks, SSDs etc.) da die Dateien dort ein wenig anders organisiert werden etc.
Eins, der bekanntesten unter Linux das im Einsatz ist, ist dabei z.b. das ext4 Dateisystem. Das beim Formatieren (So nennent man das, wenn ein Dateisystem angelegt wird) ganz viele Indoes auf Reserve anlegt und diese nur darauf Warten sich mit euren Daten zu verknüpfen.
Mit diesem Hintergrundwissen versuche ich jetzt die harten Links zu erklären.
Man hat z.B. ein Foto auf seine Festplatte grade abgespeichert. Was passiert da jetzt genau im Hintergrund? Eurer Dateisystem verknüpft diese Daten/Foto mit einemInode und macht sich Notizen zu diesen Inode. An welcher Position der Festplatte liegt das Foto wo hört es auf, wie heist der Dateiname (Für uns Menschen besser verständlich als Inode Nummern) wann wurde das Foto gespeichert etc.
Wenn wir jetzt mithilfe von ln einen Harten Link auf das Foto erzeugen. So nimmt sich das Dateisystem einen weiteren Inode der auf denselben Indode der ersten Datei zeigt. Der damit auf dieselbe Festplattenposition zeigt, wie eine Art Referenz. Da wo das Foto liegt. Nur dieser Inode kann teilweise anders für uns Menschen beschriftet werden in Form eines anderen Dateinamen z.B.
Damit zeigen nun beide Links (harte Links) auf denselben Dateiinhalt, heißen aber nur anders. Und genau das ist es, was dieser Zähler anzeigt. Er sagt uns, wie viele harte Links es zu unserer Datei in unserem Dateisystem gibt, die alle auf dieselben Daten zeigen.
Demnach, solange dort die Zahl höher als 1 ist. So hat man irgendwo in seinem Dateisystem noch die Datei (vielleicht unter einen anderen Namen) gespeichert und demnach hat man auch noch kein Speicherplatz zurückgewonnen. Falls man eine dieser Dateien löscht.
Ich hoffe ich konnte das ganze einigermaßen verständlich erklären. Wenn etwas unklar ist, oder etwas nicht verstanden wurde, so fragt bitte bitte nach. Dieses Basis wissen ist wichtig zu verstehen wie Dinge zusammenhängen, um sich später auf andere Dingen ein Reim raus machen zu können.
Wenn ihr es wünscht und Lust habt, würde ich solche Fragen öfter im Forum stellen. Um euch eine Motivation zu geben, euch mit solchen Dingen zu beschäftigen.
Edit:
Bonus:
Möchtet ihr gerne die Inode Nr. (Also die Index Nr. euers Dateiystems) zu der Datei sehen (Die ihr euch ohne Dateinamen sonst merken müsstest). Könnt ihr das mit der Option -i beim ls befehlt dazuschalten. Die steht dann ganz am Anfang. Dort siieht ihr dann auch das alle harten Links auf den selben Inode (Dateninhalt) zeigen:
Code:
❯ ls -li testfile testfile_2 45355796 -rwsr-xr-- 2 sebastian sebastian 0 2. Okt 18:37 testfile 45355796 -rwsr-xr-- 2 sebastian sebastian 0 2. Okt 18:37 testfile_2
|
|
Apropo Reim draus machen. Jetzt weis man auch warum die Option -i heist. i wie Inode ;)
Also mithilfe dieses Technischen Basiswissen kann man sich die Optionen auch leichter merken ;)
LG Sebastian |
Titel: Re:ls Ausgabe verstehen
Beitrag von: Dietrich am 06. Oktober 2024, 15:14:35
Hallo Sebastian,
danke für die umfangreiche Auflösung, es hat mich, (ich hoffe auch die nur lesenden) wieder einen Schritt weiter gebracht. Metadaten, ist ein bekannter Begriff aber Inodes eher nicht. Wünsche noch einen schönen Restsonntag LG Dietrich |
Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.
|