Durchgetestet

Obwohl ich mit meinem Linux-System schon etwas Erfahrung habe, kommt es vor, dass ich eine Datei in einem Editor bearbeite, aber beim Abspeichern meiner Arbeit erfahre, dass ich für diese gar kein Schreibrecht habe. Gibt es nicht einen netten kleinen Befehl, mit dem ich Rechte vorher abfragen kann, ohne die von ls -l erzeugten langen Verzeichnis-Listen zu durchsuchen?

Dr. Linux: Der Befehl, mit dem Sie schnell und gezielt Informationen über eine Datei oder ein Verzeichnis bekommen, heißt schlicht test und ist ein Shell-Builtin. Aufgerufen wird er wie folgt:

test -option Datei-_oder_Verzeichnisname

So prüfen Sie mit folgendem Beispiel, ob Sie mit Ihrer aktuellen Identität Schreibrechte (-w steht für "write") für die Datei /etc/fstab besitzen:

perle@maxi:~> test -w /etc/fstab

Wer sich jetzt ratlos fragt, wo test das Testergebnis anzeigt, wird von der Antwort vermutlich enttäuscht sein: Gar nicht. Dieses Builtin ist nämlich eigentlich dafür gedacht, in Shell-Skripten Bedingungen nach dem Schema "Wenn die Schreibrechte auf /etc/fstab stimmen, dann führe folgendes aus" formulieren zu können, und dafür braucht man keine verbalen Ausgaben auf der Standard-Ausgabe. Stattdessen ist der Rückgabewert des Kommandos interessant.

Dieser ist für den jeweils letzten Befehl in der Variablen ? gespeichert. Enthält sie den Wert 0, dann war der Test erfolgreich; es besteht also die Möglichkeit, den Inhalt der Datei zu ändern. Schreibt jedoch der Befehl echo $?, mit dem man den Inhalt ($) der Variablen ? auf der Kommandozeile ausgibt, einen Wert ungleich 0 auf den Bildschirm, so war der Test nicht erfolgreich; ergo besteht kein Schreibrecht für die entsprechende Datei. Weil sich das viel komplizierter anhört, als es ist, sehen Sie hier einmal beide Schritte auf der Kommandozeile:

perle@maxi:~> test -w /etc/fstab
perle@maxi:~> echo $?
1

Die Ausgabe 1 ist ganz sicher ungleich 0; das heißt, die fragende Benutzerin besitzt kein Schreibrecht für die Datei mit der "Filesystem-Tabelle".

Weitere nützliche Optionen von test sind * -d: Handelt es sich bei der Argumentdatei um ein Verzeichnis (englisch: "directory")? * -e: Existiert die Datei überhaupt? * -r: Darf ich sie lesen ("read")?

Abfragen mit test werden übrigens immer in folgender Reihenfolge bearbeitet: Sind Sie Besitzer der Datei, überprüft test die Rechte des Datei-Eigentümers. Für Nicht-Besitzer wertet das Builtin hingegen zunächst die Gruppen-Rechte aus, des weiteren die Rechte für den sogenannten "Rest der Welt". Wenn Sie mehr über test erfahren möchten, rufen Sie die entsprechende Dokumentation mit man test und/oder info test auf.

Wer ist hier?

In welcher Datei finde ich Informationen, wer sich eingeloggt hat?

Dr. Linux: Grundsätzlich werden auf jedem Linux-System Daten über den Systemstart sowie das Login-Verhalten der Anwender gesammelt und in verschiedenen Datenbanken und Log-Dateien festgehalten. Daher gibt es keine generelle Antwort auf diese Frage. Zwei einfach zu nutzende Befehle sind last und lastlog.

Ihre Informationen besorgen sie sich aus der Datei /var/log/wtmp, die Angaben über erfolgreiche Logins und Logouts von Systembenutzern speichert. Wenn Sie jedoch versuchen, diese Datei mittels eines Editors zu betrachten, werden Sie nur verwirrende Zeichen erhalten (Abbildung 1).

Abbildung 1: /var/log/wtmp in einem Editor

Um der Datei ihre Informationen zu entlocken, geben Sie auf einer Kommandozeile den Befehl last ein. Sie bekommen eine mehrspaltige Tabelle, die relativ einfach zu verstehen ist (Listing 1). In der ersten Spalte steht der Anwendername ("Wer ist eingeloggt?"). Angaben zum benutzten Terminal (tty, "terminal type"), bei einem Remote-Login zum benutzten Host ("Woher eingeloggt?"), das Datum und die Uhrzeit ("Seit wann eingeloggt?") und schließlich die Gesamtdauer der Login-Session folgen. Am unteren Ende der Tabelle finden Sie noch die Information, seit wann Logins in dieser Datei mitprotokolliert werden: In der Regel packt und archiviert das System /var/log/wtmp von Zeit zu Zeit, damit das File nicht zu groß wird.

Listing 1

Beispielausgaben von

last

perle@maxi:~> last
news     tty3                          Mon Jan  7 19:04 - 19:04  (00:00)
web      tty2                          Mon Jan  7 19:04   still logged in
perle    tty5                          Mon Jan  7 18:33 - 18:35  (00:02)
perle    tty1                          Mon Jan  7 11:07   still logged in
trish    pts/7        chekov.linux-mag Mon Jan  7 11:06   still logged in
reboot   system boot  2.4.10-4GB       Mon Jan  7 11:03          (08:00)[…]
wtmp begins Wed Jan  2 01:23:54 2002

Listing 2

… und

lastlog
perle@maxi:~> lastlog
Username         Port     From             Latest
root             tty1                      Son Dez 16 22:06:26 +0100 2001[…]
lp                                          Never logged in 
games                                       Never logged in 
irc                                         Never logged in 
ftp                                         Never logged in 
firewall                                    Never logged in 
postfix                                     Never logged in 
web              tty2                      Mon Jan  7 19:04:04 +0100 2002
perle            tty5                      Mon Jan  7 18:33:15 +0100 2002
man                                         Never logged in […]
cz               tty4                      Mon Dez  3 03:13:35 +0100 2001

Ähnlich einfach und übersichtlich gibt sich die Ausgabe von lastlog. Hier werden alle Anwender, die das System angelegt hat, in die Ausgabe mit einbezogen. Unter Sicherheitsaspekten vom System generierte Spezial-User haben meist kein Home-Verzeichnis und dürfen sich gar nicht direkt einloggen. Das ist zum Beispiel beim Benutzer games der Fall. Weil er noch nie als Nutzer auf dem System angemeldet war, steht in der Spalte "Letzte Anmeldung" (Latest) der lapidare Kommentar **Never logged in**, "noch nie eingeloggt".

Glossar

Shell

Das "Mittlerprogramm", das Ihre Kommandos entgegennimmt, bearbeitet und schließlich an den Kernel zur Ausführung weiterleitet. Unter Unix-Betriebssystemen haben Sie die Wahl zwischen diversen Shells unterschiedlicher Funktionalität und Bedienphilosophie. Als Standard-Shell wird auf Linux-Systemen in der Regel die bash ("born again shell") benutzt, aber auch weitere Shells wie z. B. die csh ("C-Shell") und/oder die tcsh (eine erweiterte C-Shell mit der Möglichkeit, die Befehlszeile zu editieren) sind meist installiert.

su

Dieses Kommando ermöglicht das Wechseln zu einer anderen Anwenderkennung auf der Kommandozeile. Dabei wird eine neue Shell mit der Benutzeridentifikation des als Argument angegebenen Anwenders erzeugt. Fehlt letztere, erlaubt es su, kurzfristig als Superuser root zu arbeiten. Vorausgesetzt, Sie sind nicht bereits als root eingeloggt, benötigen Sie das Passwort für den gewählten User. Die neue Identität legen Sie durch Eingabe des Kommandos exit auf der Befehlszeile wieder ab.

Alias

Ein neuer Name bzw. ein Kürzel für einen selbstdefinierten Befehl (vgl. auch [1]). Welche Alias-Befehle in Ihrem System "vordefiniert" sind, erfahren Sie, wenn Sie das Kommando alias ohne weitere Angaben in der Bash eingeben.

Hash-Tabelle

Wird ein Kommando in einer Bash abgesetzt, dann "merkt" sich die Shell diesen Befehl in Form der Pfad-Angabe und speichert ihn in der sogenannten Hash-Tabelle. Rufen Sie dasselbe Programm erneut auf, liest die Bash die Pfad-Angabe aus der Hash-Tabelle, statt erst den gesamten Suchpfad nach der entsprechenden ausführbaren Datei zu durchforsten. Dadurch beschleunigt sich die Ausführung des Kommandos.

Variablen

Viele Funktionen der bash (und damit auch des Gesamt-Systems) werden durch Variablen gesteuert. Benutzerdefinierte und Systemvariablen sind jederzeit für die aktuelle Shell veränderbar. Auf die sogenannten "speziellen Variablen" kann der Benutzer hingegen nur lesend zugreifen. Welche Variablen im System gesetzt sind, bringt Ihnen (neben weiteren Informationen etwa zu Shell-Funktionen [1]) der Befehl set auf den Ausgabebildschirm.

Remote-Login

Fernanmeldung auf einem Rechner (Host) im Netz.

Infos

[1] Patricia Jung: "Kommandozeilen-Jongleur", LU 02/2002. Kasten 1 auf Seite 82 gibt nähere Informationen zu Shell-Builtins und Aliasen.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Dr. Linux
    Auch wenn oft schlicht von "einstampfen", "in die Tonne treten" oder "kopieren nach /dev/null" gesprochen wird, steckt hinter dem Löschen von Daten durchaus mehr als nur ein Mausklick.
  • PIDs, Daemonen, Zombies und Jobs
    Unix-Systeme sind nichts für Zartbesaitete: In der Welt der Prozesse wird gekillt und gestorben, wimmelt es von Zombies und Daemonen.
  • Dr. Linux
    Komplizierte Organismen, wie Linux-Systeme es nun einmal sind, haben so ihre ganz eigenen Wehwehchen. Dr. Linux begutachtet diesmal den Patienten Netscape, stellt Rezepte für aktuelle Probleme mit dem wohl meistgenutzten Web-Browser unter Linux aus und alternative Heilmethoden vor.
  • Dr. Linux
    Mit dem Erscheinen neuer Linux-Distributionen häuft sich in den Newsgroups die Frage: "Was bedeutet eigentlich char-major-[1…255]?" Die Antwort auf diese und andere Fragen gibt der folgende Artikel.
  • TurboPrint 1.40
    Ob es sich um liebevoll gestaltete Einladungskarten handelt oder eine Bewerbung: nur ein perfekter Ausdruck stellt die Anwender/in am Ende zufrieden. Die Druckertreiber von TurboPrint treten hier mit hohem Anspruch an.
Kommentare

Infos zur Publikation

title_2014_09

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...