Escolar Documentos
Profissional Documentos
Cultura Documentos
14.1 Introducción
En el capítulo anterior viste que la información de la cuenta de usuario se almacena en el
archivo /etc/passwd y la información de autenticación de usuario (datos de la contraseña)
se almacena en el archivo /etc/shadow. La creación de un nuevo usuario puede lograrse
añadiendo una nueva línea manualmente a cada uno de estos archivos, pero generalmente no
es la técnica recomendada. Mediante el uso de un comando adecuado para agregar un nuevo
usuario, estos archivos pueden ser modificados automáticamente y de forma segura. Si fueras
a modificar manualmente estos archivos, corres el riesgo de cometer un error que podría
impedir el acceso normal de todos los usuarios.
En algunas distribuciones, creando una nueva cuenta de usuario automáticamente se crea
una cuenta de grupo para el usuario, llamado un Grupo Privado de Usuario (UPG «User
Private Group» en inglés). En estos sistemas, el grupo y nombre de usuario serían los mismos
y el único miembro de este nuevo grupo sería el nuevo usuario.
Para las distribuciones que no crean un UPG, los nuevos usuarios reciben el grupo de "users"
(«usuarios» en español) como su grupo primario. El administrador puede crear manualmente
cuentas de grupo que sean privadas para el usuario, pero es más común que el administrador
cree grupos para varios usuarios que deben colaborar. Las cuentas de usuario pueden ser
modificadas en cualquier momento para agregar o quitar membresías de cuenta de grupo,
pero los usuarios deben pertenecer por lo menos a un grupo para usarlo como su grupo
primario.
Antes de empezar a crear los usuarios, debes planear cómo vas a utilizar los grupos. Los
usuarios pueden crearse con membresías en grupos que ya existen o los usuarios existentes
pueden ser modificados para tener membresías en grupos existentes.
Si ya tienes previsto qué usuarios y grupos quieres crear, es más eficiente primero crear sus
grupos y después crear los usuarios con sus pertenencias a grupos. Por otra parte, si creas
primero tus usuarios, y luego sus grupos, necesitarás un paso extra para modificar los
usuarios para que sean miembros de sus grupos.
El comando groupadd puede ser ejecutado por el usuario root para crear un nuevo grupo. El
comando requiere solamente el nombre del grupo que se creará. La opción -g puede utilizarse
para especificar un id de grupo para el grupo nuevo:
El primer carácter del nombre debe ser un guión bajo _ o un carácter alfabético en
minúsculas a-z.
En la mayoría de las distribuciones de Linux se permite hasta 32 caracteres, pero usar
más de 16 puede ser problemático, ya que algunas distribuciones no pueden aceptar
más de 16.
Después del primer carácter, los caracteres restantes pueden ser alfanuméricos, un
guión - o un guión bajo _.
El último carácter no debe ser un guión -.
root@localhost:~# ls -l index.html
-rw-r-----. 1 root sales 0 Aug 1 13:21 index.html
root@localhost:~# groupmod -n clerks sales
root@localhost:~# ls -l index.html
-rw-r-----. 1 root clerks 0 Aug 1 13:21 index.html
Estos archivos sin nombre de grupo se denominan archivos «huérfanos». Como usuario root,
probablemente quieras buscar todos los archivos que son propiedad de solamente un GID (no
asociado con un nombre de grupo). Esto puede lograrse con la opción -nogroup para el
comando find:
root@localhost:~# find / -nogroup
/root/index.html
root@localhost:~# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
root@localhost:~# useradd -D -f 30
root@localhost:~# useradd -D
GROUP=100
HOME=/home
INACTIVE=30
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
grupo(s) suplementario(s): Si quieres que el usuario fuera miembro de uno o más grupos
suplementarios, la opción -G se puede utilizar para especificar una lista separada por comas
de nombres de grupos o números.
directorio home: Por defecto, la mayoría de las distribuciones crearán el directorio home del
usuario con el mismo nombre que la cuenta de usuario bajo /home. Por ejemplo, si creas una
cuenta de usuario llamada sam, el nuevo directorio home del usuario sería /home/sam. Hay
varias opciones para el comando useradd que pueden afectar la creación del directorio home
del usuario:
La opción -b te permite especificar un directorio diferente bajo el cual se creará el
directorio home del usuario. Por ejemplo: -b /test resultaría en /test/sam siendo el
directorio home para una cuenta de usuario llamada sam.
La opción -d te permite especificar un directorio existente o un nuevo directorio para el
usuario. Esto debe ser una ruta de acceso completa para el directorio home del
usuario. Por ejemplo: -d /home/sam.
La opción -m le dice a useradd que cree el directorio home; esto no es normalmente
necesario ya que es el comportamiento predeterminado del comando useradd. Sin
embargo, cuando utilices la opción -k (véase abajo) para especificar un esqueleto de
directorio diferente, entonces necesitarás la opción -m.
La opción -M se utiliza para especificarle al comando useradd que no debe crear el
directorio home.
Esqueleto de directorio: De forma predeterminada, el contenido del directorio /etc/skel se
copia en el directorio home del usuario nuevo. Los archivos resultantes también son propiedad
del nuevo usuario. Usando la opción -kcon el comando useradd, el contenido de un directorio
diferente se puede utilizar para rellenar el directorio home de un usuario nuevo. Cuando se
especifica el directorio esqueleto con la opción -k, debe utilizarse la opción -m, de lo contrario
el comando useradd fallará mostrando un error que dice: «-k flag is only allowed
with the -m flag» (o «La opción -k solo se permite con la opción -m» en español).
shell: Mientras el shell por defecto se especifica en el archivo /etc/default/useradd,
también puede ser cambaido con la opción de useradd -s en el momento de la creación de
cuentas. Más tarde, el administrador puede usar la opción usermod -s para cambiar el shell o
el usuario puede cambiar su shell con el comando chsh. Es común especificar el
shell /sbin/nologin para las cuentas que se vayan a utilizar como cuentas del sistema.
Comentario: El campo de comentario, originalmente llamado el campo General Electric
Comprehensive Operating System (GECOS), normalmente se utiliza para contener el nombre
completo del usuario. Muchos programas gráficos muestran el valor de este campo en lugar
del nombre de la cuenta. La opción -c de los comandos useradd y usermod permite
especificar el valor de este campo.
Este ejemplo del comando useradd crea un usuario con UID de 1000, un grupo primario
de users («usuarios»), membresías suplementarias en los grupos wheel y research, un
comentario de «Jane Doe» y un nombre de cuenta jane.
La información sobre la cuenta de usuario de jane se agregará automáticamente a los
archivos /etc/passwd y /etc/shadow, mientras que la información sobre el acceso a
grupos suplementarios de jane se añadirá automáticamente al
archivo /etc/group y /etc/gshadow. Por ejemplo:
research:x:2000:jane
root@localhost:~# grep jane /etc/gshadow
wheel:::jane
research:!::jane
root@localhost:~#
root@localhost:~# ls /var/spool/mail
jane root rpc sysadmin
root@localhost:~# ls /home
jane sysadmin
root@localhost:~# ls -a /home/jane
. .. .bash_logout .bashrc .profile .selected_editor
root@localhost:~# ls -a /etc/skel
. .. .bash_logout .bashrc .profile .selected_editor
root@localhost:~#
nombre
segundo nombre
apellido
cumpleaños
teléfono
nombres de mascotas
licencia de conducir
seguro social
Hay numerosos factores a considerar al elegir una contraseña para una cuenta:
Longitud: El archivo /etc/login.defs permite al administrador especificar
la longitud mínima de la contraseña. Aunque hay personas que consideran
que una contraseña larga es mejor, esto no es realmente correcto. El
problema con las contraseñas que son demasiado largas es que no se
recuerdan fácilmente y, consecuentemente, la gente las apunta a menudo en
un lugar donde pueden ser fácilmente encontradas y comprometidas.
Composición: Una buena contraseña debe estar compuesta por una
combinación de caracteres alfabéticos, numéricos y simbólicos.
Vigencia: La cantidad de tiempo que una contraseña se puede utilizar como
máximo debe ser limitada por varias razones:
Si una cuenta está comprometida y se limita el tiempo que la
contraseña es válida, el intruso perderá el acceso puesto que
eventualmente la contraseña se volverá invalidada.
Si una cuenta no se usa, entonces se puede desactivar
automáticamente cuando la contraseña no sea válida.
Si los atacantes intentan atacar con «fuerza bruta» con cada
contraseña posible, entonces la contraseña puede cambiarse antes de
que el ataque tenga éxito.
Las opiniones varían sobre la frecuencia con la que los usuarios deben ser
forzados a cambiar sus contraseñas. Para cuentas muy sensibles, se
recomienda cambiar las contraseñas con mayor frecuencia, como cada 30
días. Por otro lado, para cuentas no críticas sin ningún tipo de acceso a
información sensible, hay menos necesidad de cambio frecuente. Para
cuentas con mínimo riesgo, una vigencia razonable sería 90 días.
Suponiendo que el administrador estableció una contraseña para una cuenta de usuario, el
usuario puede entonces iniciar sesión con el nombre de cuenta y la contraseña. Cuando el
usuario abre una terminal, puede ejecutar el comando passwd sin argumentos para cambiar su
propia contraseña. Se le pide su contraseña actual y luego se pedirá que introduzca la nueva
contraseña dos veces.
Para un usuario común puede ser difícil establecer una contraseña válida, porque debe seguir
todas las reglas para la contraseña. El usuario normalmente tiene tres intentos para
proporcionar una contraseña válida antes de que el comando passwd salga con un error.
Con los privilegios del usuario root, las contraseñas encriptadas y otra información relacionada
a la contraseña puede verse consultando el archivo /etc/shadow. Hay que recordar que los
usuarios normales no pueden ver el contenido de este archivo.
el EXPIRE_DATE
Un buen ejemplo del comando chage sería cambiar el número máximo de días para la validez
de la contraseña de una persona a 60 días:
Ten en cuenta que borrar un usuario sin borrar su directorio home significa que los archivos
del directorio home del usuario son ahora huérfanos y estos archivos serán propiedad
únicamente de sus previos UID y GID.
Para eliminar al usuario jane y borrar el directorio /home/jane, utiliza la opción -r:
ADVERTENCIA: El comando anterior solo borra los archivos del usuario en su directorio home
y mail spool. Si el usuario posee otros archivos fuera de su directorio, los archivos seguirán
existiendo como archivos huérfanos.