la guía completa para el Archivo Maestro Sudoers.
¿Qué es el Archivo Sudoers?
el archivo Sudoers es como cualquier otro archivo en el sistema operativo Linux., Pero juega un papel vital en la gestión de lo que un «usuario» o «usuarios en un grupo» puede hacer en el sistema.
¿por qué el nombre Sudoers?
la palabra Sudo es la abreviatura del término «Super User Do». Como sugiere claramente, es como decirle al Kernel / OS: «¡no tienes elección, solo hazlo!”. Así que los usuarios con permiso Sudo son llamados como usuarios Sudo. La gestión de todos estos usuarios de sudo se realiza a través de un archivo llamado archivo Sudoers. Este archivo también vive en el directorio / etc como cualquier otro archivo de configuración.,
¿por qué el archivo Sudoers?
un usuario normal en Linux tendrá muchas restricciones en el sistema. Por ejemplo, el Usuario no podrá iniciar un servicio, cambiar un archivo de configuración o ejecutar un script en el sistema de forma predeterminada. Desde una perspectiva de seguridad, esto se ve perfecto.,
pero, tomemos un ejemplo de-usted como administrador del sistema tiene que administrar todos los usuarios y sus controles. Tiene un sitio web alojado en Apache en uno de sus servidores. Ya tiene un administrador Web para administrarlo. Se debe crear un usuario para él en el servidor Web. Este usuario debe poder hacer dos cosas que un usuario normal no puede hacer:
- iniciar / reiniciar el servicio Apache en caso de que se detenga.
- Editar el archivo de configuración de Apache.
tiene dos opciones de usuario por defecto:
- usuario Root que tiene todos los permisos en el sistema incluyendo Apache.,
- Un usuario normal, que por defecto no podrá iniciar un servicio o editar ningún archivo de configuración en el sistema.
Aquí es cuando un archivo sudoers le será útil. En el archivo Sudoers podemos definir exactamente:
- El Usuario Administrador Web solo puede iniciar el servicio Apache &
- solo puede editar el archivo de configuración de Apache.
jugando con el archivo Sudoers
suficiente teoría, vamos a empezar a hacer las cosas reales ahora. Explicaré cada sección en el archivo Sudoers con algunos ejemplos., De forma predeterminada, un archivo Sudoers se ve como este:
principalmente podemos ver cinco secciones en el Archivo — las tres primeras secciones en el archivo están relacionadas con ALIAS de Host, Usuario y Cmnd., Hablaremos de ALIAS más tarde, primero hablemos de la sección principal :
# Especificación de privilegios de usuario
root ALL = (ALL:ALL) ALL
NOTA: ‘#’ indica comentario en el archivo, el sistema operativo ignorará esta línea mientras se ejecuta.,
sintaxis : User <space> OnHost = (Runas-User:Group) <space> comandos
ejemplo: root All = (All:All) All
read it as — user root puede ejecutar cualquier comando como cualquier usuario de cualquier grupo en cualquier host.
→ el primer todo se usa para definir HOSTS. Podemos definir Hostname / Ip-Address en lugar de ALL. Todo significa cualquier anfitrión.
→ segundo todo: tercero todo es usuario: grupo., En lugar de todo podemos definir usuario o usuario con el grupo como usuario: grupo. TODOS: Todos significa todos los usuarios y todos los grupos.
→ Last ALL es el comando. En lugar de todos, podemos definir un comando o conjunto de comandos. Todo significa todas las órdenes.
para ponerlo muy simple, Es «who where = (as_whom) what».
Nota: La mayoría de las personas entienden los HOSTS como HOSTS remotos. Es el nombre de host LOCAL / dirección IP., El campo HOSTS rara vez se usará, si desea saber más sobre los HOSTS en Sudoers, consulte → https://www.sudo.ws/man/1.7.10/sudoers.man.html
Básicamente podemos permitir que un usuario haga algo de solo dos maneras:
- darle directamente el permiso para ejecutar el comando modificando el permiso del archivo.
- Le permite ejecutar el comando como otro usuario que ya tiene el permiso para ejecutar este comando.
en el archivo Sudoers estaremos implementando este último.,
usaremos otro ejemplo para entender claramente los campos de la sintaxis:
Ejemplo : sysadmin ALL = (root)/usr/bin /cat/etc/shadow
lea esto como usuario «sysadmin» puede ejecutar el comando «/usr/bin /cat/etc / shadow» como usuario ROOT en todos los HOSTS.
aquí en el ejemplo anterior, en la sección de comandos-he añadido algo más que un comando, esto es para mostrar la flexibilidad del archivo Sudoers. La parte «/ usr / bin / cat » es un ejecutable binario o comando utilizado para ver el contenido de un archivo., La parte » /etc / shadow «es un archivo confidencial que almacena contraseñas, por lo que significa que el usuario» sysadmin «solo puede ejecutar» /usr/bin/cat «en el archivo» /etc/shadow», si este usuario intenta ver el contenido de cualquier otro archivo en el que no tenga permisos de lectura, no podrá hacerlo.,
sintaxis de Sudo comando: sudo <comando>
Ejemplo: sudo cat /etc/shadow
ahora si el usuario «sysadmin» usa sudo antes que cualquier comando, os primero le preguntará la contraseña del usuario, verificará la contraseña y luego irá al archivo sudoers y comprobará si se le permite emitir este comando como cualquier usuario. Si se le permite-success, de lo contrario se informará de una de estas dos cosas —
→ El Usuario no está en el archivo Sudoers. Este incidente será reportado.,
Note : You can see this reported incident in /var/log/auth.log
→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>
Aquí, el usuario webadmin solo puede ejecutar»cat /etc/shadow». Pero intentó ejecutar el comando ‘ cat ‘ en «/ etc / gshadow», lo cual no está permitido.
como tenemos suficiente control sobre los campos en la sintaxis del archivo Sudoers, avancemos y entendamos otras secciones del archivo. Todas las demás secciones dependerán de la sección central que ya hemos discutido.,
la siguiente sección es la sección de grupo, que es
#permite a los miembros del grupo sudo ejecutar cualquier comando
%sudo ALL = (ALL:ALL) ALL
el símbolo de percentil ‘%’ se usa para representar un grupo en el archivo Sudoers. Todos los campos y sus funcionalidades en esta sección son exactamente los mismos que se discutieron en la sección anterior: la sección Usuario. Podemos asignar los mismos privilegios Sudo a un grupo en lugar de a un usuario especificando el nombre del grupo — %<nombre del grupo>., Así que todos los miembros del grupo heredarán los mismos privilegios dados al grupo.
por defecto existe un grupo SUDO definido en el archivo Sudoers. Podemos ver que estos permisos son exactamente los mismos que los permisos de usuario ROOT en el archivo. Así que si un usuario es miembro de este grupo SUDO, puede ejecutar todos los comandos que un usuario ROOT puede ejecutar.
definamos un grupo personalizado y entendamos la sintaxis más claramente. Tomemos el mismo viejo ejemplo de administrador del sistema para hacerlo. Asume el no. de los empleados son más ahora, por lo que los administradores del sistema son 3 ahora., Cada uno de ellos necesita los mismos permisos exactos que le habíamos dado al primer administrador del sistema. Una cosa que podemos hacer para lograr esto es tener tres entradas para los tres administradores del sistema en el archivo Sudoers. Si vamos con este enfoque, estamos insultando las capacidades de un archivo Sudoers.
lo mejor es agrupar a los tres administradores del sistema en un grupo llamado ‘SystemAdminGroup’., Vamos a definir los permisos requeridos en este grupo con –
%SystemAdminGroup ALL = (root) /usr/bin/cat /etc/shadow
ahora los tres administradores pueden ejecutar el comando privilegiado. Hicimos esto de una sola vez usando la definición de grupo.
el archivo Sudoers es capaz de hacer que todo este proceso sea más eficiente utilizando varias funcionalidades. Las tres primeras secciones — alias se utilizan para lograr esto., Como la palabra ya sugiere, usamos un ALIAS para algo que podemos usar en todo el archivo, es como una VARIABLE GLOBAL en un Script. ¿Cómo hace esto que todo sea más eficiente? Podemos definir conjunto de comandos, hosts y usuarios en una línea, asignamos esta línea a un nombre de ALIAS, este alias se utilizará cuando y donde sea necesario sin definir todos los comandos / hosts / usuarios de nuevo.
Quiero incluir un ALIAS más que no aparece en el archivo Sudoers por defecto que es «Run_as ALIAS»., Ahora tenemos cuatro alias —
- User ALIAS as User_Alias
- Run-as ALIAS as Runas_Alias
- Host ALIAS as Host_Alias
- Command ALIAS as Cmnd_Alias
Nota : El nombre del Alias debe definirse en mayúsculas y puede contener número, alfabeto y subrayado (_). El nombre de Alias debe comenzar con alphabet.,3e»>ALIAS Name> = <username>,<username>, <username>example
Ejemplo: user_alias sysadmins = John,Tim,Tom
uso: sysadmins all = (root) /usr/bin/cat /etc/shadow
Si quiero un conjunto de permisos sudo definidos para los usuarios — John, Tim y Tom, no necesito definirlo tres veces, en su lugar puedo definir un alias y usar este nombre de alias mientras delego el acceso sudo a ellos.,
Run As ALIAS Syntax —
Runas_Alias <ALIAS Name> =<username>,<username>,<username>…
Example: Runas_Alias MGRS = root,sradmin
Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow
If i want to define the set of users a user can run a command as, i can use Runas_Alias., No te confundas aquí, solo recuerda el mantra maestro-who where = (as_whom) what. Estamos usando un alias aquí para incluir no. de usuarios en el campo «as_whom».
Host alias Syntax –
Uso: systemadmin HOSTS = (root)/usr/bin /cat/etc/shadow
Si necesito definir un conjunto de nombres de host, direcciones ip o rango de direcciones ip en el que se permite a un usuario emitir los comandos privilegiados / Sudo, puedo lograr esto utilizando el alias de Host. Una vez más, esta parte pertenece al campo «dónde» en la frase maestra.