web-dev-qa-db-fra.com

Sudo en tant qu'utilisateur différent et écran en cours d'exécution

J'ai découvert aujourd'hui que l'exécution de l'écran en tant qu'utilisateur différent dans lequel j'adopte Sudo ne fonctionnera pas!

c'est à dire.

ssh bob@server         # ssh into server as bob
Sudo su "monitor" -
screen                 # fails: Cannot open your terminal '/dev/pts/0'

J'ai un script qui fonctionne en tant qu'utilisateur "moniteur". Nous l'exécutons dans une session d'écran afin de voir la sortie sur l'écran. Le problème est que nous avons un certain nombre d'utilisateurs qui se connectent avec leur propre compte (c'est-à-dire bob, james, susie, etc ...) puis ils Sudo dans l'utilisateur "moniteur". Leur donner accès à l'utilisateur "moniteur" est hors de question.

173
luckytaxi

Essayez d'exécuter script /dev/null en tant qu'utilisateur auquel vous su avant de lancer l'écran - c'est un petit hack ghetto, mais cela devrait faire plaisir à l'écran.

253
voretaq7

J'utilise une fonction wrapper autour de screen pour le ou les utilisateurs que je Sudo su à. Il s'agit de la fonction wrapper que j'ai ajoutée aux utilisateurs ~/.bashrc:

Écran de fonction 
 () {
/usr/bin/script -q -c "/ usr/bin/screen $ {*}" /dev/null[.____. 4.0}} ..____ .]

Cela me permet d'utiliser toutes les options et paramètres pour screen que je pourrais vouloir utiliser. J'envisage de mettre cette fonction à l'échelle du système.

34
steviethecat

En supposant que nous parlons de cette erreur:

$ Sudo su - bob
$ screen
Cannot open your terminal '/dev/pts/5' - please check.

Voici un one-liner (pourrait être utilisé comme "alias gobob", par exemple):

Sudo su - bob -c "script -c bash /dev/null"'

Explication:

Cela lancera un shell (comme le shell de connexion) en tant qu'utilisateur bob. L'utilisateur bob démarre script, qui est invité à invoquer un bash (pourrait être dash ou ksh ...) et une copie de la session est jetée.

7
basic6

En supposant qu'ils sont SSH dans l'hôte de toute façon, vous pouvez ajouter les clés ssh publiques pour chaque utilisateur qui a besoin d'accéder au compte du moniteur dans le fichier ~ monitor/.ssh/authorized_keys. Ensuite, sur la machine distante de chaque utilisateur, ils peuvent exécuter

ssh -t [email protected] screen -RD

7
Alex

Il faudrait probablement changer les autorisations sur l'appareil en question ou ajouter un moniteur à un groupe autorisé à lire cet appareil, ce serait ma première inclination. Mais vous devrez peser les implications de sécurité de le faire.

0
Bart Silverstrim

Vous dites que vous le faites:

Sudo su "monitor" -

Je m'interroge sur le tiret arrière. Je fais habituellement:

Sudo su - username

Le tiret (selon la page de manuel su) indique à su de "faire du shell un shell de connexion". Cela signifie qu'il source tous les scripts de démarrage habituels de Shell et définit correctement les éléments comme PATH et HOME.

0
Doug Harris

Je voudrais juste donner la permission de lecture/écriture à "autre":

Sudo chmod o+rw /dev/pts/0

Essayez à nouveau screen

0
Filippo Vitale