Realizar tareas de administrador usando sudo
Como realizar tareas requiriendo privilegios root sin acceder como root.
¿Qué es sudo?
El comando sudo permite a los usuarios obtener acceso administrativo o root. Cuando los usuarios de confianza preceden un comando administrativo con sudo, se les solicita su contraseña. Una vez autenticados y suponiendo que el comando esté permitido, este se ejecuta como si fueran el usuario root.
Solo los usuarios listados en el archivo de configuración /etc/sudoers están concedidos para utilizar el comando sudo. El comando es ejecutado en el intérprete del usuario, no en un intérprete perteneciente a root.
La sintaxis para el comando sudo es como sigue:
sudo COMANDO
Sustituya COMANDO con el comando a ejecutar como el usuario raíz.
Como utilizar sudo
Utilizar sudo para asignar privilegios de administrador
Agregue usuarios al archivo de configuración /etc/sudoers para permitirles usar la instrucción sudo. Para estos usuarios, la instrucción sudo se ejecuta en su intérprete (shell), en lugar de en el intérprete de root. Por lo tanto, se puede inhabilitar el intérprete root para mayor seguridad.
El administrador también puede permitir que diferentes usuarios accedan a instrucciones específicas mediante la configuración de sudo. Los administradores deben usar la instrucción visudo para editar el archivo de configuración /etc/sudoers.
Para asignar privilegios administrativos completos a un usuario, teclea visudo y añade la línea siguiente para la sección de privilegios del usuario tras remplazar USERNAME por el destino del nombre de usuario:
USERNAME ALL=(ALL) ALL
Esta línea concede al usuario especificado utilizar sudo desde cualquier huésped (host) y ejecutar cualquier instrucción.
Para conceder a un usuario el acceso a comandos específicos, utiliza el ejemplo siguiente tras sustituir USERS por un grupo destino del sistema:
%USERS localhost=/usr/sbin/shutdown -h now
Esta instrucción concede a todos los miembros del grupo USERS del sistema emitir /sbin/shutdown -h siempre que la instrucción es emitida desde la consola.
La página man para sudoers tiene un listado detallado de opciones para este archivo.
Utilizar la misma contraseña para root como la cuenta de usuario
Si emplea un escritorio de usuario único, quizá encuentre conveniente configurar sudo, tal que puede utilizar la misma contraseña para acceder a root como su utiliza su cuenta usual. Para hacer esto, seleccione para ser añadido al grupo Administración durante la instalación. Para hacerlo más tarde, o para añadir un usuario diferente, emplee el siguiente procedimiento:
-
Convertirse en usuario root:
$ su -
-
Introduzca la contraseña para la cuenta root cuando se solicite.
-
Para utilizar tu contraseña usual para el acceso a root, ejecute:
# usermod NOMBRE DE USUARIO -a -G nombre-de-grupo
Sustituye
USERNAMEcon tu nombre de la cuenta -
Log off and back on in order to have access to the group.
When sudo prompts you for a password, it expects your user password, not the root password.
|
Logging sudo commands
Each successful authentication using the sudo command is logged to the /var/log/messages file. For each authentication, the /var/log/secure file lists the user name and the command that was executed.
For additional logging, use the pam_tty_audit module to enable TTY auditing for specific users. TTY auditing prints the file name of the terminal connected to the standard I/O. To enable TTY auditing, add the following line to your /etc/pam.d/system-auth file:
session required pam_tty_audit.so disable=pattern enable=PATTERN
Replace PATTERN with a comma-separated list of users (and globs, if needed).
For example, the following command enables TTY auditing for the root user and disables it for all other users:
session required pam_tty_audit.so disable=* enable=root
Using the pam_tty_audit PAM module for auditing only records TTY input. As a result, when the audited user logs in, pam_tty_audit records the user’s exact keystrokes and saves them in /var/log/audit/audit.log. For more information, see the pam_tty_audit(8) manual page.
Advertencias y salvedades
Debe utilizar la cuenta de usuario creada seguido del proceso de instalación, en el primer arranque, para empleo diario y la cuanta root solo para administración del sistema. Evite utilizar root para cualquier empleo distinto de la administración, ya que la cuanta lo hace fácil arriesgarse a la seguridad o los datos.
Hay varios riesgos potenciales para mantener en mente cuando utilicen el comando sudo. Puede evitarlos editando el archivo de configuración de /etc/sudoers utilizando el comando visudo.
sudo timeout
By default, sudo stores the password for a five minute timeout period. Any subsequent uses of the command during this period will not prompt you for a password. This could be exploited by an attacker if you leave your workstation unattended and unlocked while still being logged in. You can change this behavior by adding the following line to the /etc/sudoers configuration file:
Defaults timestamp_timeout=VALUE
Here, VALUE is the desired timeout length in minutes. Setting the value to 0 causes sudo to require a password every time.
If an account is compromised, an attacker can use sudo to open a new shell with administrative privileges.
Opening a new shell as a root user in this way allows an attacker administrative access for a theoretically unlimited period of time and bypasses the timeout period specified in the /etc/sudoers file. Using this method, the attacker does not need to provide a password for sudo again until the session ends.
Using sudo to access Docker
Docker has the ability to change the group ownership of the Docker socket to allow users added to the Docker group to be able to run Docker containers without having to execute the sudo or su command to become root.
Enabling access to the Docker daemon from non-root users is a problem from a security perspective. It is a security issue for Fedora, because if a user can talk to the Docker socket they can execute a command which gives them full root access to the host system. Docker has no auditing or logging built in, while sudo does.
It is recommended that sudo rules are implemented to permit access to the Docker daemon. This allows sudo to provide logging and audit functionality.
Run Docker using sudo
-
Set up
sudoas shown in Using sudo to assign administrator privileges. -
Create an alias for running the docker command by adding the following line to your
~/.bashrcfile:alias docker="sudo /usr/bin/docker"
When the user executes the docker command as non-root, sudo will be used to manage access and provide logging.
Using sudo without a password
You can enable root access without a password specified, allowing any process on your system to become root. Add the following line to your /etc/sudoers file:
user ALL=(ALL) NOPASSWD: /usr/bin/docker
This will allow user to access docker without a password.
For security reasons, it is recommended that you always use sudo with a password.
|
Want to help? Learn how to contribute to Fedora Docs ›