Sudo as different user and running screen
Found out today that running screen as a different user that I sudo into won't work!
i.e.
ssh bob@server # ssh into server as bob
sudo su "monitor" -
screen # fails: Cannot open your terminal '/dev/pts/0'
I have a script that runs as the "monitor" user. We run it in a screen session in order to see output on the screen. The problem is, we have a number of user who logs in with their own account (i.e. bob, james, susie, etc...) and then they sudo into the "monitor" user. Giving them access to the "monitor" user is out of the question.
Try running script /dev/null
as the user you su
to before launching screen - its a ghetto little hack, but it should make screen happy.
I am using a wrapper function around screen
for the user(s) that I sudo su
to. This is the wrapper function that I've added to the user(s) ~/.bashrc
:
function screen() { /usr/bin/script -q -c "/usr/bin/screen ${*}" /dev/null }
This allows me to use all of the options and parameters for screen
that I might want to use. I am contemplating on putting this function systemwide.
Assuming they are SSHing into the host anyway, you could add the public ssh keys for each user that needs access to the monitor account in the ~monitor/.ssh/authorized_keys file. Then on each user's remote machine they can run
ssh -t [email protected] screen -RD