Linux Terminal Sessions mit screen im Single- und Multiuser Modus

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel bietet eine Einführung in die Verwendung der GNU Software screen. Screen ermöglicht die Aufzeichnung von Terminal Sitzungen unter Linux. Es hat den großen Vorteil, dass diese Sitzungen durch Verbindungsabbrüche nicht beendet werden. Weiters können abgetrennte ("detached") Screen Sitzungen jederzeit wieder aufgenommen werden. Das kann z.B. sinnvoll sein, wenn die Ausführung eines Kommandos längere Zeit dauert und man sich zwischenzeitlich vom System abmelden möchte. Weiters können sogenannte Multiuser Sessions dazu verwendet werden, dass sich mehrere User auf die selbe Terminal Sitzung verbinden. Es ist auch möglich Berechtigungen im Multiuser Modus zu setzen, dadurch kann z.B. eine Session für andere User nur im lesenden (readonly) Modus zur Verfügung gestellt werden. Die folgende Beispiele wurden unter Ubuntu 12.04 getestet.

Einführung in die Verwendung von Screen

Wenn Sie Debian oder Ubuntu verwenden, genügt folgender Aufruf um Screen zu installieren.

apt-get install screen

Um eine Screen Session zu starten genügt in der Shell der Aufruf des Kommandos "screen". Dadurch wird eine Shell innerhalb einer Screen Session gestartet. Sie können nun in dieser Session wie in einer herkömmlichen Shell arbeiten, mit dem Unterschied, dass sie sich jederzeit davon trennen können ("detach") mit der Tastenkombination [Strg]+[A] [D]. Mit "screen -ls" können Sie dann die vorhanden Screen Sessions ansehen, um danach mit "screen -r <session name>" wieder zurückzukehren ("resume").

$ screen
$ date
Thu Apr 11 16:34:23 CEST 2013
[detached from 28253.pts-0.ubuntu]

$ screen -ls
There are screens on:
	28253.pts-0.ubuntu (04/11/2013 04:32:19 PM)	(Detached)
	24230.pts-0.ubuntu (04/11/2013 04:26:45 PM)	(Detached)
2 Sockets in /var/run/screen/S-user.

$ screen -r 28253.pts-0.ubuntu

Beendet kann eine Screen Session durch Eingabe von "exit" innerhalb der Session.

Scrolling und Speichern einer Screen Session

Das Scrolling nach oben ist in einer Screen Session in den Default Einstellungen nicht aktiviert.

Mit folgender Einstellung in der $HOME/.screenrc können Sie Scrolling für neue Screen Sessions aktivieren:

termcapinfo xterm ti@:te@

Auch für bestehende Screen Sessions gibt es eine Lösung. Es kann mit [Strg]+[A] [Esc] in den "Copy" Modus gewechselt werden und dann mit den Cursor-Tasten nach oben/unten gescrollt werden.

Weiters können im Copy Modus die gewünschten Teile der Screen Session markiert werden. Dafür scrollt man zuerst zum gewünschten Anfangspunkt und drückt dort das erste mal die [Leertaste]. Danach scrollt man weiter nach unten, und markiert dann mit der [Leertaste] den Endpunkt. Der ausgewählte Inhalt ist nun einem Screen-internen Buffer.

Dieser Buffer kann nun durch die Tastenkombination [Strg]+[A] [:] und dem folgenden Kommando "writebuf" in die voreingestellte Datei /tmp/screen-exchange geschrieben werden.

$ date
Thu Apr 11 16:34:23 CEST 2013
$ 

Copybuffer written to "/tmp/screen-exchange".

Multiuser Screen Session

Das HowTo auf nixshell.blogspot.co.at (existiert leider nicht mehr) zeigt die Verwendung des Multiuser Modus mit Screen. Interessant ist insbesondere das Entziehen der Schreib.Berechtigung. Dies kann verwendet werden, dass ein User die Shell bedient, und mehrere andere User nur lesend zuschauen können.

Erstellen Sie eine Screen Session unter einem beliebigen Namen.

screen -S testsession

Führen Sie danach folgende Kommandos aus, um Multiuser Support zu aktivieren, danach einem User testuser die Berechtigung zu geben und ihm danach die Schreibberechtigung zu entziehen.

$ [Strg]+[A] :multiuser on
$ [Strg]+[A] :acladd testuser
$ [Strg]+[A] :aclchg testuser -w "#"

Damit der Multiuser Modus verwendet werden kann, muss unter Ubuntu zuerst das SUID Bit gesetzt werden als root.

$ chmod u+s /usr/bin/screen

Jetzt können Sie sich z.b. per SSH mit dem testuser verbinden und dann mit "screen -x" der readonly Session beitreten.

$ screen -x user/testsession
$ date
Thu Apr 11 17:08:50 CEST 2013
$ 

write: permission denied (user testuser)  


Foto Christoph Mitasch.jpg

Autor: Christoph Mitasch

Christoph Mitasch arbeitet in der Abteilung Web Operations & Knowledge Transfer bei Thomas-Krenn. Er ist für die Betreuung und Weiterentwicklung der Webshop Infrastruktur zuständig. Seit einem Studienprojekt zum Thema Hochverfügbarkeit und Daten Replikation unter Linux beschäftigt er sich intensiv mit diesem Themenbereich. Nach einem Praktikum bei IBM Linz schloss er sein Diplomstudium „Computer- und Mediensicherheit“ an der FH Hagenberg ab. Er wohnt in der Nähe von Linz und ist neben der Arbeit ein begeisterter Marathon-Läufer und Jongleur, wo er mehrere Weltrekorde in der Team-Jonglage hält.


Das könnte Sie auch interessieren

Ext4 Dateisystem
FSCK Best Practices
Linux Page Cache