su - ejecuta un comando con un ID de usuario y grupo sustituto
SINOPSIS
su [opciones] [-] [usuario [argumento...]]
DESCRIPCIÓN
su permite ejecutar comandos con un ID de usuario y grupo sustituto.
Cuando se llama sin especificar un usuario, su ejecuta de forma predeterminada una shell interactiva como root. Cuando se especifica el usuario, se pueden proporcionar argumentos adicionales, en cuyo caso se pasan a la shell.
Para compatibilidad con versiones anteriores, su, de forma predeterminada, no cambia el directorio actual y solo establece las variables de entorno HOME y SHELL (además de USER y LOGNAME si el usuario de destino no es root). Se recomienda utilizar siempre la opción --login (en lugar de su abreviatura -) para evitar los efectos secundarios causados por la mezcla de entornos.
Esta versión de su utiliza PAM para la autenticación, la administración de cuentas y sesiones. Algunos opciones de configuración que se encuentran en otras implementaciones de su, como el soporte para un grupo "wheel", deben configurarse a través de PAM.
su está diseñado principalmente para usuarios no privilegiados; la solución recomendada para usuarios privilegiados
(por ejemplo, scripts ejecutados por root) es utilizar el comando runuser(1) que no establece el ID de usuario y que no
requiere autenticación y que proporciona una configuración PAM separada. Si no se requiere la sesión PAM, entonces la solución recomendada es utilizar el comando setpriv(1).
Tenga en cuenta que su, en todos los casos, utiliza PAM (pam_getenvlist(3)) para realizar la modificación final del entorno. Las opciones de línea de comandos, como --login y --preserve-environment, afectan al entorno antes de que PAM lo modifique.
Desde la versión 2.38, su restablece los límites de recursos del proceso RLIMIT_NICE, RLIMIT_RTPRIO, RLIMIT_FSIZE, RLIMIT_AS y RLIMIT_NOFILE.
OPCIONES
-c, --command comando
Pasa el comando a la shell con la opción -c.
-f, --fast
Pasa -f a la shell, lo que puede o no ser útil, según la shell.
-g, --group grupo
Especifica el grupo primario. Esta opción solo está disponible para el usuario root.
-G, --supp-group grupo
Especifica un grupo secundario. Esta opción solo está disponible para el usuario root. El primer grupo secundario especificado también se utiliza como grupo primario si no se especifica la opción --group.
-, -l, --login
Inicia la shell como una shell de inicio de sesión con un entorno similar a un inicio de sesión real.
Tenga en cuenta que, en los sistemas basados en systemd, se puede definir una nueva sesión como un punto de entrada real al sistema. Sin embargo, su no crea una sesión real (a través de PAM) desde este punto de vista. Debe utilizar herramientas como systemd-run o machinectl para iniciar una sesión completa y real.
su hace lo siguiente:
borra todas las variables de entorno, excepto TERM y las variables especificadas por
--whitelist-environment
inicializa las variables de entorno HOME, SHELL, USER, LOGNAME y PATH
modificaciones en el directorio de inicio del usuario de destino
establece argv[0] del shell en '-' para que el shell sea un shell de inicio de sesión
-m, -p, --preserve-environment
Conserva todo el entorno, es decir, no establece HOME, SHELL, USER o LOGNAME. Esta opción se ignora si se especifica la opción --login.
-P, --pty
Crea un pseudo-terminal para la sesión. El terminal independiente proporciona una mejor seguridad, ya que el usuario no comparte un terminal con la sesión original. Esto se puede utilizar para evitar la inyección de terminales mediante el ioctl TIOCSTI y otros ataques de seguridad contra los descriptores de archivos de terminal. Toda la sesión también se puede mover al fondo (por ejemplo, su --pty - usuario -c aplicación &). Si el pseudo-terminal está habilitado, su funciona como un proxy entre las sesiones (sincroniza stdin y stdout).
Esta función está diseñada principalmente para sesiones interactivas. Si la entrada estándar no es un terminal, sino, por ejemplo, una tubería (por ejemplo, echo "date" | su --pty), entonces la bandera ECHO para el pseudo-terminal se deshabilita para evitar una salida confusa.
-s, --shell shell
Ejecuta el shell especificado en lugar del predeterminado. Si el usuario de destino tiene un shell restringido (es decir, no está en la lista de /etc/shells), la opción --shell y la variable de entorno SHELL se ignoran a menos que el usuario que llama sea root.
El shell que se va a ejecutar se selecciona de acuerdo con las siguientes reglas, en orden:
el shell especificado con --shell
el shell especificado en la variable de entorno SHELL, si se utiliza la opción --preserve-environment
el shell que se muestra en la entrada de passwd del usuario de destino
/bin/sh
--session-command=command
Igual que -c, pero no crea una nueva sesión. (No recomendado).
-T, --no-pty
No cree un pseudo-terminal, lo contrario de --pty y -P. Tenga en cuenta que ejecutar sin un pseudo-terminal abre el riesgo de seguridad de la elevación de privilegios a través de la inyección de comandos ioctl TIOCSTI/TIOCLINUX.
-w, --whitelist-environment list
No restablezca las variables de entorno especificadas en la lista separada por comas al limpiar el entorno para --login. La lista blanca se ignora para las variables de entorno HOME, SHELL, USER, LOGNAME y PATH.
-h, --help
Muestra el texto de ayuda y sale.
-V, --version
Muestra la versión y sale.
SEÑALES
Al recibir SIGINT, SIGQUIT o SIGTERM, su termina su proceso hijo y, posteriormente, termina a sí mismo con la señal recibida. El proceso hijo se termina con SIGTERM, después de un intento fallido y un retraso de 2 segundos, el proceso hijo se termina con SIGKILL.
ARCHIVOS DE CONFIGURACIÓN
su lee los archivos de configuración /etc/default/su y /etc/login.defs. Los siguientes elementos de configuración son relevantes para su:
FAIL_DELAY (número)
Retraso en segundos en caso de un fallo de autenticación. El número debe ser un entero no negativo.
ENV_PATH (cadena)
Define la variable de entorno PATH para un usuario normal. El valor predeterminado es /usr/local/bin:/bin:/usr/bin.
ENV_ROOTPATH (cadena), ENV_SUPATH (cadena)
Define la variable de entorno PATH para root. ENV_SUPATH tiene prioridad. El valor predeterminado es /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin.
ALWAYS_SET_PATH (booleano)
Si se establece en sí y no se especificaron las opciones --login y --preserve-environment, su inicializa PATH.
La variable de entorno PATH puede ser diferente en los sistemas donde /bin y /sbin se combinan en /usr; esta variable también se ve afectada por la opción de línea de comandos --login y la configuración del sistema PAM (por ejemplo, pam_env(8)).
ESTADO DE SALIDA
su normalmente devuelve el estado de salida del comando que ejecutó. Si el comando fue interrumpido por una señal, su devuelve el número de la señal más 128.
Estado de salida generado por el propio su:
1 Error genérico antes de ejecutar el comando solicitado
126 El comando solicitado no se pudo ejecutar
127 El comando solicitado no se encontró
ARCHIVOS
/etc/pam.d/su
archivo de configuración PAM predeterminado
/etc/pam.d/su-l
archivo de configuración PAM si se especifica --login
/etc/default/su
archivo de configuración específico del comando logindef
/etc/login.defs
archivo de configuración logindef global
NOTAS
Por razones de seguridad, su siempre registra los intentos de inicio de sesión fallidos en el archivo btmp, pero no escribe en el archivo lastlog. Esta solución se puede utilizar para controlar el comportamiento de su mediante la configuración de PAM. Si desea utilizar el módulo pam_lastlog(8) para imprimir un mensaje de advertencia sobre los intentos de inicio de sesión fallidos, pam_lastlog(8) debe configurarse para actualizar también el archivo lastlog. Por ejemplo, mediante:
session required pam_lastlog.so nowtmp
HISTORIA
Este comando su se derivó de su de coreutils, que se basó en una implementación de David MacKenzie. La versión de util-linux ha sido refactorizada por Karel Zak.
VER TAMBIÉN
setpriv(1), login.defs(5), shells(5), pam(8), runuser(1)
INFORMES DE ERRORES
Para informar sobre errores, utilice el rastreador de problemas [https://github.com/util-linux/util-linux/issues].
DISPONIBILIDAD
El comando su forma parte del paquete util-linux que se puede descargar del Archivo de kernel de Linux [https://www.kernel.org/pub/linux/utils/util-linux/].