Sudo as different user and running screen
Solution 1:
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.
Solution 2:
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.
Solution 3:
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
Solution 4:
Assuming we're talking about this error:
$ sudo su - bob
$ screen
Cannot open your terminal '/dev/pts/5' - please check.
Here's a one-liner (could be used as "alias gobob", for example):
sudo su - bob -c "script -c bash /dev/null"'
Explanation:
This will start a shell (like login shell) as user bob. User bob starts script
, which is told to invoke a bash (could be dash or ksh...) and a copy of the session is thrown away.