Como alternativa a sux
, para ejecutar de forma segura el comando gráfico ( firefox-esr
en el ejemplo a continuación) como $AUTHUSER
( guest
en el ejemplo a continuación):
AUTHUSER=guest
AUTHSTRING=SI:localuser:${AUTHUSER}
xhost +${AUTHSTRING} > /dev/null
SUDO_ASKPASS=/usr/bin/ssh-askpass
export SUDO_ASKPASS
sudo -k --askpass -u ${AUTHUSER} /usr/bin/firefox-esr
xhost -${AUTHSTRING} > /dev/null
sudo -K
el código hace:
- le da
guest
acceso al usuario a su usuario actual$DISPLAY
través dexhost +SI:localuser:guest
- utiliza
ssh-askpass
para solicitarle una contraseña gráficamente (por supuesto, puede usar sudoers(5)
NOPASSWD:
para evitar esto, si su política de seguridad cree que está bien. O puede usar otros askpass
programas o especificarlos en los archivos de configuración (consulte sudo(8)
para obtener más detalles --askpass
)
- si la contraseña está bien (y tiene permisos
sudoers(5)
), ejecuta el comando /usr/bin/firefox-esr
como otro usuario ( guest
)
- una vez que se completa el programa, se revocan los permisos para que otro usuario (
guest
) acceda a su$DISPLAY
xhost -SI:localuser:guest
finalmente, sudo -K
elimina la contraseña en caché, por lo que la próxima invocación de ssh-askpass
le pedirá la contraseña nuevamente (en lugar de usar la contraseña en caché)
mientras que es poco más trabajo de lo que gksu(8)
o sux(8)
lo hizo, que puede ser escrito, y es mucho más seguro que:
xhost +
(cualquier usuario tendrá acceso a su pantalla gráfica mientras esté vigente)
- legible ~ / .xauth por otros usuarios (acceso indefinido de ese usuario a su pantalla)
- what
gksu
/ sux
did (copia temporal de ~/.Xauthority
, que permitió al usuario especificado copiar su MIT-MAGIC-COOKIE-1
y continuar usando su pantalla incluso después de que gksu / sux finalizó (siempre que no apague la máquina o cierre la sesión de la pantalla - los protectores de pantalla, hibernación, etc. no cambiaron la magia Galleta).
ya que solo permitirá el acceso de un usuario local a su pantalla, y luego solo mientras se ejecute el comando (cuando finalice el comando, $AUTHUSER
ya no podrá acceder a su pantalla de ninguna manera).
Otra alternativa segura es ssh -X
(sin -Y
que en realidad hace que sea menos seguro! Ver ForwardX11Trusted
en ssh_config(5)
los detalles), ya que es más fácil de usar si usted no está de secuencias de comandos, pero induce sobrecarga additinal (por ejemplo., Es más lento) y algunos programas podría no funcionar correctamente sin insegura -Y
.
$XAUTHORITY
todavía está configurado en user1~/.Xauthority
, que el programa, supongo, intentará leer, y falla porque ese archivo generalmente tiene el modo 0600 (-rw-------
), lo que significa que no está disponible para leer por cualquier persona del grupo "otro", que incluye user2. Es decir, si ustedchmod o+r ~/.Xauthority
(como usuario1), habrá solucionado este problema. Escribí un guión que demuestra esto.