Búsqueda de sitios web

Administrar usuarios y grupos, permisos y atributos de archivos y habilitar el acceso sudo en cuentas - Parte 8


En agosto pasado, la Fundación Linux inició la certificación LFCS (Linux Foundation Certified Sysadmin), un nuevo programa cuyo propósito es permitir que personas de cualquier lugar y lugar realicen un examen para obtenga la certificación en soporte operativo básico a intermedio para sistemas Linux, que incluye soporte para sistemas y servicios en ejecución, junto con monitoreo y análisis generales, además de toma de decisiones inteligente para poder decidir cuándo es necesario escalar los problemas a equipos de soporte de nivel superior.

Eche un vistazo rápido al siguiente vídeo que describe una introducción al Programa de certificación de Linux Foundation.

Este artículo es la Parte 8 de una larga serie de 10 tutoriales. Aquí, en esta sección, lo guiaremos sobre cómo administrar los permisos de usuarios y grupos en el sistema Linux, que son necesarios para el examen de certificación LFCS.

Dado que Linux es un sistema operativo multiusuario (en el sentido de que permite que varios usuarios de diferentes computadoras o terminales accedan a un solo sistema), necesitará saber cómo realizar una gestión eficaz de los usuarios: cómo agregar, editar, suspender o eliminar. cuentas de usuario, además de otorgarles los permisos necesarios para realizar las tareas asignadas.

Agregar cuentas de usuario

Para agregar una nueva cuenta de usuario, puede ejecutar cualquiera de los dos comandos siguientes como root.

adduser [new_account]
useradd [new_account]

Cuando se agrega una nueva cuenta de usuario al sistema, se realizan las siguientes operaciones.

1. Se crea su directorio de inicio (/home/nombre de usuario de forma predeterminada).

2. Los siguientes archivos ocultos se copian en el directorio de inicio del usuario y se utilizarán para proporcionar variables de entorno para su sesión de usuario.

.bash_logout
.bash_profile
.bashrc

3. Se crea un spool de correo para el usuario en /var/spool/mail/nombre de usuario.

4. Se crea un grupo y se le asigna el mismo nombre que la nueva cuenta de usuario.

Comprender /etc/contraseña

La información completa de la cuenta se almacena en el archivo /etc/passwd. Este archivo contiene un registro por cuenta de usuario del sistema y tiene el siguiente formato (los campos están delimitados por dos puntos).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. Los campos [nombre de usuario] y [Comentario] se explican por sí solos.
  2. La x en el segundo campo indica que la cuenta está protegida por una contraseña oculta (en /etc/shadow), que es necesaria para iniciar sesión como [nombre de usuario] .
  3. Los campos [UID] y [GID] son números enteros que representan la identificación del usuario y la identificación del grupo principal al que pertenece [nombre de usuario], respectivamente. .
  4. El [directorio de inicio] indica la ruta absoluta al directorio de inicio de [nombre de usuario], y
  5. El [Shell predeterminado] es el shell que estará disponible para este usuario cuando inicie sesión en el sistema.
Entendiendo /etc/group

La información del grupo se almacena en el archivo /etc/group. Cada registro tiene el siguiente formato.

[Group name]:[Group password]:[GID]:[Group members]
  1. [Nombre del grupo] es el nombre del grupo.
  2. Una x en [Contraseña de grupo] indica que no se están utilizando contraseñas de grupo.
  3. [GID]: igual que en /etc/passwd.
  4. [Miembros del grupo]: una lista separada por comas de usuarios que son miembros de [nombre del grupo].

Después de agregar una cuenta, puede editar la siguiente información (por nombrar algunos campos) usando el comando usermod, cuya sintaxis básica de usermod es la siguiente.

usermod [options] [username]
Establecer la fecha de vencimiento de una cuenta

Utilice el indicador –expiredate seguido de una fecha en formato AAAA-MM-DD.

usermod --expiredate 2014-10-30 tecmint
Agregar el usuario a grupos suplementarios

Utilice las opciones combinadas -aG o –append –groups, seguidas de una lista de grupos separados por comas.

usermod --append --groups root,users tecmint
Cambiar la ubicación predeterminada del directorio de inicio del usuario

Utilice las opciones -d o –home, seguidas de la ruta absoluta al nuevo directorio de inicio.

usermod --home /tmp tecmint
Cambiar el shell que el usuario usará por defecto

Utilice –shell, seguido de la ruta al nuevo shell.

usermod --shell /bin/sh tecmint
Mostrar los grupos de los que es miembro un usuario
groups tecmint
id tecmint

Ahora ejecutemos todos los comandos anteriores de una sola vez.

usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

En el ejemplo anterior, estableceremos la fecha de vencimiento de la cuenta de usuario tecmint en el 30 de octubre de 2014. También agregaremos la cuenta al grupo root y de usuarios. Finalmente, estableceremos sh como su shell predeterminado y cambiaremos la ubicación del directorio de inicio a /tmp:

Lea también:

  1. 15 ejemplos de comandos useradd en Linux
  2. 15 ejemplos de comandos usermod en Linux

Para cuentas existentes, también podemos hacer lo siguiente.

Deshabilitar la cuenta bloqueando la contraseña

Utilice la opción -L (L mayúscula) o –lock para bloquear la contraseña de un usuario.

usermod --lock tecmint
Desbloquear contraseña de usuario

Utilice la opción –u o –unlock para desbloquear la contraseña de un usuario que estaba previamente bloqueada.

usermod --unlock tecmint

Crear un nuevo grupo para acceso de lectura y escritura a archivos a los que deben acceder varios usuarios

Ejecute la siguiente serie de comandos para lograr el objetivo.

groupadd common_group # Add a new group
chown :common_group common.txt # Change the group owner of common.txt to common_group
usermod -aG common_group user1 # Add user1 to common_group
usermod -aG common_group user2 # Add user2 to common_group
usermod -aG common_group user3 # Add user3 to common_group
Eliminar un grupo

Puede eliminar un grupo con el siguiente comando.

groupdel [group_name]

Si hay archivos propiedad de nombre_grupo, no se eliminarán, pero el propietario del grupo se establecerá en el GID del grupo que se eliminó.

Permisos de archivos de Linux

Además de los permisos básicos de lectura, escritura y ejecución que analizamos en Herramientas de archivo y configuración de atributos de archivos, parte 3 de esta serie, existen otras configuraciones de permisos menos utilizadas (pero no menos importantes), a veces denominadas “especiales”. permisos”.

Al igual que los permisos básicos comentados anteriormente, se configuran mediante un archivo octal o mediante una letra (notación simbólica) que indica el tipo de permiso.

Eliminar cuentas de usuario

Puede eliminar una cuenta (junto con su directorio de inicio, si es propiedad del usuario, y todos los archivos que residen en ella, y también el spool de correo) usando el comando userdel con el comando –remove. opción .

userdel --remove [username]

Manejo de grupo

Cada vez que se agrega una nueva cuenta de usuario al sistema, se crea un grupo con el mismo nombre con el nombre de usuario como único miembro. Se pueden agregar otros usuarios al grupo más tarde. Uno de los propósitos de los grupos es implementar un control de acceso simple a archivos y otros recursos del sistema estableciendo los permisos correctos en esos recursos.

Por ejemplo, supongamos que tiene los siguientes usuarios.

  1. usuario1 (grupo principal: usuario1)
  2. usuario2 (grupo principal: usuario2)
  3. usuario3 (grupo principal: usuario3)

Todos ellos necesitan acceso de lectura y escritura a un archivo llamado common.txt ubicado en algún lugar de su sistema local, o tal vez en un recurso compartido de red que usuario1 ha creado. Es posible que tengas la tentación de hacer algo como,

chmod 660 common.txt
OR
chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

Sin embargo, esto sólo proporcionará acceso de lectura y escritura al propietario del archivo y a aquellos usuarios que sean miembros del grupo propietario del archivo (usuario1 en este caso). Nuevamente, puede tener la tentación de agregar usuario2 y usuario3 al grupo usuario1, pero eso también les dará acceso al resto de los archivos de su propiedad. por usuario usuario1 y grupo usuario1.

Aquí es donde los grupos resultan útiles y esto es lo que debe hacer en un caso como este.

Entendiendo a Setuid

Cuando el permiso setuid se aplica a un archivo ejecutable, un usuario que ejecuta el programa hereda los privilegios efectivos del propietario del programa. Dado que este enfoque puede plantear razonablemente problemas de seguridad, la cantidad de archivos con permiso setuid debe mantenerse al mínimo. Probablemente encontrará programas con este permiso establecido cuando un usuario del sistema necesite acceder a un archivo propiedad de root.

En resumen, no se trata sólo de que el usuario pueda ejecutar el archivo binario, sino que también puede hacerlo con privilegios de root. Por ejemplo, verifiquemos los permisos de /bin/passwd. Este binario se utiliza para cambiar la contraseña de una cuenta y modifica el archivo /etc/shadow. El superusuario puede cambiar la contraseña de cualquier persona, pero todos los demás usuarios sólo deberían poder cambiar la suya propia.

Por lo tanto, cualquier usuario debería tener permiso para ejecutar /bin/passwd, pero sólo el root podrá especificar una cuenta. El resto de usuarios sólo podrán cambiar sus correspondientes contraseñas.

Entendiendo Setgid

Cuando se establece el bit setgid, el GID efectivo del usuario real se convierte en el del propietario del grupo. Así, cualquier usuario puede acceder a un archivo con los privilegios otorgados al grupo propietario de dicho archivo. Además, cuando el bit setgid se establece en un directorio, los archivos recién creados heredan el mismo grupo que el directorio y los subdirectorios recién creados también heredarán el bit setgid del directorio principal. Lo más probable es que utilice este enfoque siempre que los miembros de un determinado grupo necesiten acceso a todos los archivos de un directorio, independientemente del grupo principal del propietario del archivo.

chmod g+s [filename]

Para configurar setgid en formato octal, anteponga el número 2 a los permisos básicos actuales (o deseados).

chmod 2755 [directory]
Configurar el SETGID en un directorio

Entendiendo el bit pegajoso

Cuando el “bit adhesivo” está configurado en archivos, Linux simplemente lo ignora, mientras que para los directorios tiene el efecto de evitar que los usuarios eliminen o incluso cambien el nombre de los archivos que contiene a menos que el usuario sea propietario del directorio, el archivo, o es root.

chmod o+t [directory]

Para configurar el bit adhesivo en formato octal, anteponga el número 1 a los permisos básicos actuales (o deseados).

chmod 1755 [directory]

Sin el bit adhesivo, cualquiera que pueda escribir en el directorio puede eliminar o cambiar el nombre de los archivos. Por esa razón, el bit adhesivo se encuentra comúnmente en directorios, como /tmp, en los que se puede escribir en todo el mundo.

Atributos especiales de archivos de Linux

Hay otros atributos que permiten límites adicionales a las operaciones permitidas en los archivos. Por ejemplo, evite que se cambie el nombre del archivo, se mueva, se elimine o incluso se modifique. Se configuran con el comando chattr y se pueden ver usando la herramienta lsattr, de la siguiente manera.

chattr +i file1
chattr +a file2

Después de ejecutar esos dos comandos, archivo1 será inmutable (lo que significa que no se puede mover, renombrar, modificar ni eliminar) mientras que archivo2 entrará en modo de solo agregar (solo se puede abrir en modo anexar para escribir).

Accediendo a la cuenta raíz y usando sudo

Una de las formas en que los usuarios pueden obtener acceso a la cuenta raíz es escribiendo.

su

y luego ingresando la contraseña de root.

Si la autenticación se realiza correctamente, iniciará sesión como root con el directorio de trabajo actual igual que antes. Si desea que lo coloquen en el directorio de inicio de root, ejecute.

su -

y luego ingrese la contraseña de root.

El procedimiento anterior requiere que un usuario normal conozca la contraseña de root, lo que supone un grave riesgo de seguridad. Por ese motivo, el administrador del sistema puede configurar el comando sudo para permitir que un usuario normal ejecute comandos como un usuario diferente (normalmente el superusuario) de una forma muy controlada y limitada. Por lo tanto, se pueden establecer restricciones para un usuario para permitirle ejecutar uno o más comandos privilegiados específicos y ningún otro.

Leer también: Diferencia entre usuario su y sudo

Para autenticarse usando sudo, el usuario utiliza su propia contraseña. Después de ingresar el comando, se nos solicitará nuestra contraseña (no la del superusuario) y si la autenticación tiene éxito (y si al usuario se le han otorgado privilegios para ejecutar el comando), se ejecuta el comando especificado.

Para otorgar acceso a sudo, el administrador del sistema debe editar el archivo /etc/sudoers. Se recomienda editar este archivo usando el comando visudo en lugar de abrirlo directamente con un editor de texto.

visudo

Esto abre el archivo /etc/sudoers usando vim (puede seguir las instrucciones proporcionadas en Instalar y usar vim como editor – Parte 2 de esta serie para editar el archivo).

Estas son las líneas más relevantes.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Echemos un vistazo más de cerca.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Esta línea le permite especificar los directorios que se usarán para sudo y se usa para evitar el uso de directorios específicos del usuario, que pueden dañar el sistema.

Las siguientes líneas se utilizan para especificar permisos.

root        ALL=(ALL) ALL
  1. La primera palabra clave ALL indica que esta regla se aplica a todos los hosts.
  2. El segundo TODOS indica que el usuario de la primera columna puede ejecutar comandos con los privilegios de cualquier usuario.
  3. El tercer ALL significa que se puede ejecutar cualquier comando.
tecmint     ALL=/bin/yum update

Si no se especifica ningún usuario después del signo =, sudo asume el usuario root. En este caso, el usuario tecmint podrá ejecutar yum update como root.

gacanepa    ALL=NOPASSWD:/bin/updatedb

La directiva NOPASSWD permite al usuario gacanepa ejecutar /bin/updatedb sin necesidad de ingresar su contraseña.

%admin      ALL=(ALL) ALL

El signo % indica que esta línea se aplica a un grupo llamado “admin”. El significado del resto de la línea es idéntico al de un usuario habitual. Esto significa que los miembros del grupo "admin" pueden ejecutar todos los comandos como cualquier usuario en todos los hosts.

Para ver qué privilegios le otorga sudo, use la opción “-l” para enumerarlos.

PAM (módulos de autenticación conectables)

Los Módulos de autenticación conectables (PAM) ofrecen la flexibilidad de configurar un esquema de autenticación específico por aplicación y/o por servicio utilizando módulos. Esta herramienta presente en todas las distribuciones modernas de Linux superó el problema que a menudo enfrentaban los desarrolladores en los primeros días de Linux, cuando cada programa que requería autenticación debía compilarse especialmente para saber cómo obtener la información necesaria.

Por ejemplo, con PAM, no importa si su contraseña está almacenada en /etc/shadow o en un servidor separado dentro de su red.

Por ejemplo, cuando el programa de inicio de sesión necesita autenticar a un usuario, PAM proporciona dinámicamente la biblioteca que contiene las funciones para el esquema de autenticación correcto. Por lo tanto, cambiar el esquema de autenticación para la aplicación de inicio de sesión (o cualquier otro programa que use PAM) es fácil ya que solo implica editar un archivo de configuración (muy probablemente, un archivo con el nombre de la aplicación, ubicado dentro de /etc/pam.d , y menos probable en /etc/pam.conf).

Los archivos dentro de /etc/pam.d indican qué aplicaciones utilizan PAM de forma nativa. Además, podemos saber si una determinada aplicación utiliza PAM comprobando si la biblioteca PAM (libpam) ha sido vinculada a ella:


ldd $(which login) | grep libpam # login uses PAM
ldd $(which top) | grep libpam # top does not use PAM

En la imagen de arriba podemos ver que libpam se ha vinculado con la aplicación de inicio de sesión. Esto tiene sentido ya que esta aplicación participa en la operación de autenticación del usuario del sistema, mientras que top no.

Examinemos el archivo de configuración PAM de passwd; sí, la conocida utilidad para cambiar las contraseñas de los usuarios. Se encuentra en /etc/pam.d/passwd:


cat /etc/passwd

La primera columna indica el tipo de autenticación que se utilizará con la module-path (tercera columna). Cuando aparece un guión antes del tipo, PAM no registrará en el registro del sistema si el módulo no se puede cargar porque no se pudo encontrar en el sistema.

Están disponibles los siguientes tipos de autenticación:

  1. cuenta: este tipo de módulo verifica si el usuario o servicio ha proporcionado credenciales válidas para autenticarse.
  2. auth: este tipo de módulo verifica que el usuario es quien dice ser y otorga los privilegios necesarios.
  3. contraseña: este tipo de módulo permite al usuario o servicio actualizar su contraseña.
  4. session: este tipo de módulo indica lo que se debe hacer antes y/o después de que la autenticación sea exitosa.

La segunda columna (llamada control) indica lo que debería suceder si falla la autenticación con este módulo:

  1. requisito: si la autenticación a través de este módulo falla, la autenticación general será denegada inmediatamente.
  2. required es similar a require, aunque se llamará a todos los demás módulos enumerados para este servicio antes de denegar la autenticación.
  3. suficiente: si la autenticación a través de este módulo falla, PAM aún otorgará la autenticación incluso si falló una marca previa como requerida.
  4. opcional: si la autenticación a través de este módulo falla o tiene éxito, no sucede nada a menos que este sea el único módulo de su tipo definido para este servicio.
  5. include significa que las líneas del tipo dado deben leerse desde otro archivo.
  6. substack es similar a include pero los fallos o éxitos de autenticación no provocan la salida del módulo completo, sino solo de la subpila.

La cuarta columna, si existe, muestra los argumentos que se pasarán al módulo.

Las primeras tres líneas en /etc/pam.d/passwd (que se muestran arriba), cargan el módulo system-auth para verificar que el usuario haya proporcionado credenciales válidas (cuenta). . Si es así, le permite cambiar el token de autenticación (contraseña) dándole permiso para usar passwd (auth).

Por ejemplo, si agrega


remember=2

a la siguiente línea


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

en /etc/pam.d/system-auth:


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

las dos últimas contraseñas hash de cada usuario se guardan en /etc/security/opasswd para que no se puedan reutilizar:

Resumen

Las habilidades eficaces de gestión de archivos y usuarios son herramientas esenciales para cualquier administrador de sistemas. En este artículo hemos cubierto los conceptos básicos y esperamos que pueda utilizarlo como un buen punto de partida sobre el que desarrollarse. No dude en dejar sus comentarios o preguntas a continuación y le responderemos rápidamente.