¡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/null
como el usuario quesu
desea antes de iniciar la pantalla: es un pequeño truco de ghetto, pero debería alegrar la pantalla.fuente
script
se puede usar para iniciarscreen
. Entonces solo tiene que salir dos veces (una vezscreen
, una vezsu
). (Esto es algo que lascript
pá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.script
abre su propio dispositivo tty, propiedad del usuario que lo ejecutó (mire/dev
y verá que aparece después de ejecutarscript
).screen
luego toma ese dispositivo tty (que es propiedad del usuario que ejecutascreen
para 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
screen
para los usuarios que debo usarsudo su
. Esta es la función de contenedor que he agregado a los usuarios~/.bashrc
:Esto me permite usar todas las opciones y parámetros para los
screen
que 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 - username
ysudo 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
gpg
por ejemplo). Y seguramente nunca estará en un sistema con usuarios malintencionados quetty