SlideShare una empresa de Scribd logo
Universidad Católica Los Ángeles Chimbote                                             Ingeniería de Sistemas


Administración de Usuarios
Linux es un sistema operativo multiusuario, por lo tanto el administrador del sistema, que puede ser root o algun
otro usuario con nivel de administrador, tiene que asignar un nombre de usuario (login) y una contraseña
(password) a los usuarios para que puedan empezar a trabajar. Cada usuario, tiene su propio login y su propia
password para acceder al sistema. Esto permite prevenir que otro usuario utilice un login que no le corresponde,
pues es secreto.
El archivo donde están almacenados los passwords de los usuarios es /etc/passwd.
Para que un password sea válido debe contener como mínimo 6 caracteres, y el primero debe ser alfabético; pero
únicamente los 8 primeros son significativos.
El password puede contener letras en mayúsculas o minúsculas, caracteres numéricos y caracteres especiales.
Para crear un nuevo password o cambiar uno ya existente se utiliza el comando passwd, cuya sintaxis es:
        # passwd [NombreUsuario]

El archivo de Passwords
Linux guarda la información de todos los usuarios junto con sus passwords (lógicamente cifrados) en un
archivo. Es el archivo passwd, dentro del directorio /etc. Es muy simple en Linux leer este archivo, ya que es
accesible a cualquier usuario. Tiene la siguiente forma:

        ale:heJuwMrBVa6mg:1001:202:Alejandra Garcia:/home/ale:/bin/sh
        pepe:GezuA6krN/BsE:1002:202:Jose Alvarez:/home/pepe:/bin/sh
        juan:ze7EPYLjRYX9I:1003:202:Juan Jose Cao:/home/juan:/bin/ksh

Vamos a ver qué significa todo esto. Podemos decir que el formato de cada línea es:
       campo1:campo2:campo3:campo4:campo5:campo6:campo7
donde:
       campo1) login del usuario
       campo2) password encriptado
       campo3) número UID (identificación de usuario)
       campo4) número GID (identificación de grupo)
       campo5) datos del usuario
       campo6) directorio de trabajo
       campo7) directorio del shell

         Nota: Los usuarios tienen su número de usuario (UID), también tienen un número de grupo
         (GID). Cada usuario debe pertenecer a un grupo. Los grupos están numerados en el archivo
         /etc/group.


Como el archivo passwd es accesible por cualquier usuario, lo que siempre se hace es activar el shadow.
¿Recuerda, cuando instalamos que en una de las pantallas de instalación nos permitía habilitar MD5 y shadow?.
Bueno, es el mismo shadow. Shadow quiere decir sombra en inglés, lo puedo asociar a ocultar o esconder. El
archivo shadow también se encuentra dentro del directorio /etc, y a diferencia de passwd, éste no es visible
para cualquier usuario.

Compruébelo en su sistema logueándose como un usuario cualquiera y verá que no le da permiso de lectura. Este
archivo no puede ser accedido por cualquier usuario, sólo el superusuario o root tiene permiso de acceder a él.
Veamos como es este caso, en donde el archivo de passwords está protegido con el archivo shadow.

El archivo shadow es el que contiene las contraseñas encriptadas, y el archivo passwd, en el campo que antes
guardaba las contraseñas, ahora tiene una X, significando esto que, este usuario tiene una contraseña, es una
marca. La contraseña no está aquí.




                         Administración de Servidores.- Prof. Kramer Garay Gómez
Universidad Católica Los Ángeles Chimbote                                             Ingeniería de Sistemas
Ejemplo
          ale:heJuwMrBVa6mg:11750:0:99999:7:-1:-1:134529868

Esta es una línea del archivo shadow. Vamos a ver ahora el significado de cada campo.
         campo1) Nombre de usuario
         campo2) Contraseña encriptada
         campo3) Cantidad de días desde el 1/1/1970 que se habilitó la contraseña
         campo4) Cantidad de días antes de cambiar la contraseña
         campo5) Cantidad de días después, que se debe cambiar la contraseña
         campo6) Cantidad de días antes de que expire la contraseña, y avisa al usuario
         campo7) Cantidad de días después de que expire la contraseña, y se inhabilita la cuenta.
         campo8) Cantidad de días después, desde 1/1/1970, que la cuenta está deshabilitada.
         campo9) Campo reservado

                    Nota: Los campos que contienen un –1, significa, que la cantidad de días es
                    infinita.

Crear Usuarios
El comando para agregar un usuario es:

          useradd [opciones] <NombreUsuario>
          useradd NombreUsuario

Esta es la forma más simple del comando useradd. Como la mayoría de los comandos en Linux, se puede usar
con varios identificadores, las opciones más usuales del comando useradd son:
          -c comentario
                   para especificar un comentario para la nueva cuenta.
          -d directoriodeusuario
                   para establecer el directorio de trabajo del usuario. Es conveniente, a fin de tener un sistema
                   bien organizado, que este se localice dentro del directorio /home.
          -e fechaexpiracion
                   para establecer la fecha de expiración de la cuenta de usuario. Esta debe ingresarse en el
                   siguiente formato: AAAA-MM-DD.
          -g grupoinicial
                   para establecer el grupo inicial al que pertenecerá el usuario. De forma predeterminada se
                   establece como único grupo. Nota: El grupo asignado ya debe existir.
          -G grupo1,grupo2
                   para establecer grupos extra a los que pertenecerá el usuario. Se deben separar utilizando una
                   coma y sin espacios. Esto es muy conveniente cuando se desea que el usuario tenga acceso a
                   determinados recursos del sistema, como acceso a la unidad de disquetes, administración de
                   cuentas PPP y POP. Nota: los grupos asignados deben existir.
          -m
                   para especificar que el directorio de trabajo del usuario debe ser creado , y dentro se copiarán
                   los archivos especificados en /etc/skel. Para cambiar esto, hay que completar la opción -m
                   con –k <nuevodirskel> donde nuevodirskel es la carpeta de la cual se sacarán los
                   perfiles de usuario.
          -s shell
                   Se utiliza para establecer la shell que podrá utilizar el usuario. De forma predeterminada, se
                   establece bash como shell predeterminado.
          -u uid
                   Se utiliza para establecer el UID, es decir, la ID del usuario, el número de identificación de
                   usuario. Este debe ser único. Cuando se crea una cuenta de usuario por primera vez,
                   generalmente se asignará 500 como UID del usuario. Los UID entre 0 y 99 son reservados para
                   las cuentas de los servicios del sistema.




                          Administración de Servidores.- Prof. Kramer Garay Gómez
Universidad Católica Los Ángeles Chimbote                                           Ingeniería de Sistemas
Ejemplo:
        # useradd -u 500 -d /home/alexa -G floppy,pppusers,popusers alexa

           Nota: No crea el directorio de usuario /home/alexa . Debe existir con anterioridad

Esto creará una cuenta de usuario llamada alexa, que se encuentra incluida en los grupos floppy, pppusers y
popusers, que tendrá un UID=500 y tendrá un directorio de trabajo en /home/alexa.
Otro ejemplo:
        # useradd -m –s /bin/bash jjlopez

Aquí crearé un usuario jjlopez con su directorio de usuario /home/jjlopez y usará bash como shell.

Existen más opciones y comentarios adicionales para el comando useradd, estas se encuentran especificadas en
los manuales, las páginas man. Para acceder a esta información, utilice el comando man useradd.

                                 Nota: Este comando lo usa solamente root

En el caso de saltar todas estas opciones, useradd va a tomar las opciones por default desde un archivo:
/etc/default/useradd en caso de Redhat
/etc/adduser.conf en caso de Debian

Otra forma de crear usuarios es directamente, agregar la entrada en /etc/passwd. Edite este archivo y
agréguelo a mano. Tenga cuidado, no repita un nombre de usuario. Los nombres de usuario y UID deben ser
únicos. Se debe especificar el GID, nombre completo y resto de información. Se debe crear el directorio inicial
(/home/usuario, por ejemplo), y poner los permisos en el directorio para que el usuario sea el dueño. Se
deben suministrar archivos de comandos de inicialización en el nuevo directorio y se debe hacer alguna otra
configuración del sistema (por ejemplo, preparar un buzón para el correo electrónico entrante para el nuevo
usuario en /var/spool/mail).
Todo esto es lo que hace el comando useradd o adduser dependiendo del software que esté instalado.

El programa /usr/sbin/useradd usa una serie de valores por defecto. Los leerá del archivo
/etc/default/useradd, si este existe. Si no existe, entonces utiliza algunos valores internos por defecto, que
pueden verse ejecutando /usr/sbin/useradd -D. Vamos a ver que contiene el archivo
/etc/default/useradd:

GROUP=100       Grupo de usuario cuando se utilice useradd -n. Sino en RedHat®, el número 100
                significa que se creará un GID igual al UID, si no se indica lo contrario.
HOME=/home      Donde se guardarán los directorios de todos los usuarios
INACTIVE=-1     Número de días a los cuales se volverá inactiva la cuenta del usuario, contadas a partir del
                día del desactivamiento
EXPIRE=         Día en el que será desactivada la cuenta
SHELL=/bin/bash El shell por defecto para el usuario
SKEL=/etc/skel Lugar de donde se deben copiar archivos al nuevo directorio del usuario

Ejemplo:
        # cat /etc/default/useradd
        GROUP=100
        HOME=/home
        INACTIVE=-1
        EXPIRE=
        SHELL=/bin/bash
        SKEL=/etc/skel

Si estas opciones no son de nuestro agrado debemos cambiarlas por los valores que consideremos oportunos. Si
por ejemplo preferimos que el grupo por defecto sea el 100, que el password expire a fin de año, no queremos
bloquear una cuenta debido a que haya expirado el password y deseamos como shell por defecto /bin/bash,
utilizaríamos la siguiente orden:
        # useradd -D -g100 –e2006-12-31 -f0 -s/bin/bash



                         Administración de Servidores.- Prof. Kramer Garay Gómez
Universidad Católica Los Ángeles Chimbote                                         Ingeniería de Sistemas
Estos valores serán almacenados por defecto en el fichero /etc/default/useradd.

          Nota: El archivo /etc/default/useradd se puede abrir con un editor de texto y
          corregirlo,
                                  en vez
Entonces, si ahora creo un usuario de esta forma:
                                  de usar
         # useradd -m -c "Usuario Invitado" invitado
                                  el
                                  comand
Esto creará una entrada en el fichero /etc/passwd con el siguiente formato:
                                  o
         invitado:x:505:100:Usuario Invitado:/home/invitado:/bin/bash
                                  anterior.
Pero también creará una entrada en el fichero /etc/shadow con el siguiente formato:
        invitado:!:0:0:60:0:0:0:0

Además se creará el directorio de usuario (home directory) y los contenidos de /etc/skel serán copiados en él.
Como no especifiqué un UID para el usuario, el sistema asumirá el siguiente que tenga disponible.
La cuenta del usuario invitado ha sido creada, pero todavía no está disponible ya que no se le ha definido una
contraseña. Para establecer la contraseña hacemos lo siguiente:
        # passwd invitado
        Changing password for user invitado
        New UNIX password:
        Retype new UNIX password:
        passwd: all authentication tokens updated successfully

Veamos un ejemplo de cambio de contraseña:

        # passwd alexa
Cambiará la clave de alexa. Solo root puede cambiar la clave de otro usuario de esta forma. Cada usuario
puede cambiar su propia clave con passwd también.
                Nota: ¡Cuidado! Si esta logueado como root, y al usar el comando passwd, se olvida de
                poner el nombre de usuario al que le desea cambiar la contraseña, lo que sucederá es cambiar
                su propia contraseña (la del usuario root).

El comando adduser que se utiliza en Debian o derivados, toma las opciones por defecto que están
configuradas en el archivo /etc/adduser.conf. Veamos:

# /etc/adduser.conf: `adduser' configuration.
# See adduser(8) and adduser.conf(5) for full documentation.

# The DSHELL variable specifies the default login shell on your
# system.
DSHELL=/bin/bash

# The DHOME variable specifies the directory containing users' home
# directories.
DHOME=/home

# If GROUPHOMES is "yes", then the home directories will be created as
# /home/groupname/user.
GROUPHOMES=no

# If LETTERHOMES is "yes", then the created home directories will have
# an extra directory - the first letter of the user name. For example:
# /home/u/user.
LETTERHOMES=no

# The SKEL variable specifies the directory containing "skeletal" user
# files; in other words, files such as a sample .profile that will be
# copied to the new user's home directory when it is created.
SKEL=/etc/skel

# FIRST_SYSTEM_UID to LAST_SYSTEM_UID inclusive is the range for UIDs
# for dynamically allocated administrative and system accounts.
                        Administración de Servidores.- Prof. Kramer Garay Gómez
Universidad Católica Los Ángeles Chimbote                                            Ingeniería de Sistemas
FIRST_SYSTEM_UID=100
LAST_SYSTEM_UID=999

# FIRST_UID to LAST_UID inclusive is the range of UIDs of dynamically
# allocated user accounts.
FIRST_UID=1000
LAST_UID=29999

# The USERGROUPS variable can be either "yes" or "no". If "yes" each
# created user will be given their own group to use as a default, and
# their home directories will be g+s. If "no", each created user will
# be placed in the group whose gid is USERS_GID (see below).
USERGROUPS=no

# If USERGROUPS is "no", then USERS_GID should be the GID of the group
# `users' (or the equivalent group) on your system.
USERS_GID=100

# If QUOTAUSER is set, a default quota will be set from that user with
# `edquota -p QUOTAUSER newuser'
QUOTAUSER="alexa"


Otros archivos importantes para la administración de usuarios
Cuando se agrega un usuario o grupo con los comandos useradd o groupadd respectivamente, el contenido de
los siguientes archivos es de interés.
             Nota: Ya vimos el comando useradd. No se preocupe por groupadd, lo veremos después.

/etc/skel es un directorio, contiene todos los archivos (ejemplo: .bash_logout, .bash_profile, .bash_profile.swp,
.bashrc) u otros que serán colocados en el directorio de un usuario (home directory) al generar al usuario.
El directorio /etc/skel es bastante simple de configurar y usar. Proporciona una forma de estar seguro de que
todos los nuevos usuarios del sistema tienen la misma configuración inicial. El directorio /etc/skel es usado
por el programa /usr/sbin/useradd.
Para empezar, creamos un directorio /etc/skel. La mejor forma de hacerlo es como usuario root. Después
copiamos en /etc/skel aquellos archivos que queremos que cada nuevo usuario tenga en su directorio home.
Por ejemplo, .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc, y .vimrc.

/etc/default/useradd ya lo explicamos en párrafos anteriores.

/etc/login.defs (si se utilizan shadow passwords) especifica varios parámetros en la configuración del
proceso de entrada al sistema (login), o “logueo”. Entre las opciones que podemos configurar en este archivo
están: permisos de los usuarios para cambiar su información de usuario, temas relativos a la expiración de
passwords, consolas desde la que se permite login como root, en que archivo se fijan diversas variables de
entorno, valor inicial para el PATH (ruta de búsqueda de archivos), carácter de borrado, registro de entradas
correctas e intentos de entrada incorrectas, tiempo de espera tras cada login fallido, etc. Suele venir bien
comentado y con valores que no requieren cambios, pero es bueno darle una mirada al menos para estar al tanto
de estos valores. Aquí tenemos un ejemplo de este archivo:

        # *REQUIRED*
        # Directory where mailboxes reside, _or_ name of file, relative to the
        # home directory. If you _do_ define both, MAIL_DIR takes precedence.
        # QMAIL_DIR is for Qmail
        #
        #QMAIL_DIR Maildir
        MAIL_DIR /var/spool/mail
        #MAIL_FILE .mail
        # Password aging controls:
        #
        # PASS_MAX_DAYS Maximum number of days a password may be used.
        # PASS_MIN_DAYS Minimum number of days allowed between password changes.
        # PASS_MIN_LEN Minimum acceptable password length.
        # PASS_WARN_AGE Number of days warning given before a password expires.
                         Administración de Servidores.- Prof. Kramer Garay Gómez
Universidad Católica Los Ángeles Chimbote                                           Ingeniería de Sistemas
         #
         PASS_MAX_DAYS 99999
         PASS_MIN_DAYS 0
         PASS_MIN_LEN 5
         PASS_WARN_AGE 7
         #
         # Min/max values for automatic uid selection in useradd
         #
         UID_MIN 500
         UID_MAX 60000
         #
         # Min/max values for automatic gid selection in groupadd
         #
         GID_MIN 500
         GID_MAX 60000
         # If defined, this command is run when removing a user.
         # It should remove any at/cron/print jobs etc. owned by
         # the user to be removed (passed as the first argument).
         #
         #USERDEL_CMD /usr/sbin/userdel_local
         #
         # If useradd should create home directories for users by default
         # On RH systems, we do. This option is ORed with the -m flag on
         # useradd command line.
         #
         CREATE_HOME yes

         Nota: Existe la página man de este archivo. Podemos consultarlo con el comando man login.defs.

Borrar usuarios
De forma parecida, borrar usuarios puede hacerse con los comandos userdel o deluser dependiendo de que
software fuera instalado en el sistema. Para eliminar un usuario del sistema, debe ingresar:
         userdel [opciones] nombreUsuario

Un Ejemplo:
         # userdel ale             (Siendo ale el usuario que deseo eliminar.)

Este comando, al igual que la mayoría de los comandos Linux, soporta varias opciones. Si lo uso así, sin ningún
identificador, elimina al usuario del archivo /etc/passwd y también de /etc/shadow y /etc/group. A partir
de ese momento el usuario en cuestión ya no puede loguearse, es decir, que ya no puede entrar al sistema. El
usuario desaparece del sistema, pero no desaparecen su directorio de usuario ni su buzón de mensajes. Si quiero
que un usuario se vaya con todo su bagaje, debo usar:
         # userdel -r ale

Si se desea "deshabilitar" temporalmente un usuario para que no se conecte al sistema (sin borrar la cuenta del
usuario), se puede prefijar con un asterisco ("*") el campo de la clave en /etc/passwd. Por ejemplo,
cambiando la linea de /etc/passwd correspondiente al usuario ale:

         ale:*Xv8Q981g71oKK:102:100:Alejandra Garcia:/home/ale:/bin/bash

Esto evitará que ale se conecte.
Modificar atributos de usuario
Para modificar la información asociada con un usuario se utiliza el comando usermod. Su sintaxis es similar a la
del comando useradd. Por ejemplo si quisiéramos cambiar el intérprete de comandos del usuario agarcia,
deberíamos utilizar algo como esto:
         # usermod -s /bin/csh agarcia

El único cambio que se produciría en el archivo /etc/passwd, sería en su último campo, el relativo a la shell.

Si nuestra intención fuera modificar la fecha de expiración de la cuenta al día 9/12/2003 emplearíamos el
siguiente comando:
         # usermod -e 12/09/2003 agarcia
                    Administración de Servidores.- Prof. Kramer Garay Gómez                           Página 40
Universidad Católica Los Ángeles Chimbote                                           Ingeniería de Sistemas

        Nota: El formato de la fecha es MM/DD/YYYY En este caso el único fichero modificado sería el
        /etc/shadow.
Cambio de UID del usuario
        # usermod -u UID usuario

Cambio el default GID de cierto usuario .También podría poner un nombre de grupo.
        # usermod -g GID usuario

Otros comandos de usuario
id: Muestra el nombre y grupo del usuario en números (el UID y GID) y a que grupos pertenecen.
        id [opciones] [usuario]
Opciones:
        -u    Muestra solo el número de usuario.
        -g    Muestra solo el número de grupo.
        -G    Muestra solo los grupos al que pertenece ese usuario.
        [usuario]     es para ver la información de cierto usuario.

su: Sirve para loguearse como otro usuario.
         su [opciones] [usuario]
Opciones:
        -        Obtiene un login de ese usuario. Es igual que poner -l o -login.
        -c       Pasa un comando al shell con el usuario especificado.

                                   Nota: Restrinja los permisos de /bin/login y /bin/su. Vea más adelante
                                   para la explicación de por qué.

Aquí vemos un ejemplo de cómo debe hacerse. Antes de restringir su a un grupo privilegiado, primero debe
crear ese grupo con groupadd. Por ejemplo, "redes" es el nombre de grupo que voy a utilizar. Asegúrese de
añadir a su usuario o a cualquier usuario privilegiado al grupo "redes" creado. Ejecute los siguientes comandos:
        chmod 0700 /bin/login
        chgrp redes /bin/su
        chmod o-rx /bin/su

Grupos
El objetivo de los grupos es dar o restringir permisos sobre algunos archivos a ciertos usuarios (vea la siguiente
sección sobre Permisos en Unix). Por ejemplo un archivo apunte.txt que pertenezca al grupo profesores, que
tenga permiso de lectura para el grupo y no para otros usuarios, podrá ser leído únicamente por el dueño y por
usuarios que pertenezcan al grupo profesores. Cada usuario tiene un grupo principal (puede especificarse durante
la creación con la opción GID, -g nombregrupo de useradd), puede pertenecer a diversos grupos y si conoce
la clave de algún grupo con clave puede volverse miembro durante una sesión. Los programas relacionados con
grupos son:
         groupadd         Para agregar un grupo
         groupdel         Para borrar un grupo
         groupmod         Para modificar un grupo
         groupmod –n Cambiar el nombre de un Grupo
         groupmod –g Cambiar el nombre de un GID
         groups           Un usuario puede ver los grupos a los que pertenece con este programa
         newgrp           Para cambiarme a otro grupo (al que debo pertenecer, por supuesto)

Cuando un usuario pertenece a más de un grupo, al entrar el sistema siempre será asignado al que aparece en el
archivo /etc/passwd y para poderse cambiar a otro tendrá que hacerlo con el comando:
newgrp otro_grupo donde otro_grupo es otro de los grupos a los que pertenece.
El archivo /etc/group es el que contiene información acerca de los grupos. El formato de cada línea es:
        nombre_de_grupo:clave:GID:otros miembros
El campo clave es la clave del grupo transformada con DES o MD5. Si el grupo tiene clave shadow en este
archivo aparecerá el carácter 'x' y la clave transformada estará en otro archivo (por defecto /etc/gshadow).


                   Administración de Servidores.- Prof. Kramer Garay Gómez                             Página 41
Universidad Católica Los Ángeles Chimbote                                           Ingeniería de Sistemas
Algunos ejemplos de grupos pueden ser:
        root:*:0:
        usuarios:*:100:alexa,pepe,cor
        invitados:*:200:
        otros:*:250:sauron

El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root. El siguiente grupo,
usuarios, es para usuarios normales. Tiene un GID de 100. Los usuarios alexa, pepe y cor tienen acceso a
este grupo. Recuerde que en /etc/passwd cada usuario tiene un GID por defecto. Sin embargo, los usuarios
pueden pertenecer a más de un grupo, añadiendo sus nombres de usuario a otras líneas de grupo en
/etc/group. El comando groups lista a qué grupos se tiene acceso. El tercer grupo, invitados, es para
usuarios invitados, y otros es para "otros" usuarios. El usuario sauron tiene acceso a este grupo.
Como se puede ver, el campo clave de /etc/group raramente se utiliza. A veces se utiliza para dar una clave
para acceder a un grupo. Pocas veces esto es necesario. Para evitar que los usuarios cambien a grupos
privilegiados (con el comando newgrp), se pone el campo de la clave a "*".
No es recomendable editar directamente estos archivos, sino más bien emplear los programas presentados en esta
sección. Como hemos citado anteriormente, cada usuario pertenece a uno o más grupos. La única importancia
real de las relaciones de grupo es la perteneciente a los permisos de archivos. Cada archivo tiene un grupo
propietario y un conjunto de permisos de grupo que define de que forma pueden acceder al archivo los usuarios
del grupo.
Hay varios grupos definidos en el sistema, como pueden ser bin, mail, y sys. Los usuarios no deben pertenecer
a ninguno de estos grupos; se utilizan para permisos de archivos del sistema. En su lugar, los usuarios deben
pertenecer a un grupo individual, como usuarios. Si quiere ser detallista, se pueden mantener varios grupos de
usuarios como por ejemplo estudiantes, soporte y facultad.
Se pueden usar los comandos addgroup o groupadd para añadir grupos a su sistema. Normalmente es más
sencillo añadir líneas a /etc/group uno mismo, puesto que no se necesitan más configuraciones para añadir un
grupo. Para borrar un grupo, solo hay que borrar su entrada de /etc/group.
             Nota: Verifique que en el archivo /etc/passwd no haya usuarios perteneciendo a ese grupo que va a
             eliminar.

Ejemplo:
        contable::101:cguerra,jpaz
        personal::102:agarcia,jpaz

Aquí, se han creado los grupos contable, con identificador de grupo 101 y personal, con GID 102. Los
miembros del grupo personal son los usuarios agarcia y jpaz, si por alguna razón quiere integrar otro usuario
en cualquier grupo, solo agregue una coma después del último miembro y escriba el nombre_de_usuario que le
corresponda. Es conveniente indicar que si en el sistema de archivos se encuentra un directorio como:

        drwxrwx---      2 root personal        1024 Abr 29 11:32 confidencial/

entonces sólo: root, agarcia y jpaz tendrán acceso a él.




                  Administración de Servidores.- Prof. Kramer Garay Gómez                              Página 42
Universidad Católica Los Ángeles Chimbote                                          Ingeniería de Sistemas
Permisos
Haga un listado largo de cualquier directorio y vera algo como lo siguiente:
        [alexa@linux]$       ls -la
        total 13
        drwxr-sr-x   2       alexa       user            1024   May   2 09:04 .
        drwxrwsr-x   4       root        staff           1024   Apr   17 21:08 ..
        -rw-------   1       alexa       user            2541   May   2 22:04 .bash_history
        -rw-r--r--   1       alexa       user             164   Apr   23 14:57 .bash_profile
        -rw-r--r--   1       alexa       user              55   Apr   23 14:44 .bashrc
        -rwxrwxr-x   1       alexa       user               0   Apr   14 19:29 a.out
        -rwxrwxr-x   1       alexa       user              40   Apr   30 12:14 hola.pl
        -r--------   1       alexa       user              64   Apr   29 14:04 hola
        -rwxrw-r--   1       alexa       user             902   Apr   29 13:57 prueba
        -rw-rw-r--   1       alexa       user              50   Apr   30 12:31 probador
        -rwxrwxr-x   1       alexa       user             175   Apr   30 12:30 prue.sh
        -rwxrwxr-x   1       alexa       user              56   Apr   23 15:08 quetal.sh

Como se puede apreciar en este listado, también están el directorio actual, representado por un punto "." y el
directorio padre representado por dos puntos "..". Ellos también poseen permisos y atributos que son
mostrados.
El primer campo que aparece en el listado es la máscara de permisos. Vamos a explicar qué significa esta
máscara de 10 bits.




Esta máscara de 10 dígitos la puedo dividir en partes para entender mejor. Veamos unas tablas que nos
esclarecerán un poco mas que significa cada uno de estos caracteres. Primero vamos a ver aquellos caracteres
que podrían aparecer en el primer bit, que en el ejemplo anterior podemos ver que es un guión, esto nos indica
que es un archivo común. La tabla siguiente explica el significado del primer símbolo de acuerdo al tipo de
archivo:




Los siguientes 9 bits se toman en grupos de tres y cada grupo pertenece a una clase de permisos. Nos quedan tres
grupos, entonces.
         Primer grupo         usuario dueño al que pertenece el archivo/directorio (u)
         Segundo grupo        grupo al que pertenece dicho archivo/directorio (g)
         Tercer grupo         todos los demás usuarios del sistema (o)




                   Administración de Servidores.- Prof. Kramer Garay Gómez                            Página 43
Universidad Católica Los Ángeles Chimbote                                           Ingeniería de Sistemas
Los 3 tipos de permisos, tienen una correspondencia numérica.
         r (en octal 4)    lee (read) archivo o directorio
         w (en octal 2) modifica/borra (write) archivo o directorio
         x (en octal 1)    ejecuta (execute) archivo o busca el directorio
El dueño de un archivo controla que usuarios tienen permiso de acceso y de que manera pueden hacerlo; el
comando ls -l despliega los permisos de acceso asociados a un archivo, el primer campo de 10 caracteres
describe los permisos asociados con ese archivo, un campo típico se ilustra a continuación :
        -rwxrw-r-- 1 alexa user 902 Apr 29 13:57 prueba

El primer símbolo nos esta indicando que el archivo es un archivo común, generalmente de texto. El primer
grupo de tres símbolos representa los permisos para el dueño del archivo (owner) que en este caso posee
permisos de lectura, escritura y ejecución. El segundo grupo de tres símbolos representa los permisos para el
grupo al cual pertenece el archivo (group), que en este caso tienen permisos de lectura y escritura. El tercer
grupo de tres símbolos representa los permisos para todo el resto de los usuarios (other), en este caso es solo de
lectura. El numero que sigue (1) representa el numero de punteros o inodos que el archivo posee. Esto representa
la cantidad de enlaces que existen a este archivo y no interesa demasiado en este momento. A continuación está
el nombre del dueño del archivo y del grupo al cual pertenece el archivo. El "902" representa el tamaño del
archivo expresado en bytes. Lo siguiente es la fecha y hora de modificación del archivo e inmediatamente
después está el nombre del mismo.
Para comprender exactamente la máscara de permisos en formato numérico veamos la siguiente tabla, donde
tenemos la correspondencia de cada permiso con la numeración en octal y en binario.
Todo esto nos será útil cuando queramos cambiar atributos de un determinado archivo o directorio. Por ejemplo
para sacar permisos de lectura a los usuarios en archivos de configuración de un servidor.
            Octal          Binario
          Número           Número              Permisos       Descripción
              0              000                  ---         Ningún permiso garantizado
              1              001                  --x         Ejecutable
              2              010                  -w-         Modificable
              3              011                  -wx         Modificable/Ejecutable
              4              100                  r--         Legible
              5              101                  r-x         Legible/Ejecutable
              6              110                  rw-         Legible/Modificable
              7              111                  rwx         Legible/Modificable/Ejecutable
Los permisos para estos 3 tipos de usuarios puede estar dado por una cadena de 9 caracteres.
Veamos estos ejemplos:
            Octal           Dueño               Grupo                 Otros                Completo
          Número          Columna              Columna              Columna                 Código
           777               rwx                 rwx                  rwx                rwxrwxrwx
           755               rwx                 r-x                  r-x                rwxr-xr-x
           700               rwx                 ---                  ---                rwx------
           666               rw-                 rw-                  rw-                rw-rw-rw-
Veamos unos detalles más
Permisos:        Son bits que definen el acceso a un fichero o directorio. Los permisos para directorio tienen un
                 sentido diferente a los permisos para archivos. Más abajo se explican algunas diferencias.
   Lectura (r):    Archivo:        Poder acceder a los contenidos de un archivo
                   Directorio:     Poder leer un directorio, ver qué ficheros contiene
   Escritura (w): Archivo:         Poder modificar o añadir contenido a un archivo
                   Directorio:     Poder borrar o mover ficheros en un directorio
   Ejecución(x): Archivo:          Poder ejecutar un programa binario o guión de shell
                   Directorio:     Poder entrar en un directorio

                   Nota: Tenga mucho cuidado con aquellos directorios que tengan permiso de escritura.
                   Cualquiera podría borrar un archivo, aunque no sea de su propiedad y esto puede ser un
                   riesgo, tanto para el sistema como para los datos de los usuarios.

Comando chmod
Para cambiar la máscara de permisos de un archivo o directorio, usamos el comando chmod. La sintaxis de este
comando es la siguiente:
        chmod [permisos] archivo


                   Administración de Servidores.- Prof. Kramer Garay Gómez                             Página 44
Universidad Católica Los Ángeles Chimbote                                           Ingeniería de Sistemas
[permisos] puede estar en formato numérico, o en formato alfabético. El formato numérico es el que ya vimos,
los tres números en octal. El formato alfabético contiene los tipos de permisos en letras (r,w,x), en vez de
números y tengo que especificar a quien o quienes se lo voy a aplicar (u,g,o).
Sería así:        con letras       [ugo][+-=][rwx]
                  con números      [0-7][0-7][0-7]
El método para cambiar un permiso con letras es el siguiente : Las letras u, g y o representan el Usuario, el
Grupo, y Otros (todos los demás). El signo + significa que el permiso se va a conceder, mientras que el signo -
significa que el permiso se va a revocar. El signo = significa que se instalen los permisos como se muestra a
continuación, algunos ejemplos de cambio de permisos son:
        $ chmod u+x,g-w,o-w archivo1
        $ chmod u=rx archivo1
El segundo método interpreta el número puesto como su equivalente en binario (nueve dígitos binarios),
activando el permiso donde se haya puesto un 1 y desactivándolo donde se haya puesto un 0; por ejemplo:
        $ chmod 755 archivo1
Significa que a archivo1 se le asignaron permisos de la siguiente manera:
         7   5   5
        111 101 101
        rwx r-x r-x


Ejercicio:
Veamos la máscara de permisos de un archivo llamado estudio:
        $ ls -l estudio
        -rw-rw-r--   1 alexa alexa            57 May     5 16:47     estudio

El siguiente comando elimina todos los permisos de acceso para el grupo y el resto de usuarios:
        $ chmod go-rw estudio
        $ ls -l estudio
        -rw-------   1 alexa alexa             57 May     5 16:47     estudio

El administrador puede cambiar los permisos de todos los archivos del sistema y puede fijar una política inicial
para la máscara de permisos que todos los usuarios tendrán.

Comando chgrp
Además de chmod se emplean los siguientes programas para realizar estas labores:
        chgrp grupo archivos
Cambia el grupo de el o los archivos especificados. Por ejemplo:
        # chgrp profesores notas* tps*
cambiará todos los archivos con prefijos notas y tps al grupo profesores. Como opción puede recibir -R
para aplicar el cambio recursivamente en un directorio (es decir a subdirectorios también). Este programa puede
ser usado por cualquier usuario para cambiar el grupo de sus archivos a otro grupo al que el mismo usuario
pertenezca.

Comando chown
Cambia el usuario (y opcionalmente el grupo) de los archivos especificados.
        chown usuario[:grupo] archivos
Al igual que chgrp con la opción -R efectúa el cambio recursivamente en subdirectorios. Por ejemplo
        # chown -R ale:administra tpgnutella/
Pondrá al usuario ale como dueño de todos los archivos y subdirectorios del directorio tpgnutella, todos
quedarán con el grupo administra. También puede usarse para cambiar el grupo de un archivo (si no se
especifica el nombre del usuario).

Además tenemos otros bits de permisos que no podemos pasar por alto cuando estamos tratando de temas de
seguridad.
Sticky bit
El sticky bit tiene significado cuando se aplica a directorios. Si el sticky bit está activo en un directorio, un
usuario sólo puede borrar archivos que son de su propiedad o para los que tiene permiso de escritura, incluso
cuando tiene acceso de escritura al directorio. En un directorio evita que un usuario que no sea el dueño del
directorio pero que tenga permiso de escritura, pueda borrar o renombrar archivos que no le pertenecen.


                   Administración de Servidores.- Prof. Kramer Garay Gómez                             Página 45
Universidad Católica Los Ángeles Chimbote                                              Ingeniería de Sistemas
Esto está pensado para directorios como /tmp, que tienen permiso de escritura global, pero no es deseable
permitir a cualquier usuario borrar los archivos que quiera. El sticky bit aparece como 't' en los listados largos de
directorios. O sea cuando se hace un ls –l veremos:

         drwxrwxrwt 19 root root 8192 Jun 20 11:40 tmp

Atributo SUID: (Para Archivos)
Este bit describe permisos al usuario del archivo. Cuando el atributo SUID (poner id de usuario) está activo en
los permisos del propietario, y ese archivo es ejecutable, los procesos que lo ejecutan obtienen acceso a los
recursos del sistema basados en el usuario que crea el proceso (no el usuario que lo lanza).
Resumiendo esta explicación, podemos decir: el bit SUID empleado con archivos ejecutables cambia la
identificación del usuario por la del dueño del archivo.
Por ejemplo: /usr/bin/passwd es un ejecutable propiedad de root y con el bit SUID activo. ¿Por qué?
Este programa lo puede usar cualquier usuario para modificar su clave de acceso, que se almacena en
         -rw-r--r-- 1 root root 1265 Jun 29 19:41 /etc/passwd
pero según los permisos que vemos en este archivo, sólo root puede escribir y modificarlo. Entonces sería
imposible que cualquier usuario pudiera cambiar su clave si no puede modificar este archivo. La solución para
este problema consiste en activar el bit SUID para este archivo:
         -r-s--x--x 1 root root 10704 Apr 19 13:15 /usr/bin/passwd
Entonces, cuando se ejecute, el proceso generado por él es un proceso propiedad de root con todos los
privilegios que ello acarrea. Esto puede ser un riesgo para la seguridad. Por tal razón debemos prestar atención,
ya que en este tipo de programas se pueden producir buffer overflow, que comprometan el sistema. Este permiso
puede ser útil para que usuarios normales ejecuten programas que requieren ser ejecutados por root y por lo
mismo debe usarse con precaución. Con chmod se modifica empleando u y s. Por Ejemplo:
         $ chmod u+s cvs

Esto indica que cuando el programa cvs se ejecute, debe cambiarse la identificación por la del dueño de ese
programa.
Consejos:
    • Asignar el bit SUID solo cuando sea estrictamente necesario.
    • Comprobar que los programas con este bit activo no tiene ningún desbordamiento de buffer (conocido).
    • Jamás asignarlo si el programa permite salir a la shell.

Atributo SGID: (Para archivos)
Si está activo en los permisos de grupo, este bit controla el estado de "poner id de grupo" de un archivo. Trabaja
como SUID, pero, en vez de aplicarse al usuario, se aplica al grupo. El archivo tiene que ser ejecutable para que
esto tenga algún efecto. Se establece con g y s. Por Ejemplo
         $ chmod g+s cvs

Atributo SGID: (Para directorios)
Si activa el bit SGID en un directorio, los archivos creados en ese directorio tendrán puesto su grupo como el
grupo del directorio. Los ficheros de configuración del sistema (normalmente en /etc) es habitual que tengan el
modo 640 (-rw-r-----), y que sean propiedad de root. Dependiendo de los requisitos de seguridad del
sistema, esto se puede modificar. Nunca deje un fichero del sistema con permiso de escritura para un grupo o
para otros. Algunos ficheros de configuración, incluyendo /etc/shadow, sólo deberían tener permiso de lectura
para root, y los directorios de /etc no deberían ser accesibles, al menos por otros.

SUID Shell Scripts
Los scripts de shell SUID son un serio riesgo de seguridad, y por esta razón el núcleo no los acepta. Sin importar
lo seguro que piense que es su script de shell, puede ser utilizado para que un cracker pueda obtener acceso a
una shell de root.




                    Administración de Servidores.- Prof. Kramer Garay Gómez                               Página 46

Más contenido relacionado

La actualidad más candente

Comandos linux-para-gestiocc81n-de-usuarios-y-grupos1
Comandos linux-para-gestiocc81n-de-usuarios-y-grupos1Comandos linux-para-gestiocc81n-de-usuarios-y-grupos1
Comandos linux-para-gestiocc81n-de-usuarios-y-grupos1
Aljirio Tapia Carrasco
 

La actualidad más candente (18)

2.9. conceptos de usuarios grupos y admin de permisos
2.9. conceptos de usuarios grupos y admin de permisos   2.9. conceptos de usuarios grupos y admin de permisos
2.9. conceptos de usuarios grupos y admin de permisos
 
Usuarios y grupos Linux
Usuarios y grupos LinuxUsuarios y grupos Linux
Usuarios y grupos Linux
 
Linux usuarios (2)
Linux usuarios (2)Linux usuarios (2)
Linux usuarios (2)
 
GESTIÓN DE USUARIOS
GESTIÓN DE USUARIOSGESTIÓN DE USUARIOS
GESTIÓN DE USUARIOS
 
RESUME SOBRE LA TERMINAL DE UBUNTU
RESUME SOBRE LA TERMINAL DE UBUNTU RESUME SOBRE LA TERMINAL DE UBUNTU
RESUME SOBRE LA TERMINAL DE UBUNTU
 
Comandos linux-para-gestiocc81n-de-usuarios-y-grupos1
Comandos linux-para-gestiocc81n-de-usuarios-y-grupos1Comandos linux-para-gestiocc81n-de-usuarios-y-grupos1
Comandos linux-para-gestiocc81n-de-usuarios-y-grupos1
 
Apuntes de-linux-8-nov-16-3
Apuntes de-linux-8-nov-16-3Apuntes de-linux-8-nov-16-3
Apuntes de-linux-8-nov-16-3
 
Semana 16 usuarios_y_grupos
Semana 16 usuarios_y_gruposSemana 16 usuarios_y_grupos
Semana 16 usuarios_y_grupos
 
Usuarios grupospermisos
Usuarios grupospermisosUsuarios grupospermisos
Usuarios grupospermisos
 
Administracion de Sistemas
Administracion de SistemasAdministracion de Sistemas
Administracion de Sistemas
 
Archivos de usuarios y grupos
Archivos de usuarios y gruposArchivos de usuarios y grupos
Archivos de usuarios y grupos
 
Tallerlinuxfin
TallerlinuxfinTallerlinuxfin
Tallerlinuxfin
 
19 usuarios gruposlinuxasoitson
19 usuarios gruposlinuxasoitson19 usuarios gruposlinuxasoitson
19 usuarios gruposlinuxasoitson
 
Consola 2
Consola 2Consola 2
Consola 2
 
Apuntes de linux 8 nov 16 1
Apuntes de linux  8 nov 16 1Apuntes de linux  8 nov 16 1
Apuntes de linux 8 nov 16 1
 
330884555 apuntes-de-linux-8-nov-16
330884555 apuntes-de-linux-8-nov-16330884555 apuntes-de-linux-8-nov-16
330884555 apuntes-de-linux-8-nov-16
 
Linux segundo hemi
Linux segundo hemiLinux segundo hemi
Linux segundo hemi
 
Apuntes de linux
Apuntes de linux Apuntes de linux
Apuntes de linux
 

Similar a Administración de Usuarios, Grupos y Permisos

Linux ud5 - gestion de usuarios
Linux   ud5 - gestion de usuariosLinux   ud5 - gestion de usuarios
Linux ud5 - gestion de usuarios
Javier Muñoz
 
3 users and groups
3   users and groups3   users and groups
3 users and groups
yimfer1
 
3 users and groups
3   users and groups3   users and groups
3 users and groups
cyberleon95
 
Definición de cuentas de usuario
Definición de cuentas de usuarioDefinición de cuentas de usuario
Definición de cuentas de usuario
Maribel Cm
 
Semana 16 usuarios y grupos
Semana 16 usuarios y gruposSemana 16 usuarios y grupos
Semana 16 usuarios y grupos
victdiazm
 
Administración de usuarios y grupos redes linux
Administración de usuarios y grupos   redes linuxAdministración de usuarios y grupos   redes linux
Administración de usuarios y grupos redes linux
Fernando Sorto
 
Administración de usuarios y grupos redes linux
Administración de usuarios y grupos   redes linuxAdministración de usuarios y grupos   redes linux
Administración de usuarios y grupos redes linux
Raul Hernandez
 
Cuentas usuarios grupos LINUX
Cuentas usuarios grupos LINUXCuentas usuarios grupos LINUX
Cuentas usuarios grupos LINUX
juanhuapaya
 

Similar a Administración de Usuarios, Grupos y Permisos (20)

Guia4 Gestion de Usuarios y Grupos
Guia4 Gestion de Usuarios  y GruposGuia4 Gestion de Usuarios  y Grupos
Guia4 Gestion de Usuarios y Grupos
 
Linux ud5 - gestion de usuarios
Linux   ud5 - gestion de usuariosLinux   ud5 - gestion de usuarios
Linux ud5 - gestion de usuarios
 
Administración de Sistemas
Administración de SistemasAdministración de Sistemas
Administración de Sistemas
 
Victor Martínez
Victor Martínez Victor Martínez
Victor Martínez
 
3 users and groups
3   users and groups3   users and groups
3 users and groups
 
3 users and groups
3   users and groups3   users and groups
3 users and groups
 
3 users and groups
3   users and groups3   users and groups
3 users and groups
 
ADMINISTRACION DE USUARIOS Y GRUPOS
ADMINISTRACION DE USUARIOS Y GRUPOSADMINISTRACION DE USUARIOS Y GRUPOS
ADMINISTRACION DE USUARIOS Y GRUPOS
 
Definición de cuentas de usuario
Definición de cuentas de usuarioDefinición de cuentas de usuario
Definición de cuentas de usuario
 
ADMINISTRACIÓN DE USUARIOS Y GRUPOS
ADMINISTRACIÓN DE USUARIOS Y GRUPOSADMINISTRACIÓN DE USUARIOS Y GRUPOS
ADMINISTRACIÓN DE USUARIOS Y GRUPOS
 
Unidad 10 - Puesta en marcha del sistema
Unidad 10 - Puesta en marcha del sistemaUnidad 10 - Puesta en marcha del sistema
Unidad 10 - Puesta en marcha del sistema
 
Administracion y comanados basicos Arq del computador
Administracion y comanados basicos Arq del computadorAdministracion y comanados basicos Arq del computador
Administracion y comanados basicos Arq del computador
 
Semana 16 usuarios y grupos
Semana 16 usuarios y gruposSemana 16 usuarios y grupos
Semana 16 usuarios y grupos
 
19 usuarios gruposlinuxasoitsonp
19 usuarios gruposlinuxasoitsonp19 usuarios gruposlinuxasoitsonp
19 usuarios gruposlinuxasoitsonp
 
UT3.SIMM
UT3.SIMMUT3.SIMM
UT3.SIMM
 
UT1.3. SIMM
UT1.3. SIMMUT1.3. SIMM
UT1.3. SIMM
 
Administración de usuarios y grupos redes linux
Administración de usuarios y grupos   redes linuxAdministración de usuarios y grupos   redes linux
Administración de usuarios y grupos redes linux
 
Administración de usuarios y grupos redes linux
Administración de usuarios y grupos   redes linuxAdministración de usuarios y grupos   redes linux
Administración de usuarios y grupos redes linux
 
Cuentas usuarios grupos LINUX
Cuentas usuarios grupos LINUXCuentas usuarios grupos LINUX
Cuentas usuarios grupos LINUX
 
Linux02
Linux02Linux02
Linux02
 

Más de Kramer Garay Gómez (12)

Práctica calificada 2
Práctica calificada 2Práctica calificada 2
Práctica calificada 2
 
Servidor de autenticación con OpenLDAP en CentOS
Servidor de autenticación con OpenLDAP en CentOSServidor de autenticación con OpenLDAP en CentOS
Servidor de autenticación con OpenLDAP en CentOS
 
Servidor de mensajería
Servidor de mensajeríaServidor de mensajería
Servidor de mensajería
 
Servidor LAMP en CentOS 6.3
Servidor LAMP en CentOS 6.3Servidor LAMP en CentOS 6.3
Servidor LAMP en CentOS 6.3
 
ejercicios1so
ejercicios1soejercicios1so
ejercicios1so
 
Ejercicios2SO
Ejercicios2SOEjercicios2SO
Ejercicios2SO
 
Configuración del Kernel en CenOS
Configuración del Kernel en CenOSConfiguración del Kernel en CenOS
Configuración del Kernel en CenOS
 
Configuración de parametros de red
Configuración de parametros de redConfiguración de parametros de red
Configuración de parametros de red
 
Instalalación de CentOS
Instalalación de CentOSInstalalación de CentOS
Instalalación de CentOS
 
Particiones
ParticionesParticiones
Particiones
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Guia apoyo sgsi
Guia apoyo sgsiGuia apoyo sgsi
Guia apoyo sgsi
 

Administración de Usuarios, Grupos y Permisos

  • 1. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas Administración de Usuarios Linux es un sistema operativo multiusuario, por lo tanto el administrador del sistema, que puede ser root o algun otro usuario con nivel de administrador, tiene que asignar un nombre de usuario (login) y una contraseña (password) a los usuarios para que puedan empezar a trabajar. Cada usuario, tiene su propio login y su propia password para acceder al sistema. Esto permite prevenir que otro usuario utilice un login que no le corresponde, pues es secreto. El archivo donde están almacenados los passwords de los usuarios es /etc/passwd. Para que un password sea válido debe contener como mínimo 6 caracteres, y el primero debe ser alfabético; pero únicamente los 8 primeros son significativos. El password puede contener letras en mayúsculas o minúsculas, caracteres numéricos y caracteres especiales. Para crear un nuevo password o cambiar uno ya existente se utiliza el comando passwd, cuya sintaxis es: # passwd [NombreUsuario] El archivo de Passwords Linux guarda la información de todos los usuarios junto con sus passwords (lógicamente cifrados) en un archivo. Es el archivo passwd, dentro del directorio /etc. Es muy simple en Linux leer este archivo, ya que es accesible a cualquier usuario. Tiene la siguiente forma: ale:heJuwMrBVa6mg:1001:202:Alejandra Garcia:/home/ale:/bin/sh pepe:GezuA6krN/BsE:1002:202:Jose Alvarez:/home/pepe:/bin/sh juan:ze7EPYLjRYX9I:1003:202:Juan Jose Cao:/home/juan:/bin/ksh Vamos a ver qué significa todo esto. Podemos decir que el formato de cada línea es: campo1:campo2:campo3:campo4:campo5:campo6:campo7 donde: campo1) login del usuario campo2) password encriptado campo3) número UID (identificación de usuario) campo4) número GID (identificación de grupo) campo5) datos del usuario campo6) directorio de trabajo campo7) directorio del shell Nota: Los usuarios tienen su número de usuario (UID), también tienen un número de grupo (GID). Cada usuario debe pertenecer a un grupo. Los grupos están numerados en el archivo /etc/group. Como el archivo passwd es accesible por cualquier usuario, lo que siempre se hace es activar el shadow. ¿Recuerda, cuando instalamos que en una de las pantallas de instalación nos permitía habilitar MD5 y shadow?. Bueno, es el mismo shadow. Shadow quiere decir sombra en inglés, lo puedo asociar a ocultar o esconder. El archivo shadow también se encuentra dentro del directorio /etc, y a diferencia de passwd, éste no es visible para cualquier usuario. Compruébelo en su sistema logueándose como un usuario cualquiera y verá que no le da permiso de lectura. Este archivo no puede ser accedido por cualquier usuario, sólo el superusuario o root tiene permiso de acceder a él. Veamos como es este caso, en donde el archivo de passwords está protegido con el archivo shadow. El archivo shadow es el que contiene las contraseñas encriptadas, y el archivo passwd, en el campo que antes guardaba las contraseñas, ahora tiene una X, significando esto que, este usuario tiene una contraseña, es una marca. La contraseña no está aquí. Administración de Servidores.- Prof. Kramer Garay Gómez
  • 2. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas Ejemplo ale:heJuwMrBVa6mg:11750:0:99999:7:-1:-1:134529868 Esta es una línea del archivo shadow. Vamos a ver ahora el significado de cada campo. campo1) Nombre de usuario campo2) Contraseña encriptada campo3) Cantidad de días desde el 1/1/1970 que se habilitó la contraseña campo4) Cantidad de días antes de cambiar la contraseña campo5) Cantidad de días después, que se debe cambiar la contraseña campo6) Cantidad de días antes de que expire la contraseña, y avisa al usuario campo7) Cantidad de días después de que expire la contraseña, y se inhabilita la cuenta. campo8) Cantidad de días después, desde 1/1/1970, que la cuenta está deshabilitada. campo9) Campo reservado Nota: Los campos que contienen un –1, significa, que la cantidad de días es infinita. Crear Usuarios El comando para agregar un usuario es: useradd [opciones] <NombreUsuario> useradd NombreUsuario Esta es la forma más simple del comando useradd. Como la mayoría de los comandos en Linux, se puede usar con varios identificadores, las opciones más usuales del comando useradd son: -c comentario para especificar un comentario para la nueva cuenta. -d directoriodeusuario para establecer el directorio de trabajo del usuario. Es conveniente, a fin de tener un sistema bien organizado, que este se localice dentro del directorio /home. -e fechaexpiracion para establecer la fecha de expiración de la cuenta de usuario. Esta debe ingresarse en el siguiente formato: AAAA-MM-DD. -g grupoinicial para establecer el grupo inicial al que pertenecerá el usuario. De forma predeterminada se establece como único grupo. Nota: El grupo asignado ya debe existir. -G grupo1,grupo2 para establecer grupos extra a los que pertenecerá el usuario. Se deben separar utilizando una coma y sin espacios. Esto es muy conveniente cuando se desea que el usuario tenga acceso a determinados recursos del sistema, como acceso a la unidad de disquetes, administración de cuentas PPP y POP. Nota: los grupos asignados deben existir. -m para especificar que el directorio de trabajo del usuario debe ser creado , y dentro se copiarán los archivos especificados en /etc/skel. Para cambiar esto, hay que completar la opción -m con –k <nuevodirskel> donde nuevodirskel es la carpeta de la cual se sacarán los perfiles de usuario. -s shell Se utiliza para establecer la shell que podrá utilizar el usuario. De forma predeterminada, se establece bash como shell predeterminado. -u uid Se utiliza para establecer el UID, es decir, la ID del usuario, el número de identificación de usuario. Este debe ser único. Cuando se crea una cuenta de usuario por primera vez, generalmente se asignará 500 como UID del usuario. Los UID entre 0 y 99 son reservados para las cuentas de los servicios del sistema. Administración de Servidores.- Prof. Kramer Garay Gómez
  • 3. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas Ejemplo: # useradd -u 500 -d /home/alexa -G floppy,pppusers,popusers alexa Nota: No crea el directorio de usuario /home/alexa . Debe existir con anterioridad Esto creará una cuenta de usuario llamada alexa, que se encuentra incluida en los grupos floppy, pppusers y popusers, que tendrá un UID=500 y tendrá un directorio de trabajo en /home/alexa. Otro ejemplo: # useradd -m –s /bin/bash jjlopez Aquí crearé un usuario jjlopez con su directorio de usuario /home/jjlopez y usará bash como shell. Existen más opciones y comentarios adicionales para el comando useradd, estas se encuentran especificadas en los manuales, las páginas man. Para acceder a esta información, utilice el comando man useradd. Nota: Este comando lo usa solamente root En el caso de saltar todas estas opciones, useradd va a tomar las opciones por default desde un archivo: /etc/default/useradd en caso de Redhat /etc/adduser.conf en caso de Debian Otra forma de crear usuarios es directamente, agregar la entrada en /etc/passwd. Edite este archivo y agréguelo a mano. Tenga cuidado, no repita un nombre de usuario. Los nombres de usuario y UID deben ser únicos. Se debe especificar el GID, nombre completo y resto de información. Se debe crear el directorio inicial (/home/usuario, por ejemplo), y poner los permisos en el directorio para que el usuario sea el dueño. Se deben suministrar archivos de comandos de inicialización en el nuevo directorio y se debe hacer alguna otra configuración del sistema (por ejemplo, preparar un buzón para el correo electrónico entrante para el nuevo usuario en /var/spool/mail). Todo esto es lo que hace el comando useradd o adduser dependiendo del software que esté instalado. El programa /usr/sbin/useradd usa una serie de valores por defecto. Los leerá del archivo /etc/default/useradd, si este existe. Si no existe, entonces utiliza algunos valores internos por defecto, que pueden verse ejecutando /usr/sbin/useradd -D. Vamos a ver que contiene el archivo /etc/default/useradd: GROUP=100 Grupo de usuario cuando se utilice useradd -n. Sino en RedHat®, el número 100 significa que se creará un GID igual al UID, si no se indica lo contrario. HOME=/home Donde se guardarán los directorios de todos los usuarios INACTIVE=-1 Número de días a los cuales se volverá inactiva la cuenta del usuario, contadas a partir del día del desactivamiento EXPIRE= Día en el que será desactivada la cuenta SHELL=/bin/bash El shell por defecto para el usuario SKEL=/etc/skel Lugar de donde se deben copiar archivos al nuevo directorio del usuario Ejemplo: # cat /etc/default/useradd GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel Si estas opciones no son de nuestro agrado debemos cambiarlas por los valores que consideremos oportunos. Si por ejemplo preferimos que el grupo por defecto sea el 100, que el password expire a fin de año, no queremos bloquear una cuenta debido a que haya expirado el password y deseamos como shell por defecto /bin/bash, utilizaríamos la siguiente orden: # useradd -D -g100 –e2006-12-31 -f0 -s/bin/bash Administración de Servidores.- Prof. Kramer Garay Gómez
  • 4. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas Estos valores serán almacenados por defecto en el fichero /etc/default/useradd. Nota: El archivo /etc/default/useradd se puede abrir con un editor de texto y corregirlo, en vez Entonces, si ahora creo un usuario de esta forma: de usar # useradd -m -c "Usuario Invitado" invitado el comand Esto creará una entrada en el fichero /etc/passwd con el siguiente formato: o invitado:x:505:100:Usuario Invitado:/home/invitado:/bin/bash anterior. Pero también creará una entrada en el fichero /etc/shadow con el siguiente formato: invitado:!:0:0:60:0:0:0:0 Además se creará el directorio de usuario (home directory) y los contenidos de /etc/skel serán copiados en él. Como no especifiqué un UID para el usuario, el sistema asumirá el siguiente que tenga disponible. La cuenta del usuario invitado ha sido creada, pero todavía no está disponible ya que no se le ha definido una contraseña. Para establecer la contraseña hacemos lo siguiente: # passwd invitado Changing password for user invitado New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully Veamos un ejemplo de cambio de contraseña: # passwd alexa Cambiará la clave de alexa. Solo root puede cambiar la clave de otro usuario de esta forma. Cada usuario puede cambiar su propia clave con passwd también. Nota: ¡Cuidado! Si esta logueado como root, y al usar el comando passwd, se olvida de poner el nombre de usuario al que le desea cambiar la contraseña, lo que sucederá es cambiar su propia contraseña (la del usuario root). El comando adduser que se utiliza en Debian o derivados, toma las opciones por defecto que están configuradas en el archivo /etc/adduser.conf. Veamos: # /etc/adduser.conf: `adduser' configuration. # See adduser(8) and adduser.conf(5) for full documentation. # The DSHELL variable specifies the default login shell on your # system. DSHELL=/bin/bash # The DHOME variable specifies the directory containing users' home # directories. DHOME=/home # If GROUPHOMES is "yes", then the home directories will be created as # /home/groupname/user. GROUPHOMES=no # If LETTERHOMES is "yes", then the created home directories will have # an extra directory - the first letter of the user name. For example: # /home/u/user. LETTERHOMES=no # The SKEL variable specifies the directory containing "skeletal" user # files; in other words, files such as a sample .profile that will be # copied to the new user's home directory when it is created. SKEL=/etc/skel # FIRST_SYSTEM_UID to LAST_SYSTEM_UID inclusive is the range for UIDs # for dynamically allocated administrative and system accounts. Administración de Servidores.- Prof. Kramer Garay Gómez
  • 5. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas FIRST_SYSTEM_UID=100 LAST_SYSTEM_UID=999 # FIRST_UID to LAST_UID inclusive is the range of UIDs of dynamically # allocated user accounts. FIRST_UID=1000 LAST_UID=29999 # The USERGROUPS variable can be either "yes" or "no". If "yes" each # created user will be given their own group to use as a default, and # their home directories will be g+s. If "no", each created user will # be placed in the group whose gid is USERS_GID (see below). USERGROUPS=no # If USERGROUPS is "no", then USERS_GID should be the GID of the group # `users' (or the equivalent group) on your system. USERS_GID=100 # If QUOTAUSER is set, a default quota will be set from that user with # `edquota -p QUOTAUSER newuser' QUOTAUSER="alexa" Otros archivos importantes para la administración de usuarios Cuando se agrega un usuario o grupo con los comandos useradd o groupadd respectivamente, el contenido de los siguientes archivos es de interés. Nota: Ya vimos el comando useradd. No se preocupe por groupadd, lo veremos después. /etc/skel es un directorio, contiene todos los archivos (ejemplo: .bash_logout, .bash_profile, .bash_profile.swp, .bashrc) u otros que serán colocados en el directorio de un usuario (home directory) al generar al usuario. El directorio /etc/skel es bastante simple de configurar y usar. Proporciona una forma de estar seguro de que todos los nuevos usuarios del sistema tienen la misma configuración inicial. El directorio /etc/skel es usado por el programa /usr/sbin/useradd. Para empezar, creamos un directorio /etc/skel. La mejor forma de hacerlo es como usuario root. Después copiamos en /etc/skel aquellos archivos que queremos que cada nuevo usuario tenga en su directorio home. Por ejemplo, .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc, y .vimrc. /etc/default/useradd ya lo explicamos en párrafos anteriores. /etc/login.defs (si se utilizan shadow passwords) especifica varios parámetros en la configuración del proceso de entrada al sistema (login), o “logueo”. Entre las opciones que podemos configurar en este archivo están: permisos de los usuarios para cambiar su información de usuario, temas relativos a la expiración de passwords, consolas desde la que se permite login como root, en que archivo se fijan diversas variables de entorno, valor inicial para el PATH (ruta de búsqueda de archivos), carácter de borrado, registro de entradas correctas e intentos de entrada incorrectas, tiempo de espera tras cada login fallido, etc. Suele venir bien comentado y con valores que no requieren cambios, pero es bueno darle una mirada al menos para estar al tanto de estos valores. Aquí tenemos un ejemplo de este archivo: # *REQUIRED* # Directory where mailboxes reside, _or_ name of file, relative to the # home directory. If you _do_ define both, MAIL_DIR takes precedence. # QMAIL_DIR is for Qmail # #QMAIL_DIR Maildir MAIL_DIR /var/spool/mail #MAIL_FILE .mail # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. Administración de Servidores.- Prof. Kramer Garay Gómez
  • 6. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas # PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PASS_MIN_LEN 5 PASS_WARN_AGE 7 # # Min/max values for automatic uid selection in useradd # UID_MIN 500 UID_MAX 60000 # # Min/max values for automatic gid selection in groupadd # GID_MIN 500 GID_MAX 60000 # If defined, this command is run when removing a user. # It should remove any at/cron/print jobs etc. owned by # the user to be removed (passed as the first argument). # #USERDEL_CMD /usr/sbin/userdel_local # # If useradd should create home directories for users by default # On RH systems, we do. This option is ORed with the -m flag on # useradd command line. # CREATE_HOME yes Nota: Existe la página man de este archivo. Podemos consultarlo con el comando man login.defs. Borrar usuarios De forma parecida, borrar usuarios puede hacerse con los comandos userdel o deluser dependiendo de que software fuera instalado en el sistema. Para eliminar un usuario del sistema, debe ingresar: userdel [opciones] nombreUsuario Un Ejemplo: # userdel ale (Siendo ale el usuario que deseo eliminar.) Este comando, al igual que la mayoría de los comandos Linux, soporta varias opciones. Si lo uso así, sin ningún identificador, elimina al usuario del archivo /etc/passwd y también de /etc/shadow y /etc/group. A partir de ese momento el usuario en cuestión ya no puede loguearse, es decir, que ya no puede entrar al sistema. El usuario desaparece del sistema, pero no desaparecen su directorio de usuario ni su buzón de mensajes. Si quiero que un usuario se vaya con todo su bagaje, debo usar: # userdel -r ale Si se desea "deshabilitar" temporalmente un usuario para que no se conecte al sistema (sin borrar la cuenta del usuario), se puede prefijar con un asterisco ("*") el campo de la clave en /etc/passwd. Por ejemplo, cambiando la linea de /etc/passwd correspondiente al usuario ale: ale:*Xv8Q981g71oKK:102:100:Alejandra Garcia:/home/ale:/bin/bash Esto evitará que ale se conecte. Modificar atributos de usuario Para modificar la información asociada con un usuario se utiliza el comando usermod. Su sintaxis es similar a la del comando useradd. Por ejemplo si quisiéramos cambiar el intérprete de comandos del usuario agarcia, deberíamos utilizar algo como esto: # usermod -s /bin/csh agarcia El único cambio que se produciría en el archivo /etc/passwd, sería en su último campo, el relativo a la shell. Si nuestra intención fuera modificar la fecha de expiración de la cuenta al día 9/12/2003 emplearíamos el siguiente comando: # usermod -e 12/09/2003 agarcia Administración de Servidores.- Prof. Kramer Garay Gómez Página 40
  • 7. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas Nota: El formato de la fecha es MM/DD/YYYY En este caso el único fichero modificado sería el /etc/shadow. Cambio de UID del usuario # usermod -u UID usuario Cambio el default GID de cierto usuario .También podría poner un nombre de grupo. # usermod -g GID usuario Otros comandos de usuario id: Muestra el nombre y grupo del usuario en números (el UID y GID) y a que grupos pertenecen. id [opciones] [usuario] Opciones: -u Muestra solo el número de usuario. -g Muestra solo el número de grupo. -G Muestra solo los grupos al que pertenece ese usuario. [usuario] es para ver la información de cierto usuario. su: Sirve para loguearse como otro usuario. su [opciones] [usuario] Opciones: - Obtiene un login de ese usuario. Es igual que poner -l o -login. -c Pasa un comando al shell con el usuario especificado. Nota: Restrinja los permisos de /bin/login y /bin/su. Vea más adelante para la explicación de por qué. Aquí vemos un ejemplo de cómo debe hacerse. Antes de restringir su a un grupo privilegiado, primero debe crear ese grupo con groupadd. Por ejemplo, "redes" es el nombre de grupo que voy a utilizar. Asegúrese de añadir a su usuario o a cualquier usuario privilegiado al grupo "redes" creado. Ejecute los siguientes comandos: chmod 0700 /bin/login chgrp redes /bin/su chmod o-rx /bin/su Grupos El objetivo de los grupos es dar o restringir permisos sobre algunos archivos a ciertos usuarios (vea la siguiente sección sobre Permisos en Unix). Por ejemplo un archivo apunte.txt que pertenezca al grupo profesores, que tenga permiso de lectura para el grupo y no para otros usuarios, podrá ser leído únicamente por el dueño y por usuarios que pertenezcan al grupo profesores. Cada usuario tiene un grupo principal (puede especificarse durante la creación con la opción GID, -g nombregrupo de useradd), puede pertenecer a diversos grupos y si conoce la clave de algún grupo con clave puede volverse miembro durante una sesión. Los programas relacionados con grupos son: groupadd Para agregar un grupo groupdel Para borrar un grupo groupmod Para modificar un grupo groupmod –n Cambiar el nombre de un Grupo groupmod –g Cambiar el nombre de un GID groups Un usuario puede ver los grupos a los que pertenece con este programa newgrp Para cambiarme a otro grupo (al que debo pertenecer, por supuesto) Cuando un usuario pertenece a más de un grupo, al entrar el sistema siempre será asignado al que aparece en el archivo /etc/passwd y para poderse cambiar a otro tendrá que hacerlo con el comando: newgrp otro_grupo donde otro_grupo es otro de los grupos a los que pertenece. El archivo /etc/group es el que contiene información acerca de los grupos. El formato de cada línea es: nombre_de_grupo:clave:GID:otros miembros El campo clave es la clave del grupo transformada con DES o MD5. Si el grupo tiene clave shadow en este archivo aparecerá el carácter 'x' y la clave transformada estará en otro archivo (por defecto /etc/gshadow). Administración de Servidores.- Prof. Kramer Garay Gómez Página 41
  • 8. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas Algunos ejemplos de grupos pueden ser: root:*:0: usuarios:*:100:alexa,pepe,cor invitados:*:200: otros:*:250:sauron El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root. El siguiente grupo, usuarios, es para usuarios normales. Tiene un GID de 100. Los usuarios alexa, pepe y cor tienen acceso a este grupo. Recuerde que en /etc/passwd cada usuario tiene un GID por defecto. Sin embargo, los usuarios pueden pertenecer a más de un grupo, añadiendo sus nombres de usuario a otras líneas de grupo en /etc/group. El comando groups lista a qué grupos se tiene acceso. El tercer grupo, invitados, es para usuarios invitados, y otros es para "otros" usuarios. El usuario sauron tiene acceso a este grupo. Como se puede ver, el campo clave de /etc/group raramente se utiliza. A veces se utiliza para dar una clave para acceder a un grupo. Pocas veces esto es necesario. Para evitar que los usuarios cambien a grupos privilegiados (con el comando newgrp), se pone el campo de la clave a "*". No es recomendable editar directamente estos archivos, sino más bien emplear los programas presentados en esta sección. Como hemos citado anteriormente, cada usuario pertenece a uno o más grupos. La única importancia real de las relaciones de grupo es la perteneciente a los permisos de archivos. Cada archivo tiene un grupo propietario y un conjunto de permisos de grupo que define de que forma pueden acceder al archivo los usuarios del grupo. Hay varios grupos definidos en el sistema, como pueden ser bin, mail, y sys. Los usuarios no deben pertenecer a ninguno de estos grupos; se utilizan para permisos de archivos del sistema. En su lugar, los usuarios deben pertenecer a un grupo individual, como usuarios. Si quiere ser detallista, se pueden mantener varios grupos de usuarios como por ejemplo estudiantes, soporte y facultad. Se pueden usar los comandos addgroup o groupadd para añadir grupos a su sistema. Normalmente es más sencillo añadir líneas a /etc/group uno mismo, puesto que no se necesitan más configuraciones para añadir un grupo. Para borrar un grupo, solo hay que borrar su entrada de /etc/group. Nota: Verifique que en el archivo /etc/passwd no haya usuarios perteneciendo a ese grupo que va a eliminar. Ejemplo: contable::101:cguerra,jpaz personal::102:agarcia,jpaz Aquí, se han creado los grupos contable, con identificador de grupo 101 y personal, con GID 102. Los miembros del grupo personal son los usuarios agarcia y jpaz, si por alguna razón quiere integrar otro usuario en cualquier grupo, solo agregue una coma después del último miembro y escriba el nombre_de_usuario que le corresponda. Es conveniente indicar que si en el sistema de archivos se encuentra un directorio como: drwxrwx--- 2 root personal 1024 Abr 29 11:32 confidencial/ entonces sólo: root, agarcia y jpaz tendrán acceso a él. Administración de Servidores.- Prof. Kramer Garay Gómez Página 42
  • 9. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas Permisos Haga un listado largo de cualquier directorio y vera algo como lo siguiente: [alexa@linux]$ ls -la total 13 drwxr-sr-x 2 alexa user 1024 May 2 09:04 . drwxrwsr-x 4 root staff 1024 Apr 17 21:08 .. -rw------- 1 alexa user 2541 May 2 22:04 .bash_history -rw-r--r-- 1 alexa user 164 Apr 23 14:57 .bash_profile -rw-r--r-- 1 alexa user 55 Apr 23 14:44 .bashrc -rwxrwxr-x 1 alexa user 0 Apr 14 19:29 a.out -rwxrwxr-x 1 alexa user 40 Apr 30 12:14 hola.pl -r-------- 1 alexa user 64 Apr 29 14:04 hola -rwxrw-r-- 1 alexa user 902 Apr 29 13:57 prueba -rw-rw-r-- 1 alexa user 50 Apr 30 12:31 probador -rwxrwxr-x 1 alexa user 175 Apr 30 12:30 prue.sh -rwxrwxr-x 1 alexa user 56 Apr 23 15:08 quetal.sh Como se puede apreciar en este listado, también están el directorio actual, representado por un punto "." y el directorio padre representado por dos puntos "..". Ellos también poseen permisos y atributos que son mostrados. El primer campo que aparece en el listado es la máscara de permisos. Vamos a explicar qué significa esta máscara de 10 bits. Esta máscara de 10 dígitos la puedo dividir en partes para entender mejor. Veamos unas tablas que nos esclarecerán un poco mas que significa cada uno de estos caracteres. Primero vamos a ver aquellos caracteres que podrían aparecer en el primer bit, que en el ejemplo anterior podemos ver que es un guión, esto nos indica que es un archivo común. La tabla siguiente explica el significado del primer símbolo de acuerdo al tipo de archivo: Los siguientes 9 bits se toman en grupos de tres y cada grupo pertenece a una clase de permisos. Nos quedan tres grupos, entonces. Primer grupo usuario dueño al que pertenece el archivo/directorio (u) Segundo grupo grupo al que pertenece dicho archivo/directorio (g) Tercer grupo todos los demás usuarios del sistema (o) Administración de Servidores.- Prof. Kramer Garay Gómez Página 43
  • 10. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas Los 3 tipos de permisos, tienen una correspondencia numérica. r (en octal 4) lee (read) archivo o directorio w (en octal 2) modifica/borra (write) archivo o directorio x (en octal 1) ejecuta (execute) archivo o busca el directorio El dueño de un archivo controla que usuarios tienen permiso de acceso y de que manera pueden hacerlo; el comando ls -l despliega los permisos de acceso asociados a un archivo, el primer campo de 10 caracteres describe los permisos asociados con ese archivo, un campo típico se ilustra a continuación : -rwxrw-r-- 1 alexa user 902 Apr 29 13:57 prueba El primer símbolo nos esta indicando que el archivo es un archivo común, generalmente de texto. El primer grupo de tres símbolos representa los permisos para el dueño del archivo (owner) que en este caso posee permisos de lectura, escritura y ejecución. El segundo grupo de tres símbolos representa los permisos para el grupo al cual pertenece el archivo (group), que en este caso tienen permisos de lectura y escritura. El tercer grupo de tres símbolos representa los permisos para todo el resto de los usuarios (other), en este caso es solo de lectura. El numero que sigue (1) representa el numero de punteros o inodos que el archivo posee. Esto representa la cantidad de enlaces que existen a este archivo y no interesa demasiado en este momento. A continuación está el nombre del dueño del archivo y del grupo al cual pertenece el archivo. El "902" representa el tamaño del archivo expresado en bytes. Lo siguiente es la fecha y hora de modificación del archivo e inmediatamente después está el nombre del mismo. Para comprender exactamente la máscara de permisos en formato numérico veamos la siguiente tabla, donde tenemos la correspondencia de cada permiso con la numeración en octal y en binario. Todo esto nos será útil cuando queramos cambiar atributos de un determinado archivo o directorio. Por ejemplo para sacar permisos de lectura a los usuarios en archivos de configuración de un servidor. Octal Binario Número Número Permisos Descripción 0 000 --- Ningún permiso garantizado 1 001 --x Ejecutable 2 010 -w- Modificable 3 011 -wx Modificable/Ejecutable 4 100 r-- Legible 5 101 r-x Legible/Ejecutable 6 110 rw- Legible/Modificable 7 111 rwx Legible/Modificable/Ejecutable Los permisos para estos 3 tipos de usuarios puede estar dado por una cadena de 9 caracteres. Veamos estos ejemplos: Octal Dueño Grupo Otros Completo Número Columna Columna Columna Código 777 rwx rwx rwx rwxrwxrwx 755 rwx r-x r-x rwxr-xr-x 700 rwx --- --- rwx------ 666 rw- rw- rw- rw-rw-rw- Veamos unos detalles más Permisos: Son bits que definen el acceso a un fichero o directorio. Los permisos para directorio tienen un sentido diferente a los permisos para archivos. Más abajo se explican algunas diferencias. Lectura (r): Archivo: Poder acceder a los contenidos de un archivo Directorio: Poder leer un directorio, ver qué ficheros contiene Escritura (w): Archivo: Poder modificar o añadir contenido a un archivo Directorio: Poder borrar o mover ficheros en un directorio Ejecución(x): Archivo: Poder ejecutar un programa binario o guión de shell Directorio: Poder entrar en un directorio Nota: Tenga mucho cuidado con aquellos directorios que tengan permiso de escritura. Cualquiera podría borrar un archivo, aunque no sea de su propiedad y esto puede ser un riesgo, tanto para el sistema como para los datos de los usuarios. Comando chmod Para cambiar la máscara de permisos de un archivo o directorio, usamos el comando chmod. La sintaxis de este comando es la siguiente: chmod [permisos] archivo Administración de Servidores.- Prof. Kramer Garay Gómez Página 44
  • 11. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas [permisos] puede estar en formato numérico, o en formato alfabético. El formato numérico es el que ya vimos, los tres números en octal. El formato alfabético contiene los tipos de permisos en letras (r,w,x), en vez de números y tengo que especificar a quien o quienes se lo voy a aplicar (u,g,o). Sería así: con letras [ugo][+-=][rwx] con números [0-7][0-7][0-7] El método para cambiar un permiso con letras es el siguiente : Las letras u, g y o representan el Usuario, el Grupo, y Otros (todos los demás). El signo + significa que el permiso se va a conceder, mientras que el signo - significa que el permiso se va a revocar. El signo = significa que se instalen los permisos como se muestra a continuación, algunos ejemplos de cambio de permisos son: $ chmod u+x,g-w,o-w archivo1 $ chmod u=rx archivo1 El segundo método interpreta el número puesto como su equivalente en binario (nueve dígitos binarios), activando el permiso donde se haya puesto un 1 y desactivándolo donde se haya puesto un 0; por ejemplo: $ chmod 755 archivo1 Significa que a archivo1 se le asignaron permisos de la siguiente manera: 7 5 5 111 101 101 rwx r-x r-x Ejercicio: Veamos la máscara de permisos de un archivo llamado estudio: $ ls -l estudio -rw-rw-r-- 1 alexa alexa 57 May 5 16:47 estudio El siguiente comando elimina todos los permisos de acceso para el grupo y el resto de usuarios: $ chmod go-rw estudio $ ls -l estudio -rw------- 1 alexa alexa 57 May 5 16:47 estudio El administrador puede cambiar los permisos de todos los archivos del sistema y puede fijar una política inicial para la máscara de permisos que todos los usuarios tendrán. Comando chgrp Además de chmod se emplean los siguientes programas para realizar estas labores: chgrp grupo archivos Cambia el grupo de el o los archivos especificados. Por ejemplo: # chgrp profesores notas* tps* cambiará todos los archivos con prefijos notas y tps al grupo profesores. Como opción puede recibir -R para aplicar el cambio recursivamente en un directorio (es decir a subdirectorios también). Este programa puede ser usado por cualquier usuario para cambiar el grupo de sus archivos a otro grupo al que el mismo usuario pertenezca. Comando chown Cambia el usuario (y opcionalmente el grupo) de los archivos especificados. chown usuario[:grupo] archivos Al igual que chgrp con la opción -R efectúa el cambio recursivamente en subdirectorios. Por ejemplo # chown -R ale:administra tpgnutella/ Pondrá al usuario ale como dueño de todos los archivos y subdirectorios del directorio tpgnutella, todos quedarán con el grupo administra. También puede usarse para cambiar el grupo de un archivo (si no se especifica el nombre del usuario). Además tenemos otros bits de permisos que no podemos pasar por alto cuando estamos tratando de temas de seguridad. Sticky bit El sticky bit tiene significado cuando se aplica a directorios. Si el sticky bit está activo en un directorio, un usuario sólo puede borrar archivos que son de su propiedad o para los que tiene permiso de escritura, incluso cuando tiene acceso de escritura al directorio. En un directorio evita que un usuario que no sea el dueño del directorio pero que tenga permiso de escritura, pueda borrar o renombrar archivos que no le pertenecen. Administración de Servidores.- Prof. Kramer Garay Gómez Página 45
  • 12. Universidad Católica Los Ángeles Chimbote Ingeniería de Sistemas Esto está pensado para directorios como /tmp, que tienen permiso de escritura global, pero no es deseable permitir a cualquier usuario borrar los archivos que quiera. El sticky bit aparece como 't' en los listados largos de directorios. O sea cuando se hace un ls –l veremos: drwxrwxrwt 19 root root 8192 Jun 20 11:40 tmp Atributo SUID: (Para Archivos) Este bit describe permisos al usuario del archivo. Cuando el atributo SUID (poner id de usuario) está activo en los permisos del propietario, y ese archivo es ejecutable, los procesos que lo ejecutan obtienen acceso a los recursos del sistema basados en el usuario que crea el proceso (no el usuario que lo lanza). Resumiendo esta explicación, podemos decir: el bit SUID empleado con archivos ejecutables cambia la identificación del usuario por la del dueño del archivo. Por ejemplo: /usr/bin/passwd es un ejecutable propiedad de root y con el bit SUID activo. ¿Por qué? Este programa lo puede usar cualquier usuario para modificar su clave de acceso, que se almacena en -rw-r--r-- 1 root root 1265 Jun 29 19:41 /etc/passwd pero según los permisos que vemos en este archivo, sólo root puede escribir y modificarlo. Entonces sería imposible que cualquier usuario pudiera cambiar su clave si no puede modificar este archivo. La solución para este problema consiste en activar el bit SUID para este archivo: -r-s--x--x 1 root root 10704 Apr 19 13:15 /usr/bin/passwd Entonces, cuando se ejecute, el proceso generado por él es un proceso propiedad de root con todos los privilegios que ello acarrea. Esto puede ser un riesgo para la seguridad. Por tal razón debemos prestar atención, ya que en este tipo de programas se pueden producir buffer overflow, que comprometan el sistema. Este permiso puede ser útil para que usuarios normales ejecuten programas que requieren ser ejecutados por root y por lo mismo debe usarse con precaución. Con chmod se modifica empleando u y s. Por Ejemplo: $ chmod u+s cvs Esto indica que cuando el programa cvs se ejecute, debe cambiarse la identificación por la del dueño de ese programa. Consejos: • Asignar el bit SUID solo cuando sea estrictamente necesario. • Comprobar que los programas con este bit activo no tiene ningún desbordamiento de buffer (conocido). • Jamás asignarlo si el programa permite salir a la shell. Atributo SGID: (Para archivos) Si está activo en los permisos de grupo, este bit controla el estado de "poner id de grupo" de un archivo. Trabaja como SUID, pero, en vez de aplicarse al usuario, se aplica al grupo. El archivo tiene que ser ejecutable para que esto tenga algún efecto. Se establece con g y s. Por Ejemplo $ chmod g+s cvs Atributo SGID: (Para directorios) Si activa el bit SGID en un directorio, los archivos creados en ese directorio tendrán puesto su grupo como el grupo del directorio. Los ficheros de configuración del sistema (normalmente en /etc) es habitual que tengan el modo 640 (-rw-r-----), y que sean propiedad de root. Dependiendo de los requisitos de seguridad del sistema, esto se puede modificar. Nunca deje un fichero del sistema con permiso de escritura para un grupo o para otros. Algunos ficheros de configuración, incluyendo /etc/shadow, sólo deberían tener permiso de lectura para root, y los directorios de /etc no deberían ser accesibles, al menos por otros. SUID Shell Scripts Los scripts de shell SUID son un serio riesgo de seguridad, y por esta razón el núcleo no los acepta. Sin importar lo seguro que piense que es su script de shell, puede ser utilizado para que un cracker pueda obtener acceso a una shell de root. Administración de Servidores.- Prof. Kramer Garay Gómez Página 46