• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Mini Tutorial: Terminal teilen / "Über die Schulter schauen"

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Bitte beachtet auch die Diskussion im Zusammenhang mit suid (chmod +s) unten!

Der von lazertis & pepi vorgestellte Weg ist der sicherere.


Hi!

Ich stand schon mehrfach vor der Situation, daß ich jemandem im Terminal was zeigen wollte, derjeinge aber irgendwoanders auf der Welt saß.

Zum Glück gibt es ein Programm, mit dem man soetwas leicht bewerkstelligen kann.

screen

Nun bin ich nicht der Experte für dieses Programm und ich kenne längst nicht die Feiheiten und Möglichkeiten, aber vielleicht nutzt es ja jemandem, wenn ich mal beschreibe, wie man es nutzt, um gemeinsam in derselben Shellsession arbeiten zu können.

Zunächst muß es einen Rechner geben (host) auf dem sich beide User einloggen können. Nennen wir sie Ich und Du.

Du willst zusehen, wie Ich etwas auf meinem host erledige.

Dazu bekommst Du zunächstmal Zugang zu meinem host. Am geschicktesten über ssh. Dazu aber an anderer Stelle von jemand anderem später mehr ;) Nachtrag: Ich habe inzwischen erfahren, daß es da schon längst was gibt...

Wenn also Du eingeloggt bist, dann tippe Ich in meinem Terminal Fenster als Vorbereitung ein:
Code:
sudo chmod +s /usr/bin/screen
Dies mache ich aber nur ein einziges Mal. Auch nach einem Rechnerneustart brauche ich das nicht wieder einzugeben. (Achtung! Damit wird das s-Bit (das "set-user-ID-on-execution and set-group-ID-on-execution" Bit) gesetzt. Sowas sollte man nicht ohne guten Grund machen!)

Wenn Ich dieses Bit schonmal gesetzt habe, dann kann Ich nun eingeben:
Code:
screen

Es erscheint ein Hinweisbildschirm, den man mit [Space] bestätigt. (Text in der Formatierung [irgendwas] bezeichnet eine Taste, die zu drücken ist)

Anschließend hat man wieder einen Prompt.

Nun muß man screen noch mitteilen, daß man einen weiteren User zulassen möchte. Dazu wechselt man mit [ctrl]+[a] gefolgt von [:] in den Kommandomodus. Erkennbar daran, daß in der unten linken Ecke ein inverser Doppelpunkt zu sehen ist. Dort tippt man nun ein:
Code:
multiuser on
was durch die (inverse) Meldung "Multiuser mode enabled" bestätigt wird.

Anschließend bekommst Du noch die Erlaubnis auf den Screen zuzugreifen. Wieder in den Kommandomodus wechseln: [ctrl]+[a] [:] und das kommando eingeben:
Code:
addacl Du
(Für "Du" natürlich die Kennung des entsprechenden anderen Users nehmen.) Diesmal erfolgt keine Bestätigung.

Du gibst nun im Terminal ein, nachdem Du Dich ja auf meinem host angemeldet hast:
Code:
screen -r Ich/
(Für "Ich" natürlich die Kennung des entsprechenden anderen Users nehmen.)

Du solltest nun alles sehen, was Ich im Terminal tippe, und umgekehrt.

Mit [ctrl]+[d] kann jeder der beiden die Sitzung beenden.
 
Zuletzt bearbeitet:

Dr.Apfelkern

Jerseymac
Registriert
18.04.07
Beiträge
454
Man kann aber auch auf die Webseite http://terminaltalk.de/ gehen und sich dort die Tutorials durchlesen, diese sich per Download nach Hause holen und danach seine Konfiguration durchführen. Das ist sicherer als per SSH mit anderen entfernten Teilnehmern auf dem Rechner rumzuspielen.

Solange es sich natürlich dabei um deinen privaten Rechner handelt, liegt die Verantwortung in deiner Hand. Auf einem Firmen-Rechner geht so was schon mal gar nicht.

Nichts desto trotz werden das jetzt hier einige Leser ausprobieren wollen. Ich rate davon strikt ab. Einfach der Sicherheit zur Liebe.

Danke für die Aufmerksamkeit, ich geh dann mal wieder "runter".
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Solange es sich natürlich dabei um deinen privaten Rechner handelt, liegt die Verantwortung in deiner Hand.
Davon gehe ich aus.

Auf einem Firmen-Rechner geht so was schon mal gar nicht.
Sollte das auf einem Firmenrechner möglich sein, so gehört der Firewall Admin abgewatscht, dafür, daß er ssh von aussen nach innen zuläßt.

Nichts desto trotz werden das jetzt hier einige Leser ausprobieren wollen. Ich rate davon strikt ab. Einfach der Sicherheit zur Liebe.
Wie Du meinst. Ich fand es bisher immer mehr als nützlich, einem Kollegen so z.B. zu zeigen, wie Solaris installiert wird oder wie er sein sudo file erweitert, um nur 2 der letzten Anwendungsfälle zu schildern.
 

lazertis

Schöner von Nordhausen
Registriert
26.11.06
Beiträge
327
Hallo zusammen,

die Konstruktion mit screen geht sogar noch etwas einfacher.

Start der Session: Wenn ich eine screen-Session starte, tue ich dies mit dem Parameter -S und gebe der Session einen Namen, sagen wir mal Uschi:
screen -S Uschi
Einer Session beitreten (attachen): Anschliessend loggt sich die zweite Person auf denselben User per ssh an und startet screen mit dem Parameter x sowie dem Session-Namen
screen -x Uschi
Schon können beide in parallel in der Screen-Session arbeiten.

Eine Session verlassen: ...kann man durch einen Detach mit folgender Tastenkombination:
Ctrl-A + d
(Also erst Ctrl plus a, danach die Taste d (für detach). Schon ist man wieder draussen.)

Session beenden: Mit exit oder Ctrl-D

Natürlich sind bei ssh-Zugängen die jeweils sinnvollen und notwendigen Sicherheitsregeln zu beachten, aber das ist ein anderes Thema... ;)
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Code:
sudo chmod +s /usr/bin/screen
Ein derart wackeliges Gefrickel-Dingens wie "screen", das noch dazu über eine derart unüberschaubare und vielschichtige Möglichkeit zu verdeckten Hintergrundoperationen bietet...
screen suid setzen?
Da würde ich lieber meine Brieftasche einem wildfremden Junkie vor dem Frankfurter Hauptbahnhof in die Finger drücken und ihn bitten, mal kurz darauf aufzupassen...
KEINE plusgute Idee. screen ist mir schon unter "normalen" Benutzerrechten nicht ganz geheuer. Danke - nein.
 
  • Like
Reaktionen: Trapper

lazertis

Schöner von Nordhausen
Registriert
26.11.06
Beiträge
327
Jep, volle Zustimmung, ein suid auf screen ist grob fahrlässig. Darum kommt die von mir gepostete Lösung auch ohne suid (d.h mit dem nach Mac OS X-Installation vorhandenen Standard) aus und kann nur "innerhalb des startenden Users" ausgeführt werden.

In einer solchen Umgebung halte ich screen für durchaus praktisch, solange man sich durch andere Sicherheitsnachlässigkeiten nicht gerade den Frankfurter Bahnhofsjunkie auf den Rechner geholt hat. ;)
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Darum kommt die von mir gepostete Lösung auch ohne suid (d.h mit dem nach Mac OS X-Installation vorhandenen Standard) aus und kann nur "innerhalb des startenden Users" ausgeführt werden.
Schön wäre es. Klappt aber nicht. Ich habe mit "chmod -s /usr/bin/screen" das Bit wieder gelöscht.

Dann habe ich ausgeführt
Code:
ich$ screen -S Uschi
Zusätzlich habe ich die Kommandos "multiuser on" und "addacl andererUser" eingegeben, auch wenn Du das nicht beschrieben hast.

Wenn der andere User nun eingibt:
Code:
anderer$ screen -x Uschi
erscheint "There is no screen to be attached matching Uschi."

Wenn er eingibt:
Code:
screen -x Uschi/
erscheint "Must run suid root for multiuser support."

Es wäre also schön, Du würdest Deine Lösung nochmal überprüfen und wir suchen nach der richtigen Lösung um das Mini-Tutorial entsprechend zu ändern.

Nachtrag: Multiuser support geht so nicht! Siehe hier.... Was Du beschrieben hast ist nur praktikabel, wenn beide User im selben Account arbeiten!

Das sollte auch nicht unbedingt ein Problem darstellen. Denn wenn ich das s-Bit setzen darf, dann darf ich höchstwahrscheinlich auch einen User extra zu diesem Zweck anlegen. Wenn ich dann im screen bin, kann ich mit login auf meinen echten User wechseln.
 
Zuletzt bearbeitet:

lazertis

Schöner von Nordhausen
Registriert
26.11.06
Beiträge
327
@Skeeve: Den Multiuser-Support habe ich bisher nicht genutzt, da kann ich nichts zu sagen. Ich nehme aber an, daß Du genau dafür das suid brauchst. (Der andere User führt damit screen als root aus und kann deswegen in einer User-fremden Session einsteigen. Genau das ist aber ein grosses Sicherheitsloch!)

Meine Lösung braucht kein suid, funktioniert aber auch nur innerhalb eines Users, d.h. Dein "Besucher" muss als derselbe User wie Du angemeldet sein.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Soweit ich screen kenne ist ein Multiattach von verschiedenen (non-root) Usern ausschließlich möglich wenn screen SUID root ist. Dies ist natürlich sicherheitstechnisch unter keinen Umständen vertretbar.

Die beste Lösung dürfte daher wirklich sein, daß beide Benutzer sich mit einem unpreviligierten User einloggen, die screen session starten und der "Leiter" der Session diese dann per login mit dem entsprechenden previligierten User anmeldet.

Alternativ könnte man schauen inwiefern man den Output einer Terminal (oder auch screen) Session per wall(1) oder write(1) an einen anderen User senden könnte. So wäre auch das read only Problem erledigt.
Gruß Pepi

...und wenn ich jetzt noch irssi mit screen und multiwindow support per ssh zum Laufen bekäme hätte ich einen großen Knoten weniger in meinem Kopf...
 

lazertis

Schöner von Nordhausen
Registriert
26.11.06
Beiträge
327
Soweit ich screen kenne ist ein Multiattach von verschiedenen (non-root) Usern ausschließlich möglich wenn screen SUID root ist. Dies ist natürlich sicherheitstechnisch unter keinen Umständen vertretbar.

---------------------------------------------------------------------------------------------------------------
Ergänzung: Meine untenstehende Antwort basiert auf einem Mißverständnis.
Sie ist zwar korrekt, aber Pepis obenstehende Aussage natürlich auch. :)
---------------------------------------------------------------------------------------------------------------


Doch, es funktioniert - wie von mir in Post #4 beschrieben - wenn beide mit demselben User angemeldet sind. Dieser braucht keine Adminrechte. Und screen ist nicht SUID:

pro:~ elmar$ ls -l /usr/bin/screen
-rwxr-xr-x 1 root wheel 628408 Jul 2 2006 /usr/bin/screen

SUID root sähe so aus:

pro:/usr/bin root# ls -l screen
-rwsr-xr-x 1 root wheel 628408 Jul 2 2006 screen


Einfach mal ausprobieren... ;)
 
Zuletzt bearbeitet:

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Doch, es funktioniert - wie von mir in Post #4 beschrieben - wenn beide mit demselben User angemeldet sind.
Und genau das hat pepi doch geschrieben (Hervorhebung durch mich):
Die beste Lösung dürfte daher wirklich sein, daß beide Benutzer sich mit einem unpreviligierten User einloggen, die screen session starten und der "Leiter" der Session diese dann per login mit dem entsprechenden previligierten User anmeldet.
 

lazertis

Schöner von Nordhausen
Registriert
26.11.06
Beiträge
327
@Skeeve: Stimmt, Du hast natürlich recht. Ich hatte Pepi falsch verstanden. Insofern stimmen unsere beiden Aussagen. :) Danke für den Hinweis.