Tipp: /var/log/* lesbar machen

IceHouse

Aktives Mitglied
Thread Starter
Dabei seit
03.06.2002
Beiträge
691
Reaktionspunkte
22
Hallo zusammen,

ich benutze das Apple Programm "Console" (/Applications/Utilities/) sehr gerne um mir einen schnellen Ueberblick ueber die wichtigsten Logfiles zu verschaffen.

Nun ist es leider so, das manche Logfiles dort nicht von best. Gruppen gelesen werden duerfen. Das ist Aergerlich, da die Logfiles in der Console dann natuerlich nichts anzeigen, wenn man sie vorher lesbar gemacht und geoeffnet hatte.

Nun kann man mit einem geschickt gebastelten $SHELLSTRING und einem alias darauf das Problem aber recht praktisch loesen. Wenn man das ganze dann auch noch in die /etc/crontab oder die /sw/etc/anacron reinschreibt, braucht man sich darum nie wieder kuemmern und es wird jeden Tag einmal ausgefuehrt.

sudo chmod -R 644 /var/log/ && sudo find /var/log/ -type d -exec chmod -R 755 {} \;

sudo == Ausfuehren der Befehle mit Adminrechten

chmod -R 644 == Aendere die Zugriffsrechte der Dateien auf -rw-r--r-- und das bitte Rekursiv durch den Verzeichnisbaum /var/log

&& == Verkettung 2er Befehle, wobei der 2te Befehl NUR dann ausgefuehrt wird, wenn der erste Erfolgrreich war.

find /var/log/ -type d == finde in /var/log/ alle Ordner (type -d) und fuehre dann einen weiteren Befehl aus

-exec chmod -R 755 {} \; == schiebe das gefundene durch das -exec und wende den Befehl "chmod -R 755" auf den Inhalt von "{}" an - der Befehl "-exec" muss durch "\;" terminiert sein um ein Ende zu finden.

Als naechstes in der Shell mal nach "cd /var/log/" gehen und dann im Verzeichnis "open ." eintippen und absenden. Im Finder oeffnet sich nun das Logfile Verzeichnis :) Nun kann man bequem die Logfiles per Drag & Drop auf das Console Symbol im Dock ziehen. Nun werdet ihr evtl. feststellen, das man da aber best. Logfiles nicht auf Console im Dock ziehen kann - auch dafuer gibt es einen Trick:

Logfile aus dem Verzeichnis ziehen, dann mit der linken Hand am Keyboard Apfel & Alt herunterdruecken und halten, waehrend man das Logfile auf das Consolesymbol im Dock zieht - nun sollte es gehen.

Diesen Trick kann man im gesamten System mit allen Applikationen anwenden - aber Vorsicht: Es macht evt. nicht wirklich Sinn, ein UNIX Binary wie "ls" mit TextEdit zu oeffnen :)

Nun, ab sofort also nie wieder unlesbare Logfiles in /var/log :)

Viel Spass
-=IceHouse=-
 
Hi Ice

Klasse Beitrag, ich wünschte mir, wir hätten mehr in der Qualität hier im Forum. Eigentlich wäre das auch ein Kandidat für die FAQs, aber ich habe so meine Zweifel ob das "frequently" gefragt wird.

Weiter so

W
 
Hallo IceHouse!
hm..Interessanter beitrag :)

..aber etwas verstehe nicht!
so wie ich das sehe ändert der shellstring 2mal die rechte der logfiles...wozu? und was macht das "-exec" ? kannst du das evtl. nochmals etwas genauer erklären? danke!

gruss Maurus
 
Original geschrieben von Maurus
so wie ich das sehe ändert der shellstring 2mal die rechte der logfiles...wozu? und was macht das "-exec" ? kannst du das evtl. nochmals etwas genauer erklären? danke!
 

sudo chmod -Rf 644 /var/log/ && sudo find /var/log/ -type d -exec chmod 755 {} \;

Blau: Aendere die Rechte (chmod) aller Elemente (Dateien und Ordner), rekursiv (-R), ohne Ausgabe (-f) auf 644
Ergebnis: Alles steht im Baum "/var/log/" auf -rw-r--r--, auch die Ordner - deswegen kommt nun der Rote Teil:

Gruen: Verbinde beide Befehle und fuehre den 2ten nur dann aus, wenn ersterer ohne Error durchgelaufen ist.

Rot: finde AB "/var/log/" den Typ "Ordner" und schicke das Erbebnis "{}" mit "-exec" an ein nachfolgendes Utility (chmod).
Ergebnis: Alle Ordner im Baum "/var/log/" werden auf das Recht drwxr-xr-x gesetzt, sodass man wieder in die Ordner "hinein" kann :)

Wer es subtiler mag, kann natuerlich auch folgendes verwenden:

sudo find /var/log/ -type f -exec chmod 644 {} \; && sudo find /var/log/ -type d -exec chmod 755 {} \;

Wir muessen auf jeden Fall sicherstellen, das auch die Ordner von der Gruppe betreten werden duerfen, sonst kommen wir zum lesen nicht an einige Logfiles heran.

Gruss
-=IceHouse=-
 
Würde es denn ...

... so nicht auch funktionieren?

chmod 777 /var/log/* ?

Alle Dateien im Verzeichnis können ausgeführt und von jedem gelesen und beschrieben werden. Die Verzeichnisse durch die gechmodet wird, bleiben doch davon unberührt und brauchen nicht zusätzlich in ihren Benutzerrechten geändert werden.

Ist zwar schon lange her, hoffentlich liest du das auch ...

Ansonsten aber ein toller Beitrag von dir. Du beschäftigst dich wohl mit dieser Materie? Solche Bekanntschaften kann ich gebrauchen.

Hoffe du läßt was von dir hören ...
 
Ich benutze auch gerne (unter Linux) ein befehl names tail...

Damit könnt ihr zB die Einträge in einem Logfile aktiv beobachten...
ein tail -f /var/log/messages beginnt bei den letzten Einträgen in dem Logfile und zeigt automatisch bis zum beenden von tail alle neu hinzu kommenden Einträge an....
zB bei den Webserverlogs kann das interessant sein :)
 
Andere Frage:

Kann man unter MacOS im Terminal nicht per "su" root werden und sich dann die Logdateien anschauen? (ich habe keinen Mac und kann es nicht ausprobieren).

Die hier genannte Methode kommt mir ein wenig umständlich vor.

Also per su Root-Rechte erhalten und dann mit less oder tail -f in die Logs sehen.

jm2c

Lars
 
guter Beitrag IceHouse! Danke für die Informationen... man lernt immer wieder was dazu ;)
 
Es geht auch einfacher, indem man im Terminal die Console mit sudo startest:
Code:
sudo /Applications/Utilities/Console.app/Contents/MacOS/Console
Da die Logfiles immer wieder frisch von periodic daily, weekly und monthly angelegt werden, müsste man diese nach jedem dieser Maintenance-Skripte wieder umstellen oder gleich in den periodic-Skripten ändern.
Code:
diskutil repairPermissions /
würde diese Rechte auch wieder verwerfen.

Die Rechte der Logfiles haben durchaus ihre Berechtigung und man sollte sich vorher genau überlegen, ob man sie ändern möchte.

pepp carro banana cumber
 
spontan entschlossen, ab in die faq ecke ;)
 
cilly schrieb:
Es geht auch einfacher, indem man im Terminal die Console mit sudo startest:
Code:
sudo /Applications/Utilities/Console.app/Contents/MacOS/Console

Kann man - muss man man aber unter OS X 10.3.x nicht mehr.

cilly schrieb:
Da die Logfiles immer wieder frisch von periodic daily, weekly und monthly angelegt werden, müsste man diese nach jedem dieser Maintenance-Skripte wieder umstellen oder gleich in den periodic-Skripten ändern.
Code:
diskutil repairPermissions /
würde diese Rechte auch wieder verwerfen.

Wenn du meinen ersten Beitrag aufmerksam gelesen haettest, waere dir der 3te Absatz aufgefallen - Stichwort crontab bzw. anacrontab.

cilly schrieb:
Die Rechte der Logfiles haben durchaus ihre Berechtigung und man sollte sich vorher genau überlegen, ob man sie ändern möchte.

Wenn man in der Shell/ Terminal arbeitet und wenn man mit sudo arbeitet, sollte man immer sehr genau darauf achten, was man tut. Unter OS X 10.3.x hat sich das Thema sowieso erledigt. Im Prinzip ging es seinerzeit auch mehr um etwas Shellarbeit und deren Erklaerung wie, was und warum.

Gruss von IceHouse
 
IceHouse schrieb:
Kann man - muss man man aber unter OS X 10.3.x nicht mehr.
Ich verstehe nicht, was du meinst? Das secure-log z.B. kann nur der root user lesen und das hat seinen Grund!
IceHouse schrieb:
Wenn du meinen ersten Beitrag aufmerksam gelesen haettest, waere dir der 3te Absatz aufgefallen - Stichwort crontab bzw. anacrontab.
Etwas kompliziert, man müsste es nach daily, weekly und monthly starten.
IceHouse schrieb:
Unter OS X 10.3.x hat sich das Thema sowieso erledigt. Im Prinzip ging es seinerzeit auch mehr um etwas Shellarbeit und deren Erklaerung wie, was und warum.
Hat man Admin-Rechte, kann man alle logfiles außer secure-log lesen. Da ich generell ohne Admin-Rechte eingeloggt bin, starte ich im Terminal ein Login zum Admin-Account und starte die Console mit sudo.

Meiner Meinung nach ist die Änderung der Rechte der falsche Weg, das hat schon seinen Grund, warum diese so gesetzt wurden. Das muss jedoch jeder für sich entscheiden.

IceHouse, es sollte nur von mir eine kritische Bemerkung sein, schließlich hängt dieser Tipp in FAQ und das lesen auch Einsteiger!
 
Zurück
Oben Unten