En agosto pasado, la Fundación Linux inició la LFCS Certificación (Administrador de sistemas certificado por la Fundación Linux), un programa completamente nuevo cuyo propósito es permitir que las personas en todas partes y en cualquier lugar tomen un examen para obtener la certificación de básico a Soporte operativo intermedio para sistemas Linux, que incluye soporte de sistemas y servicios en ejecución, junto con monitoreo general. y análisis, además de una 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 video que describe una introducción al Programa de Certificación de la Fundación Linux.
Este artículo es la Parte 8 de una serie larga 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 en diferentes computadoras o terminales accedan a un solo sistema), necesitará saber cómo realizar una gestión de usuarios eficaz: cómo agregar, editar, suspender o eliminar cuentas de usuario, además de otorgarles los permisos necesarios para realizar sus tareas asignadas Tareas.
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 personal (/home/username por defecto).
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 una cola de correo para el usuario en / var / spool / mail /nombre de usuario.
4. Se crea un grupo y se le da el mismo nombre que la nueva cuenta de usuario.
La información completa de la cuenta se almacena en el /etc/passwd expediente. Este archivo contiene un registro por cuenta de usuario del sistema y tiene el siguiente formato (los campos están delimitados por dos puntos).
[nombre de usuario]: [x]: [UID]: [GID]: [Comentario]: [Directorio de inicio]: [Shell predeterminado]
La información del grupo se almacena en el /etc/group expediente. Cada registro tiene el siguiente formato.
[Nombre del grupo]: [Contraseña del grupo]: [GID]: [Miembros del grupo]
Después de agregar una cuenta, puede editar la siguiente información (para nombrar algunos campos) usando el usermod comando, cuya sintaxis básica de usermod es la siguiente.
# usermod [opciones] [nombre de usuario]
Utilizar el -fecha de caducidad bandera seguida de una fecha en AAAA-MM-DD formato.
# usermod --expiredate 2014-10-30 tecmint.
Utilice el combinado -aG, o -adjuntar–Grupos opciones, seguidas de una lista de grupos separados por comas.
# usermod --append --groups root, users tecmint.
Utilizar el -D, o -casa opciones, seguido de la ruta absoluta al nuevo directorio de inicio.
# usermod --home / tmp tecmint.
Utilizar -cáscara, seguido de la ruta al nuevo shell.
# usermod --shell / bin / sh tecmint.
# grupos tecmint. # id tecmint.
Ahora, ejecutemos todos los comandos anteriores de una 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 del tecmint cuenta de usuario a 30 de octubre de 2014. También agregaremos la cuenta al raíz y grupo de usuarios. Finalmente, estableceremos sh
como su shell predeterminado y cambie la ubicación del directorio de inicio a /tmp:
Leer también:
Para las cuentas existentes, también podemos hacer lo siguiente.
Utilizar el -L (L mayúscula) o la -cerrar con llave opción para bloquear la contraseña de un usuario.
# usermod --bloquear tecmint.
Utilizar el –U o la -desbloquear opción para desbloquear la contraseña de un usuario que estaba previamente bloqueada.
# usermod: desbloquea tecmint.
Ejecute la siguiente serie de comandos para lograr el objetivo.
# groupadd common_group # Agregar un nuevo grupo. # chown: common_group common.txt # Cambie el propietario del grupo de common.txt a common_group. # usermod -aG common_group user1 # Agregar user1 a common_group. # usermod -aG common_group user2 # Agregar user2 a common_group. # usermod -aG common_group user3 # Agregar user3 a common_group.
Puede eliminar un grupo con el siguiente comando.
# groupdel [nombre_grupo]
Si hay archivos propiedad de Nombre del grupo, no se eliminarán, pero el propietario del grupo se establecerá en el GID del grupo que fue eliminado.
Además de los permisos básicos de lectura, escritura y ejecución que discutimos en Herramientas de archivo y configuración de atributos de archivo - Parte 3 de esta serie, hay otras configuraciones de permisos menos utilizadas (pero no menos importantes), a las que a veces se hace referencia como "permisos especiales”.
Al igual que los permisos básicos discutidos anteriormente, se establecen mediante un archivo octal o mediante una letra (notación simbólica) que indica el tipo de permiso.
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 la cola de correo) utilizando el userdel comando con el -retirar opción.
# userdel --remove [nombre de usuario]
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 adecuados en esos recursos.
Por ejemplo, suponga que tiene los siguientes usuarios.
Todos ellos necesitan leer y escribir acceso 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. Puede tener la tentación de hacer algo como,
# chmod 660 common.txt. O. # chmod u = rw, g = rw, o = common.txt [observe el espacio entre el último signo igual y el nombre del archivo]
Sin embargo, esto solo proporcionará leer y escribir acceso al propietario del archivo y a aquellos usuarios que son miembros del grupo propietario del archivo (usuario1 en este caso). Nuevamente, puede tener la tentación de agregar usuario2 y usuario3 para agrupar usuario1, pero eso también les dará acceso al resto de los archivos propiedad del usuario usuario1 y grupo usuario1.
Aquí es donde los grupos son útiles y esto es lo que debe hacer en un caso como este.
Cuando el setuid el permiso 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. Es probable que encuentre programas con este conjunto de permisos cuando un usuario del sistema necesite acceder a un archivo propiedad de root.
En resumen, no se trata solo de que el usuario pueda ejecutar el archivo binario, sino también de que puede hacerlo con los privilegios de root. Por ejemplo, revisemos los permisos de /bin/passwd. Este binario se utiliza para cambiar la contraseña de una cuenta y modifica la /etc/shadow expediente. El superusuario puede cambiar la contraseña de cualquier persona, pero todos los demás usuarios solo deberían poder cambiar la suya propia.
Por lo tanto, cualquier usuario debe tener permiso para ejecutar /bin/passwd, pero solo root podrá especificar una cuenta. Otros usuarios solo pueden cambiar sus contraseñas correspondientes.
Cuando el setgid bit está establecido, el efectivo GID del usuario real se convierte en el propietario del grupo. Por lo tanto, cualquier usuario puede acceder a un archivo con los privilegios otorgados al propietario del grupo 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 padre directorio. Lo más probable es que utilice este enfoque siempre que los miembros de un determinado grupo necesiten acceder a todos los archivos de un directorio, independientemente del grupo principal del propietario del archivo.
# chmod g + s [nombre de archivo]
Para configurar el setgid en forma octal, anteponer el número 2 a los permisos básicos actuales (o deseados).
# chmod 2755 [directorio]
Cuando el "pedacito pegajoso”Está configurado en archivos, Linux simplemente lo ignora, mientras que para directorios tiene el efecto de evitar que los usuarios de eliminar o incluso cambiar el nombre de los archivos que contiene a menos que el usuario sea el propietario del directorio, el archivo o raíz.
# chmod o + t [directorio]
Para configurar el pedacito pegajoso en forma octal, anteponer el número 1 a los permisos básicos actuales (o deseados).
# chmod 1755 [directorio]
Sin el bit pegajoso, cualquiera que pueda escribir en el directorio puede eliminar o cambiar el nombre de los archivos. Por esa razón, el bit pegajoso se encuentra comúnmente en directorios, como /tmp, que se pueden escribir en todo el mundo.
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. Están configurados con el comando chattr y se puede ver usando el lsattr herramienta, de la siguiente manera.
# chattr + i archivo1. # chattr + un archivo2.
Después de ejecutar esos dos comandos, archivo1 será inmutable (lo que significa que no se puede mover, renombrar, modificar o eliminar) mientras que archivo2 entrará en el modo de solo agregar (solo se puede abrir en el modo de agregar para escribir).
Una de las formas en que los usuarios pueden acceder a la cuenta raíz es escribiendo.
$ su.
y luego ingresando la contraseña de root.
Si la autenticación tiene éxito, iniciará sesión como raíz con el directorio de trabajo actual igual que antes. Si desea que se le coloque 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 representa un grave riesgo de seguridad. Por esa razón, el administrador del sistema puede configurar el sudo comando para permitir que un usuario común ejecute comandos como un usuario diferente (generalmente el superusuario) de una manera muy controlada y limitada. Por lo tanto, se pueden establecer restricciones en un usuario para permitirle ejecutar uno o más comandos privilegiados específicos y ningún otro.
Leer también: Diferencia entre su y sudo User
Para autenticarse usando sudo, el usuario utiliza su propia contraseña. Después de ingresar el comando, se nos pedirá nuestra contraseña (no la del superusuario) y si el la autenticación se realiza correctamente (y si el usuario tiene privilegios para ejecutar el comando), el comando especificado se lleva a cabo.
Para otorgar acceso a sudo, el administrador del sistema debe editar el /etc/sudoers expediente. Se recomienda que este archivo se edite utilizando el visudo comando en lugar de abrirlo directamente con un editor de texto.
# visudo.
Esto abre el /etc/sudoers archivo usando empuje (puede seguir las instrucciones dadas en Instalar y usar vim como editor - Parte 2 de esta serie para editar el archivo).
Estas son las líneas más relevantes.
Valores predeterminados secure_path = "/ usr / sbin: / usr / bin: / sbin" root TODOS = (TODOS) TODOS. tecmint ALL = / bin / yum update. gacanepa ALL = NOPASSWD: / bin / updatedb. % admin TODOS = (TODOS) TODOS.
Echémosle un vistazo más de cerca.
Valores predeterminados secure_path = "/ usr / sbin: / usr / bin: / sbin: / usr / local / bin"
Esta línea le permite especificar los directorios que se utilizarán para sudo, y se utiliza 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 TODOS = (TODOS) TODOS.
tecmint ALL = / bin / yum update.
Si no se especifica ningún usuario después de la = sign, sudo asume el usuario root. En este caso, el usuario tecmint podrá correr actualización de yum como root.
gacanepa ALL = NOPASSWD: / bin / updatedb.
El NOPASSWD La directiva permite que el usuario gacanepa ejecute /bin/updatedb sin necesidad de ingresar su contraseña.
% admin TODOS = (TODOS) TODOS.
El % el signo indica que esta línea se aplica a un grupo llamado "administración”. El significado del resto de la línea es idéntico al de un usuario habitual. Esto significa que los miembros del grupo "administración”Puede ejecutar todos los comandos como cualquier usuario en todos los hosts.
Para ver qué privilegios le otorga sudo, use el "-l”Opción para enumerarlos.
Módulos de autenticación conectables (PAM) ofrecen la flexibilidad de establecer 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 enfrentan los desarrolladores en los primeros días de Linux, cuando cada programa que requería autenticación tenía que compilarse especialmente para saber cómo obtener los información.
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 /etc/pam.d
, y menos probable en /etc/pam.conf
).
Archivos dentro /etc/pam.d
indicar qué aplicaciones utilizan PAM de forma nativa. Además, podemos saber si una determinada aplicación utiliza PAM comprobando si la biblioteca PAM (libpam) se ha vinculado a él:
# ldd $ (qué inicio de sesión) | grep libpam # login usa PAM. # ldd $ (que parte superior) | grep libpam # top no usa PAM.
En la imagen de arriba podemos ver que el libpam se ha vinculado con la aplicación de inicio de sesión. Esto tiene sentido ya que esta aplicación está involucrada en el funcionamiento de la autenticación del usuario del sistema, mientras que top no lo hace.
Examinemos el archivo de configuración de PAM para passwd - sí, la conocida utilidad para cambiar las contraseñas de los usuarios. Está localizado en /etc/pam.d/passwd:
# cat / etc / passwd.
La primera columna indica el escribe
de autenticación que se utilizará con el ruta del módulo
(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:
cuenta
: este tipo de módulo comprueba si el usuario o servicio ha proporcionado credenciales válidas para autenticarse.auth
: este tipo de módulo verifica que el usuario es quien dice ser y otorga los privilegios necesarios.clave
: este tipo de módulo permite al usuario o servicio actualizar su contraseña.sesión
: este tipo de módulo indica qué 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:
requisito
: si la autenticación a través de este módulo falla, la autenticación general se denegará inmediatamente.requerido
es similar al requisito, aunque se llamará a todos los demás módulos enumerados para este servicio antes de denegar la autenticación.suficiente
: si la autenticación a través de este módulo falla, PAM aún otorgará autenticación incluso si falló una marca previa como requerida.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.incluir
significa que las líneas del tipo dado deben leerse desde otro archivo.sub-pila
es similar a include pero los fallos o aciertos de autenticación no provocan la salida del módulo completo, sino solo de la sub-pila.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 (mostrado arriba), cargue el autenticación del sistema módulo para comprobar que el usuario ha proporcionado credenciales válidas (cuenta). Si es así, le permite cambiar el token de autenticación (contraseña) dando permiso para usar passwd (auth).
Por ejemplo, si agrega
recordar = 2.
a la siguiente línea
contraseña suficiente pam_unix.so sha512 shadow nullok try_first_pass use_authtok.
en /etc/pam.d/system-auth:
contraseña suficiente pam_unix.so sha512 shadow nullok try_first_pass use_authtok recordar = 2.
las dos últimas contraseñas hash de cada usuario se guardan en /etc/security/opasswd para que no se puedan reutilizar:
Las habilidades efectivas de administració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 usarlo como un buen punto de partida para seguir construyendo. No dude en dejar sus comentarios o preguntas a continuación y le responderemos rápidamente.