¡Descubrí hoy que correr la pantalla como un usuario diferente en el que sudo no funcionará!
es decir
ssh bob@server         # ssh into server as bob
sudo su "monitor" -
screen                 # fails: Cannot open your terminal '/dev/pts/0'
Tengo un script que se ejecuta como el usuario "monitor". Lo ejecutamos en una sesión de pantalla para ver el resultado en la pantalla. El problema es que tenemos un número de usuarios que inician sesión con su propia cuenta (es decir, bob, james, susie, etc.) y luego ingresan al usuario "monitor". Darles acceso al usuario "monitor" está fuera de discusión.
                    
                        sudo
                                gnu-screen
                                
                    
                    
                        Luckytaxi
fuente
                
                fuente

sudo su "user" -. ¿Por qué no usarsudo -u user -s?sudo su, creo que es justo a lo que la gente se acostumbra (en mi caso es porque no necesitas saber ninguna bandera de sudosudo su, no creo que haya leído la página de manual de sudo :)Respuestas:
Intente correr
script /dev/nullcomo el usuario quesudesea antes de iniciar la pantalla: es un pequeño truco de ghetto, pero debería alegrar la pantalla.fuente
scriptse puede usar para iniciarscreen. Entonces solo tiene que salir dos veces (una vezscreen, una vezsu). (Esto es algo que lascriptpágina del manual puede aclararle, si se toma el tiempo de leerlo ...)sudo -u bob script -q -c 'screen -dr myscreen' /dev/null. Entonces solo tiene una terminal para salir / desconectarse.scriptabre su propio dispositivo tty, propiedad del usuario que lo ejecutó (mire/devy verá que aparece después de ejecutarscript).screenluego toma ese dispositivo tty (que es propiedad del usuario que ejecutascreenpara que no tenga problemas para acceder a él). Es un trabajo de pirateo total, pero funciona. Al observar algunas de mis máquinas, parece que las nuevas versiones de pantalla parecen instalar setuid-root, que también funciona, pero significa que tiene otro binario setuid-root flotando, lo que hace que algunas personas se sientan incómodas.Estoy usando una función de contenedor
screenpara los usuarios que debo usarsudo su. Esta es la función de contenedor que he agregado a los usuarios~/.bashrc:pantalla de función () { / usr / bin / script -q -c "/ usr / bin / screen $ {*}" / dev / null }Esto me permite usar todas las opciones y parámetros para los
screenque me gustaría usar. Estoy pensando en poner esta función en todo el sistema.fuente
Suponiendo que de todos modos están SSHing en el host, puede agregar las claves ssh públicas para cada usuario que necesite acceso a la cuenta del monitor en el archivo ~ monitor / .ssh / Authorizedkeys. Luego, en la máquina remota de cada usuario, pueden ejecutar
fuente
Suponiendo que estemos hablando de este error:
Aquí hay una frase (podría usarse como "alias gobob", por ejemplo):
Explicación:
Esto iniciará un shell (como el shell de inicio de sesión) como usuario bob. Se inicia el usuario bob
script, que le dice que invoque un bash (podría ser guión o ksh ...) y se tira una copia de la sesión.fuente
Probablemente tendría que cambiar los permisos en el dispositivo en cuestión o agregar un monitor a un grupo que tenga permiso para leer ese dispositivo, esa sería mi primera inclinación. Pero tendría que sopesar las implicaciones de seguridad de hacerlo.
fuente
Dices que lo haces:
Me pregunto sobre el guión final. Yo suelo hacer:
El guión (según la página de manual de su) le dice a su que "convierta el shell en un shell de inicio de sesión". Esto significa que obtendrá todos los scripts de inicio de shell habituales y establecerá cosas como PATH y HOME correctamente.
fuente
sudo su - usernameysudo su username -hacer lo mismoAcabo de golpear este problema. Lo resolvió
chmod +rw $(tty)antes de ejecutar sudo. El problema con esta solución es que cualquiera puede conectarse y espiar en su terminal después de eso.fuente
gpgpor ejemplo). Y seguramente nunca estará en un sistema con usuarios malintencionados quetty