Partager un terminal avec plusieurs utilisateurs (avec écran ou autre)

11

J'installe un serveur où plusieurs développeurs travaillent sur plusieurs applications.

J'ai compris comment donner à certains développeurs un accès partagé aux répertoires d'application nécessaires à l'aide de setgid bitet default ACLspour donner à tout le monde un accès de groupe.

Beaucoup de ces applications s'exécutent sous un terminal en cours de développement pour un accès facile. Lorsque je travaille seul, je configure un utilisateur pour une application et exécute l'écran en tant qu'utilisateur. Cela présente l'inconvénient que chaque développeur doit utiliser le screen sessionbesoin de connaître le mot de passe et il est plus difficile de séparer les comptes d'utilisateur et d'application.

Une façon qui pourrait fonctionner est d'utiliser les fonctionnalités multi-utilisateurs d'écran. Ils ne fonctionnent pas prêts à l'emploi cependant, l'écran se plaint d'avoir besoin suid root. Donner cela a-t-il des inconvénients? Je fais assez attention à ne suid rootrien utiliser . Peut-être qu'il y a une raison pour laquelle ce n'est pas la valeur par défaut?

Dois-je le faire avec screenou existe-t-il une autre façon intelligente de faire ce que je veux?

varesa
la source

Réponses:

23

Oui, vous pouvez le faire avec un screensupport multi-utilisateur.

Créez d'abord une nouvelle session:

screen -d -m -S multisession

Attachez-y:

screen -r multisession

Activez la prise en charge multi-utilisateurs:

Appuyez Ctrl-aet tapez

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

Maintenant, Ctrl-a det listez les sessions:

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

Vous avez maintenant une session d'écran multi-utilisateur. Donnez le nom multisessionà un utilisateur clcl, afin qu'il puisse le joindre:

screen -x youruser/multisession

Et c'est tout.

Le seul inconvénient est qu'il screendoit s'exécuter en tant que suidroot. Mais pour autant que je sache, c'est la situation normale par défaut.

Une autre option est de faire screen -S $screen_id -X multiuser on,screen -S $screen_id -X acladd authorized_user

J'espère que cela t'aides.

Scyld de Fraud
la source
1
C'est ce que j'ai essayé, jusqu'à ce que l'écran se plaint d'avoir besoin suid root. J'ai pensé que je demanderais si c'était la façon préférée de faire les choses avant d'ajouter des autorisations root aux programmes qui ne les ont pas par défaut
varesa
Étrange. Ma screenest la suidracine.
Scyld de Fraud
Je pense que cela pourrait être une chose dépendante de la distribution. J'ai essayé sur CentOS 6 ou 7 (besoin de vérifier)
varesa
Pour ce que ça vaut, screenn'est pas non plus suid rootsur Ubuntu 16.04.
icedwater
6
screen -S $screen_id -X multiuser on, screen -S $screen_id -X acladd authorized_user au lieu de commandes control-a serait un bon ajout à la réponse
ribamar