Freigabe eines Terminals für mehrere Benutzer (mit Bildschirm oder auf andere Weise)

10

Ich richte einen Server ein, auf dem mehrere Entwickler an mehreren Anwendungen arbeiten.

Ich habe herausgefunden, wie man bestimmten Entwicklern gemeinsamen Zugriff auf die erforderlichen Anwendungsverzeichnisse gewährt, indem man setgid bitund default ACLsjedem in einer Gruppe Zugriff gewährt.

Viele dieser Anwendungen werden während der Entwicklung unter einem Terminal ausgeführt, um einen einfachen Zugriff zu ermöglichen. Wenn ich alleine arbeite, richte ich einen Benutzer für eine Anwendung ein und führe den Bildschirm als dieser Benutzer aus. Dies hat den Nachteil, dass jeder Entwickler, der die screen sessionAnforderungen verwendet, das Kennwort kennen muss und es schwieriger ist, Benutzer- und Anwendungskonten getrennt zu halten.

Eine Möglichkeit, die funktionieren könnte, ist die Verwendung von Bildschirm-Mehrbenutzerfunktionen. Sie funktionieren jedoch nicht sofort, der Bildschirm beschwert sich über die Notwendigkeit suid root. Hat das Geben irgendwelche Nachteile? Ich bin ziemlich vorsichtig mit suid rootirgendetwas. Vielleicht gibt es einen Grund, warum dies nicht die Standardeinstellung ist?

Soll ich es machen screenoder gibt es eine andere intelligente Möglichkeit, das zu tun, was ich will?

varesa
quelle

Antworten:

19

Ja, Sie können dies mit screenMehrbenutzerunterstützung tun .

Erstellen Sie zunächst eine neue Sitzung:

screen -d -m -S multisession

Fügen Sie es hinzu:

screen -r multisession

Aktivieren Sie die Mehrbenutzerunterstützung:

Drücken Sie Ctrl-aund tippen Sie

:multiuser on
:acladd USER ← use username of user you want to give access to your screen

Nun Ctrl-a dund listen Sie die Sitzungen auf:

$ screen -ls
There is a screen on:
    4791.multisession   (Multi, detached)

Sie haben jetzt eine Mehrbenutzer-Bildschirmsitzung. Geben Sie dem multisessionBenutzer einen Namen, damit er ihn anhängen kann:

screen -x youruser/multisession

Und das ist es.

Der einzige Nachteil ist, dass screenals suidroot ausgeführt werden muss. Aber soweit ich weiß, ist die normale Standardsituation.

Eine andere Option ist zu tun screen -S $screen_id -X multiuser on,screen -S $screen_id -X acladd authorized_user

Hoffe das hilft.

Scyld de Fraud
quelle
1
Dies ist, was ich versucht habe, bis zu dem Punkt, an dem sich der Bildschirm über die Notwendigkeit beschwert suid root. Ich fand heraus, dass ich fragen würde, ob dies die bevorzugte Methode ist, bevor ich Programmen, die diese nicht standardmäßig haben, Root-Berechtigungen hinzufüge
varesa
Seltsam. Mein screenist suidWurzel.
Scyld de Fraud
Ich denke, das könnte eine distro-abhängige Sache sein. Ich habe CentOS 6 oder 7 ausprobiert (muss überprüft werden)
Varesa
Für das, was es wert ist, screenist auch nicht suid rootauf Ubuntu 16.04.
Eiswasser
6
screen -S $screen_id -X multiuser on, screen -S $screen_id -X acladd authorized_user statt Kontrolle
Befehl