Como alternativa a sux, para ejecutar de forma segura el comando gráfico ( firefox-esren el ejemplo a continuación) como $AUTHUSER( guesten 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
guestacceso al usuario a su usuario actual$DISPLAY través dexhost +SI:localuser:guest
- utiliza
ssh-askpasspara 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 askpassprogramas 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-esrcomo otro usuario ( guest)
- una vez que se completa el programa, se revocan los permisos para que otro usuario (
guest) acceda a su$DISPLAYxhost -SI:localuser:guest
finalmente, sudo -Kelimina la contraseña en caché, por lo que la próxima invocación de ssh-askpassle 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/ suxdid (copia temporal de ~/.Xauthority, que permitió al usuario especificado copiar su MIT-MAGIC-COOKIE-1y 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, $AUTHUSERya no podrá acceder a su pantalla de ninguna manera).
Otra alternativa segura es ssh -X(sin -Yque en realidad hace que sea menos seguro! Ver ForwardX11Trusteden 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 .
$XAUTHORITYtodaví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.