Home / LinuxUser / 2002 / 12 / The Answer Girl

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Dämonische Tricks

The Answer Girl

Wo sind die Befehle?

Ein bisschen hier geschaut, ein bisschen dort – wer bislang unter Linux die Bash als Kommandozeilen-Shell gewohnt war, flucht unter FreeBSD erst einmal, wenn die gewohnte zweimalige Betätigung der [Tab]-Taste keineswegs alle an dieser Stelle möglichen Datei- oder Programmnamen auflistet. Nur ein einmaliges [Tab], sofern bereits ein eindeutiger Namensanfang in der Shell steht, sorgt bei root für eine vernünftige Dateinamenserweiterung. Die unprivilegierte Benutzerin pjung malt hingegen fleißig Tabulatorzeichen auf die Kommandozeile.

Der Grund ist mit einem Blick in die Passwortdatei /etc/passwd leicht zu ersehen:

root :0:0:Charlie &:/root:/bin/csh
[…]
pjung :1002:1003:Patricia Jung:/home/pjung:/bin/sh

Weder root noch pjung haben die Bash als Login-Shell; letztere Benutzerin vor allem deshalb nicht, weil sysinstall beim Anlegen neuer User im Menüpunkt Configure / User Management / User einfach keine Möglichkeit bietet, Login-Shells auszuwählen, deren Pfad man nicht kennt (Abbildung 5).

Abbildung 5: Anlegen neuer User mit sysinstall

Dieses Problem haben wir auch, wenn wir den Shell-Eintrag in der /etc/passwd verändern wollen. Ein Tool sollte uns jedoch zur Seite stehen, wenn wir nach der ausführbaren Datei bash fahnden. Sein Name: locate. Dumm nur, dass locate bash das System zu folgender Ausrede veranlasst:

locate: database too small: /var/db/locate.database

Ein Blick auf die locate-Datenbank-Datei zeigt, wie locate zu dieser Behauptung kommt:

$ ls -al /var/db/locate.database
-rw-r--r--  1 nobody wheel  0 Aug 14 21:21 /var/db/locate.database

Ganze null Byte ist einfach immer zu klein … Aus Linux-Erfahrung wissen wir, dass das Kommando updatedb für die Erstellung der locateschen Datenbasis verantwortlich zeichnet. Doch da beißt sich die Katze in den Schwanz: Wie sollen wir updatedb finden, wenn ein Aufruf des Kommandos als root

# updatedb
updatedb: Command not found

nur die misslaunige Antwort der Shell hervorruft, dass updatedb nicht im Suchpfad enthalten ist? locate kann uns den Ort des Befehls aus guten Gründen nicht verraten. Also bleibt der pragmatische Griff zur Manpage (Listing 1).

Listing 1

Wer generiert die locate-Manpage?

$ man locate
[…]
FILES
[…]
   /usr/libexec/locate.updatedb     Script to update the locate database
   /etc/periodic/weekly/310.locate  Script that starts the database rebuild
[…]

Et voilà – dann ruft root eben nicht updatedb, sondern das Skript zum Generieren der Datenbank mit

/usr/libexec/locate.updatedb &

auf, und nach einer Weile mag locate Antworten geben – ein paar zuviele vielleicht, die sich zum seitenweisen Anzeigen wie unter Linux mit einer Pipe an less verfüttern lassen: locate /bash |less. Allerdings hätten wir die richtige Antwort, bash sei unter /usr/local/bin/bash zu finden, auch einfacher haben können: Zum einen mit which bash (/usr/local/bin ist Bestandteil des Suchpfades), zum anderen mit man shells: Diese Manpage verrät, dass die Datei /etc/shells (übrigens wie unter Linux) alle auf dem System installierten Shells mit Pfadangabe auflistet.

Solche hilfreichen Manpages gibt es übrigens mehrere: Wer der Login-Meldung einen genaueren Blick schenkt, wird zum Beispiel auf man hier aufmerksam, das einen lesenswerten Spaziergang durch den FreeBSD-Dateibaum unternimmt.

Der Master-Plan

Wenn root jetzt allerdings frohgemut zum Editor greift und in der /etc/passwd den Shell-Eintrag /bin/sh bei pjung in /usr/local/bin/bash ändert, hat die Rechnung ohne den kleinen Dämon gemacht. Loggt sich pjung erneut ein, funktioniert [Tab] immer noch nicht wie in der Bash und die Pfeiltasten für die History auch nicht.

man 5 passwd (in Sektion 5 befinden sich die Manpages zu Dateien) klärt auf: Wie mittlerweile auch unter Linux gängig, benutzt FreeBSD ein Shadow-Passwort-System: /etc/passwd enthält anstelle der verschlüsselten Passwörter ein *; diese sind in eine nur root zugängliche Schatten-Passwort-Datei ausgelagert. Während die /etc/shadow unter Linux jedoch komplett anders aufgebaut ist als /etc/passwd und außer dem User-Namen keine Daten daraus wiederholt, speichert die FreeBSD-Master-Passwort-Datei /etc/master.passwd auch alle aus /etc/passwd ersichtlichen Daten noch einmal.

Maßgebend für ein Login sind die Daten aus /etc/master.passwd. Doch selbst wenn root diese per Editor ändert, passiert noch nichts: Da das Parsen einer Textdatei vergleichsweise ressourcenintensiv ist, greift das login-Programm auf eine binäre Version der Master-Datei zu. Solange die nicht auch auf dem aktuellen Stand ist, sieht es schlecht aus für pjung.

Die passwd-Manpage legt im Abschnitt SEE ALSO immerhin den Gedanken nahe, einmal das Kommando pwd_mkdb ("passwd_makedatabase") unter die Lupe zu nehmen. Tatsächlich kann root mit

pwd_mkdb -u pjung /etc/master.passwd

gezielt den veränderten Eintrag für pjung aus /etc/master.passwd in den binären Datenbankdateien /etc/spwd.db (nur für root zugänglich, enthält die verschlüsselten Passwörter) und /etc/pwd.db (ohne Passwort, für alle lesbar) aktualisieren.

Zwei Dateien editieren und dann noch ein kryptisches Kommando aufrufen? Da greift jede Sysadmine gerne zu bereitgestellten Helfer-Tools: FreeBSD kennt vipw, ein Werkzeug, von dem in der Linux-Welt zumindest Debian-Nutzer(inne)n schon einmal gehört haben dürfen. In der FreeBSD-Version lädt es die Master-Passwort-Datei in den Editor vi (daher der Name) und erledigt die übrigen Aktionen automatisch. Will die Admine lieber ee benutzen, sagt sie (sofern sie mit der Default-C-Shell arbeitet) vor dem vipw-Aufruf einfach setenv EDITOR ee.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...