Para un usuario que puede ejecutar comandos arbitrarios con sudo
, cambiar las variables de entorno no es un problema de seguridad directo. Si lo desea, puede ejecutar tmp=$(mktemp); export >$tmp; sudo bash -c ". $tmp; exec bash"
; en otras palabras, guardar el entorno y restaurarlo dentro del shell raíz.
Como observas, un troyano en un archivo de configuración no es una preocupación, ya que el troyano podría colocar un envoltorio alrededor de sudo
de todos modos (y agarrar tu contraseña mientras está en eso).
El tema ha aparecido varias veces en las listas de correo de Ubuntu ( 1 2 ). Ubuntu no reinicia HOME
. Los argumentos de David Mandelberg cubren la mayor parte del caso para restablecer HOME
.
El restablecimiento de HOME
protege contra la explotación de los errores que pueda cometer. Por ejemplo, uno de sus archivos de configuración podría contener una vulnerabilidad de archivo temporal que podría ser explotada para obtener acceso a la cuenta raíz. Este ejemplo es, como antes, no es realmente una preocupación, ya que la vulnerabilidad podría afectar a su cuenta primero y luego conectarse a su llamada de sudo
.
El restablecimiento de HOME
también protege contra los errores que pueda cometer, y es aquí donde el caso tiene un punto, pero no muy convincente.
- Hay una vista extrema que dice que debes mantener la configuración predeterminada como root. De esta manera, cualquier cosa que se haga como root se distingue fácilmente de lo que debe hacer en su propia cuenta personalizada, por lo que no olvidará que está actuando como root. También hacer cosas como root es doloroso, por lo que está incitado a usar la cuenta de root lo menos posible. No compro esto: hacer las cosas "de la manera más difícil" en lugar de la forma en que uno se siente cómodo hace que sea más probable que cometa errores, no menos. Normalmente es bastante fácil saber si estás actuando como root: si estás editando un archivo en
/etc
, eres root¹. Si está ejecutando un shell y el indicador finaliza con #
en lugar de $
o %
(siguiendo la convención habitual), es root, y puede usar elementos como los colores para hacer que la distinción sea más visible. Si está ejecutando un programa de administración de paquetes, es root.
- Por error, puede dejar un archivo confidencial en una ubicación legible públicamente en su directorio personal, creyendo que está en
/root
. O podría dejarlo en /tmp
... Este argumento me parece muy descabellado. Claro, es un error que podrías cometer, pero no es más probable que, por ejemplo, agregar una regla de firewall que deja todo abierto, o hacer que /bin/*
sea escribible en todo el mundo.
- Uno de sus archivos de configuración puede causar que aparezca información confidencial en su directorio de inicio. Esto es plausible, podría ser un archivo histórico o un archivo de guardado automático, pero estos archivos probablemente se encuentren en una ubicación privada de todos modos, de lo contrario la gente podría espiarte.
- Las aplicaciones que guardan automáticamente su configuración pueden escribir en su directorio de inicio. Esto no es tanto un problema de seguridad como una cuestión de conveniencia para usted, y está más que compensado por la conveniencia de tener su configuración habitual cuando actúa como root.
- Es posible que edite erróneamente los archivos en
~
, pensando que este es el directorio de inicio de root cuando en realidad es su directorio de inicio. Sí, pero si $HOME
es su directorio de inicio, también tendrá su configuración habitual, por lo que es menos probable que piense que se está ejecutando como usuario root y es más probable que piense que está ejecutando en Un modo privilegiado. Este argumento es elevado por su propio petardo.
Scott James Remnant lo expresó de esta manera:
"sudo -s" es para personas perezosas que no desean duplicar archivos de configuración, "sudo -i" es para personas olvidadas.
Pero sudo -i
(ejecutar una shell raíz) parece ser una mala idea para las personas olvidadas. Y duplicar los archivos de configuración como root solo es posible en una máquina de un solo usuario, en cuyo caso la ejecución como root no es tan importante en primer lugar.
Conclusión: no, no hay ningún problema de seguridad grave, y el caso para restablecer HOME
es bastante débil. El propósito de always_set_home
es protegerte contra ti mismo, pero protege tan poco que no vale la pena.
¹ Excepto que no debe ejecutar un editor como root: use el método sudoedit
o Emacs (Tramp) sudo
para ejecutar el editor como su usuario normal.