Los efectos de agregar usuarios a un sistema Linux

Este artículo cubre mi viaje de aprendizaje de la arquitectura del sistema de archivos de Linux y el uso de mi conocimiento para escribir un script de shell para crear usuarios de Linux. Durante mi segundo año de universidad, descubrí el sistema de archivos de Linux cuando me vino a la mente el concepto de usuarios. He intentado crear usuarios en sistemas operativos basados ​​en Linux.

El script está diseñado para sistemas operativos basados ​​en Red Hat y también se puede usar para otras distribuciones de Linux con algunas ligeras modificaciones. Tenga en cuenta que utiliza ksh.

El foco está en los archivos ubicados en el /etc directorio, que almacena la información de configuración del sistema. Muestro cómo trabajar con archivos del sistema y crear un nuevo usuario. El acceso raíz es un requisito.

Estos son los archivos que se modifican al crear un nuevo usuario en Linux:

  1. /etc/contraseña
  2. / etc / sombra
  3. /etc/grupo
  4. /etc/gshadow
  5. / Usuario doméstico
  6. /var/spool/correo/USUARIO

El sistema fortalece la seguridad del directorio personal y el buzón de correo del usuario (USUARIO) configurando la propiedad para el usuario y el grupo de usuarios.

Índice

/etc/contraseña

Este archivo almacena información sobre el usuario, como nombre de usuario, ID de usuario, ID de grupo, nombre completo (comentario) y shell. Los datos se almacenan en el siguiente formato: Nombre de usuario: Enlace: ID de usuario: ID de grupo: Comentario: Directorio principal: Shell

Cada línea del archivo contiene la siguiente información sobre los usuarios:

  • Nombre de usuario: se refiere al nombre de usuario proporcionado al usuario para facilitar el acceso.
  • Link: Representa la contraseña del usuario almacenada en el /etc/shadow archivar. sí X se elimina, la contraseña no se verificará y el usuario no podrá iniciar sesión.
  • ID de usuario: comúnmente conocido como UID y se usa para representar de manera única a un usuario. Va de 0 a 65.535.
    • UID = 0 -> cuenta de usuario raíz
    • UID = 1,000 a 60,000 -> Cuentas generales/no raíz
    • UID = 1 a 999 y 60 001 a 65 535 -> Usuarios del sistema
  • GroupID: Igual que UserID pero se usa para representar de forma única a un grupo.
  • Comentario: Información adicional sobre el usuario. Por lo general, el nombre completo del usuario.
  • HomeDirectory: ubicación del directorio de inicio del usuario.
  • Shell: Shell por defecto del usuario.

/ etc / sombra

Este archivo almacena la información de la contraseña del usuario y contiene la contraseña en forma cifrada.

Los datos se almacenan en el siguiente formato:

Nombre de usuario: Contraseña cifrada: Último cambio de contraseña: MinPwdAge: MaxPwdAge: Periodo de advertencia: Periodo de inactividad: Fecha de caducidad: No utilizado

  • Nombre de usuario: se refiere al nombre de usuario proporcionado al usuario.
  • Contraseña cifrada: la contraseña se cifra mediante algoritmos hash como sha256, sha512, md5, etc., y se almacena en el archivo.
  • Último cambio de contraseña: almacena la fecha de época desde el último cambio de contraseña.
  • Antigüedad mínima de la contraseña: Almacena el número de días hasta el próximo cambio de contraseña.
    • Por defecto, 0 -> Sin edad mínima
  • Antigüedad máxima de la contraseña: almacena el número máximo de días después de los cuales el usuario debe cambiar la contraseña.
    • Por defecto, 99.999 -> Sin edad máxima
  • Período de advertencia: número de días después de los cuales se muestra la advertencia para cambiar la contraseña.
  • Período de Inactividad: Especifica el número de días después de que la contraseña del usuario expire antes de que la cuenta sea desactivada.
  • Fecha de vencimiento: Fecha del período hasta que se desactive la cuenta.
  • Sin usar: Reservado para uso futuro.

Otros archivos

  • /etc/group y /etc/gshadow los archivos están destinados a grupos en Linux y almacenan los datos en el formato Nombre de grupo: Enlace: ID de grupo: Lista de miembros y Nombre del grupo: Contraseña: Reservado: Lista de miembros respectivamente.
  • El directorio de inicio del usuario debe crearse en el /home directorio con datos de /etc/skel carpetas.
  • Buzón creado en /var/spool/mail directorio telefónico.

El escenario

Aquí está el script de shell que escribí para crear nuevos usuarios dividido en partes:

uname=$1
 
id -u $uname&>/dev/null

Primero, comprueba si el usuario ya existe:

if [ $? -ne 0 ]
then
for i in {1000..60000}
do 
id -u $i&>/dev/null & id -g $i&>/dev/null
if [ $? -ne 0 ]
then
break
fi
done
uid=$i
echo "$uname:x:$uid:$uid::/home/$uname:/bin/bash">>/etc/passwd
lastpwdchange=$(datediff 1970-01-01 `date +"%Y-%m-%d"`)
echo "$uname::$lastpwdchange:0:99999:7:::">>/etc/shadow
echo "$uname:x:$uid:">>/etc/group
echo "$uname:!::">>/etc/gshadow
mkdir /home/$uname
cp -a /etc/skel/. /home/$uname/
chown $uname:$uname /home/$uname/ -R
chmod 0700 /home/$uname/ -R
touch /var/spool/mail/$uname
chown $uname:$uname /var/spool/mail/$uname
 
echo "User successfully created"
else
echo "User already exists : try using a unique username">&2
fi

Si el usuario ya existe, salga del programa o cree el usuario.

el código completo está disponible públicamente en GitHub.

Ejecute el script de shell

1) Coloque el script de shell en el directorio /usr/bin/ para hacerlo accesible como un comando.

2) Agregar permiso de ejecución para el usuario root:

# chmod u+x /usr/bin/ksh_useradd

3) Ejecute el comando con el nombre de usuario como argumento:

ksh_useradd USERNAME

4) El script crea la cuenta de usuario. Debe establecer una contraseña para el nuevo usuario antes de iniciar sesión por primera vez.

Conclusión

Este script puede hacer que el proceso de creación de usuarios sea un poco más fácil que recordar los cambios para el usuario. useradd pedido. Por supuesto que puedes usar el useradd comando para crear usuarios, establecer permisos y crear el buzón del usuario, pero este script realiza las mismas acciones que useradd y lo ayuda a aprender lo que sucede detrás de escena con su sistema de archivos. Espero que las explicaciones anteriores lo ayuden a comprender un poco más claramente los archivos de configuración relacionados con la creación de usuarios y sus campos.

Artículos de interés

Subir