Vous êtes sur la page 1sur 8

APUNTES ASO.

Gestin de usuarios y Grupos


Algunas cuestiones preliminares
Lugares donde podemos encontrar documentacin interesante sobre Linux:
es.redhat.com
Documentacin oficial en espaol sobre Red Hat (vlida para CentOS, Scientific Linux,
Oracle Linux y otros)
centos.org Para descargarse la ltima versin (slo la ltima) de CentOS
scientificlinux.org
Para descargarse versiones anteriores
distrowatch.com
Acceso a todas las distribuciones de Linux y su ranking
fedoraproject.org
Permite experimentar lo que ser RHEL en el futuro
alcancelibre.org
Mucha informacin y manuales en espaol
howtoforge.com
Muy interesante para el montaje de SERVICIOS
rm-rf.es
Tutoriales muy interesantes
commandlinefu.com Trucos de consola con medicin de popularidad
La ayuda del sistema
Siempre podemos encontrar ayuda en el entorno grfico (System --> Help). Pero esta ayuda nos proporciona por
defecto la ayuda de Gnome. Tambin se puede invocar desde lnea de comandos con yelp
Si anteponemos man: a la bsqueda, la misma herramienta nos puede proporcionar la ayuda de man en el propio
entorno grfico.
En el man hay 9 secciones, y se puede buscar ayuda sobre un comando en una seccin concreta:
man: passwd(5)

Para ampliar la ayuda de man, tenemos el comando info


man: grub

info:grub

Secciones de man

1)
2)
3)
4)
5)
6)
7)
8)
9)

Man tiene 9 secciones. La 9 es totalmente nueva.


Comandos que cualquier usuario puede ejecutar
Kernel y libreras. Llamadas al sistema. Salvo desarrolladores, no se suele utilizar
Kernel y libreras. Funciones en C. Salvo desarrolladores, no se suele utilizar.
Ficheros especiales
Archivos de configuracin y ejemplos
Juegos
Miscelnea: convenciones, ejemplos de expresiones regulares, jerarquas de ficheros y otra informacin general
Comandos de root (sysadmin)
API del kernel (Para desarrolladores)
Las que se utilizan con ms frecuencia son las secciones 1 (por defecto), 5 y 8.
Para consultar una seccin por consola:
Comando
Ejemplo
man comando

man passwd

man seccion comando

(Busca el comando passwd en la seccin 5)


(Busca la clave en diferentes pginas de man)
Actualiza la base de conocimiento de man. En prximas versiones ser mandb

man k keyword
makewhatis

(como root)

man 5 passwd

man k passwd

Las pginas de man son de consulta rpida. Si deseamos informacin ms detallada tenemos los comandos info y pinfo.
Ejemplo: Observar la diferencia entre man tar y pinfo tar

pinfo

es un info mejorado, que permite mucha informacin en modo navegacin web (MUY EXTENSA)

En /usr/share/doc tambin suele haber mucha informacin que suelen poner ah los fabricantes de cada aplicacin o
dispositivo aadido al sistema.
Ayuda sobre la consola:
bind p
set o vi
set o emacs

Muestra los atajos de teclado disponibles en la consola (los de emacs, por defecto)
Establece los atajos de teclado de vi (o vim)
Establece los atajos de teclado de emacs

Algunos atajos de teclado tiles (en la consola. Todos estn descritos en bind -p)
^a Ir al inicio de la lnea de comando
^e Ir al final de la lnea de comando
^b Ir un carcter hacia atrs
^f Ir un carcter hacia adelante
Esc + b
Ir una palabra hacia atrs
^u Eliminar desde el cursor hasta el inicio de la lnea
^k Eliminar desde el cursos hasta el final de la lnea (corta el contenido borrado en memoria)
^y Pega lo que antes hemos cortado en el comando actual
Comando CD
Ir al home del usuario actual
cd .
Ir al directorio actual (es decir, quedarse donde estamos)
cd ..
Ir al directorio padre
cd ~
Ir al directorio por defecto del usuario (Va a /home/student si soy el usuario student)
cd ~visitor Ir al directorio del usuario visitor (aunque yo no sea visitor). Ir a /home/visitor
cd ~/visitor
Ir al directorio visitor que estar DENTRO del home del usuario actual. Por ejemplo, si yo soy
student, ir a /home/student/visitor
cd Vuelve al directorio donde estbamos justo antes
cd

Truco: Si queremos pasar como opcin un archivo que comienza con , qu podemos hacer para que el comando NO
interprete el nombre de archivo como opcin del comando sino como parmetro que comienza con -?
Solucin: Anteponiendo al nombre del archivo el parmetro -- que hace que lo siguiente NO se trate como opcin.
Ejemplo: cp archivo -- -file
Genera una copia de archivo con el nombre -file
Truco: Si escribimos un comando con el parmetro * y despus presionamos Esc *, el asterisco del comando se sustituye
por el patrn que corresponda a ese *.
Ejemplo: Si estamos en /home/user
ls * Esc *
--> Se transforma en ls Documents Desktop ... y se hace un ls de todos esos directorios.
Bloqueo de sesin: ^+Alt+L (Indispensable para Administradores) (*)
Bloquear terminal activo: vlock
Bloquear TODO:
vlock a
(*) Si hay terminales virtuales abiertas NO se bloquean con ^+Alt+L
pushd ruta
popd
cd -

Hace un cd a la ruta especificada y almacena la ruta en la que estbamos en ese momento


Vuelve a la ruta almacenada con pushd
Vuelve al directorio donde estbamos justo antes

Comando ls
ls lh directorio
ls lhd directorio

Para ver los permisos de los archivos de un directorio


Para ver los permisos del directorio

Permisos de usuario
(basados en texto)

chmod

u
g
o
a

+
-

Ejemplos:
r
w
x

aade al usuario permiso de lectura en el archivo


u+r,g+w,o-r archivos
Establece varios permisos sobre los archivos
ugo+rw archivos Establece permisos rw a usuarios, grupo y otros
g=w archivos
Establece SOLO permiso de escritura al grupo (quita resto)
g-w archivos
Quita permiso de escritura al grupo (pero no afecta resto)

chmod u+r archivo


chmod
chmod

chmod
chmod

Permisos de usuario (basados en nmero)

4 : permiso de lectura
2 : permiso de escritura
1 : permiso de ejecucin
Teniendo en cuenta esa tabla, podemos asignar los permisos de usuario, grupo y otros slo con una combinacin de
nmeros adecuada a los permisos que queremos asignar, estableciendo la suma de permisos que queremos atribuir a
cada grupo.
Tambin se pueden asignar permisos valorando los permisos segn esta tabla:

Ejemplos:
chmod 740 archivo
chmod 645 archivo

Asigna permisos rwx r-- --- al archivo (porque 7= 4+2+1 y 4 es la lectura)


Asigna permisos rw- r-- r-x al archivo

Mscaras
Los ficheros se crean con mscara 666, mientras que los directorios se crean con la mscara 777
El comando umask permite visualizar (y cambiar) la mscara.
Si umask devuelve 0002, al crear el archivo se aplica 666-002 = 664
Si umask nos da 0022, al crear como root se aplica 777-022 = 755
Nota: La mscara se establece durante el inicio de sesin y no se recomienda alterarlo sin conocimiento suficiente. Si se
desea alterar de manera permanente hay que hacerlo dentro del archivo /etc/bashrc para que se aplique a todos los
inicios de sesin. Para cambiar la mscara: man umask
Cambiar propietario de un archivo o directorio
chown

(solo root)

Ej: chown

student foofile

Hace que student sea el propietario de foofile

Nota: Si hacemos a alguien propietario de un directorio, se cambia la propiedad del directorio, pero NO de su contenido.
Si queremos propagar la propiedad a su contenido hay que utilizar el parmetro r
Ej: chown R student directorio
chgrp:

Cambia el grupo de un fichero o directorio. No se suele utilizar, ya que con chown se puede cambiar el usuario y
grupo a la vez:
chown R student:student directorio

Bloquear usuarios
usermod L usuario

(desde root)

Creacin de usuarios
El comando para crear usuarios es useradd, aunque tambin suele estar disponible un script con el nombre adduser. El
script adduser suele tener distinto comportamiento segn la versin de Linux. En Ubuntu, por ejemplo, inicia un dilogo
interactivo con el administrador para solicitar los distintos datos necesarios u opcionales para la creacin del usuario. En
Red Hat y derivados, sin embargo, el comportamiento es exactamente igual al de useradd ya que crea tambin el
directorio home del usuario recin creado, pero no genera los directorios de home habituales Desktop, Downloads

La lista de usuarios se puede ver examinando el fichero /etc/passwd, que tiene el siguiente formato
usuario
:
x
:
0
:
0
:
gcos(1) :
home(2) :
shell(3)
nombre
Huella de password
uid
gid
datos usuario home del usuario
(Ya no se usa)
gcos(1):
home(2):
shell(3):

Son los datos extendidos del usuario: Nombre completo, extensin y ms cosas
Es el directorio home del usuario
Shell preferida o predeterminada del usuario. Si la Shell es /sbin/nologin o /bin/false quiere decir que el
usuario no puede abrir una Shell.
Nota: El fichero /etc/passwd NUNCA se debe manipular a mano con un editor.
Cuando se crea un usuario se le asigna un nmero de usuario (uid) y un nmero de grupo (gid). Si no se indica, se realiza
la asignacin de manera automtica. Sin embargo, el comando useradd se puede completar con opciones adecuadas
para forzar cada una de las opciones de creacin. La sintaxis completa sera:
useradd g grupo d /home/user s /bin/bash m k /etc/skel usuario p password

-g:
-d:
-s:
-m:
-k:
-p:

genera el usuario en el grupo grupo (pero hay que indicar el gid numrico, no el nombre)
Indica el directorio home que va a tener el usuario
Indica la Shell por defecto del usuario
Obliga a crear el directorio home del usuario, si an no existe
Copia el contenido del directorio indicado al home del usuario (para definir un perfil por defecto)
Establece la password del usuario (pero hay que pasar la huella cifrada de la misma, no la propia password)

Debido a estas dificultades del comando useradd, lo ms habitual es crear el usuario con el parmetro de su nombre y
despus cambiar su contrasea con el comando passwd (o usar adduser, que suele ser menos complejo)
useradd pepe
passwd pepe

Si se desea automatizar la creacin de usuarios, poniendo la password en un script, se puede hacer lo


siguiente:
echo password | passwd --stdin pepe

Le pone la password password al usuario pepe

Y si se quiere poner la misma password a varios usuarios en el momento de su creacin:


for i in pepe juan antonio flora genaro; do
echo password | passwd --stdin $i

Que pone la password password a todos los usuarios de la lista.


Nota: El uid de los usuarios del sistema suele estar entre 0 y 499, mientras que los usuarios estndar suelen tener un uid
por encima de 500. De la misma manera, los grupos del sistema suelen tener el gid entre 0 y 199, mientras que los
grupos estndar tienen valores entre 200 y 499.
Algunos archivos que podemos examinar para obtener informacin de usuarios (aparecen al final de man chown) son:
/etc/group
/etc/shadow
/etc/gshadow

Lista de grupos
Lista de usuarios y huella digital de su password
Lista de grupos y huella digital de los grupos

Nota: Aunque hay un editor (vipw) especial para editar los ficheros /etc/passwd y /etc/shadow NO SE DEBE UTILIZAR.

Muchas ms opciones (con ejemplos) sobre la creacin de usuarios se pueden examinar en el siguiente
documento: http://www.tecmint.com/add-users-in-linux/
Curiosidad: Para crear un usuario que pertenezca a varios grupos: useradd

G grp1,grp2,grp3 usuario

Creacin de grupos
Para crear un grupo (aparte de los que se crean con el mismo nombre del usuario si se utiliza la opcin por
defecto) se puede utilizar el comando groupadd.
groupadd [opciones] grupo

Se le puede aadir tambin una contrasea al grupo, aunque esta opcin est deshabilitada por defecto
groupadd

-p password grupo

Si se desea ms informacin sobre el comando, se puede consultar la seccin 8 de man: man

8 groupadd

Aadir un usuario a un grupo


El comando ms utilizado para aadir un grupo ya existente a un usuario ya existente es
usermod aG grupo usuario

(Tambin se podra hacer con adduser

usuario grupo, pero

Nota: Muy interesante la informacin adicional de usermod de la seccin 8 de man (man

da lugar a confusin)

8 usermod)

Eliminar un usuario de un grupo


Para eliminar un grupo de un usuario, la manera ms fcil es:
deluser usuario grupo

Nota: No confundir con el comando userdel, que elimina el usuario.


Eliminar un grupo
El comando para eliminar un grupo es groupdel, pero dicho grupo NO debe tener ningn usuario. De no ser as, el
comando no tiene efecto (o podra tener efectos impredecibles, segn la versin de Linux). Es un comando con el que
hay que tener ciertas precauciones.
groupdel grupo

Eliminar un usuario
Para borrar un usuario del sistema, se utiliza el comando userdel, pero por defecto NO borra su directorio home.
userdel pepe
userdel R pepe

Borra la definicin del usuario y grupo primario (pero no borra /home/pepe)


Borra tambin el directorio home/pepe y sus ficheros temporales (en /var/tmp)
Tampoco borra archivos del usuario pepe que puedan estar en otras rutas.

Truco: Si queremos borrar TODO lo que tenga que ver con un usuario concreto, podemos ejecutar el siguiente comando:
find / -uid 18733 exec run rf { } \;

siendo 18733 el uid del usuario borrado (en este, caso, pepe). Esto se hara tras userdel

R pepe

(anotando su uid)

Permisos especiales (y Sticky bit)


Para los usuarios, grupos y otros tenemos los permisos especiales s, s y t
ugo
El bit s relacionado con usuarios se conoce como suid. Afecta a los bits de ejecucin. Si se
sst

configura este bit, el efecto es que se aplican los permisos de ejecucin del propietario del fichero
y no los del usuario que ejecuta.
El bit s relacionado con grupos se conoce como sgid (o sguid). Aplicado a ficheros, tiene el
mismo efecto que el suid, pero para el grupo. Aplicado a directorios tiene un efecto muy
diferente: Est orientado al trabajo colaborativo y su efecto es que los ficheros que se crean el
directorio pertenezcan de manera automtica al grupo propietario del directorio y NO al usuario
que crea el fichero o su grupo original.
El bit t relacionado con otros es el conocido como Sticky bit. Su efecto es tambin diferente
segn se aplique a ficheros o a directorios. Aplicado a ficheros no tiene ningn efecto (no tiene
sentido). Aplicado a directorios hace que los ficheros creados en un directorio slo puedan ser
borrados por el propietario del fichero o el propietario del directorio que lo contiene (podran ser
distintos).

Para aplicar estos permisos:


chmod

{ u+s | g+s | o+t }

{ fichero | directorio }

Nota: Fichero slo para u|g. Directorios para g|o


Para examinar si estos permisos estn aplicados en un directorio o fichero, la salida de ls lh o ls
mostrar una indicacin especial junto al grupo de permisos, aadiendo una s o una t

lhd

Configuracin adicional de las cuentas de usuario


En el archivo /etc/shadow podemos encontrar los siguientes campos:
username : hash : date : min_age : max_age : warning_period : inactive_period : expiration
username: Nombre del usuario
hash:
Llave hash de la password del usuario
date:
Fecha del ltimo cambio de password (nmero de das desde el 1/1/1970)
min_age: Duracin mnima de la password (0 indica que no hay una duracin mnima)
max_age: Duracin mxima de la password (en das)
warning_period:
Periodo en das en el que se advertir para cambio de password (0 = sin advertencia)
inactive_period:
Periodo en das durante el cual puede estar la password inactiva
expiration: Fecha de expiracin de la cuenta (nmero de das desde el 1/1/1970)
Para establecer cualquiera de estas cosas se utiliza el comando chage
chage -l student
chage -d 0 student

Nos da info sobre fecha de expiracin, mnimo das sin cambiar password...
Obliga a student a cambiar el password en el prximo login

Esquema para entender los diferentes parmetros de chage (man chage)

max days (-M)


inactive days (-i)

warn days
(-W)

min days
(-m)

time
last change date (-d)

password expiration date (-E)

inactive date (-I)

Ejercicio:
Explicar el significado del siguiente comando:
chage m 0 M 90 W 7 I 14 student

Listas de control de acceso (ACL)


Hay situaciones en las que es muy difcil (e incluso imposible) adecuar los permisos de usuarios y grupos a unas necesidades
concretas. Veamos un ejemplo:
Supongamos que tenemos un grupo llamado nominas formado por juan y antonio, y un grupo becarios formado por
pepe. Sabemos que antonio es un jefecillo algo torpe, por lo que no queremos que acceda a un fichero de nminas llamado
fichero.txt salvo con permisos de lectura. Sin embargo, pepe, aun siendo becario, s que queremos que tenga permisos de
escritura. Si damos permisos de escritura al grupo nominas le estaremos dando permiso de escritura a antonio (el torpe),
y si queremos que pepe:becarios tenga permiso de escritura tambin tenemos que darle permiso de escritura a otros,
con lo cual abrimos la posibilidad de que escriba en el fichero pepe, pero tambin cualquier otro usuario de cualquier otro
grupo. Por supuesto, no podemos meter a pepe en el grupo nomina por poltica de la empresa, ni queremos que ningn
otro becario tenga tambin permiso de escritura.
Tiene arreglo esta solucin? Por supuesto, pero la solucin pasa por implementar ACLs sobre el recurso.
juan
antonio

nomina

pepe

becarios

Para comprender cmo funcionan las ACL hay que pensar en este esquema de reglas:
ACL

U(1)

usuarios

fichero.txt rwpepe rwantonio r(2)

grupos

Standard

(4)

G(3)
rw-

O(5)
---

Teniendo en cuenta que, si se aplican ACLs, el orden en que se revisan los permisos es (1), (2), (3), (4) y (5), si se establecen
esos permisos vemos que, aunque antonio pertenece al grupo nminas, que tiene permiso de lectura y escritura, como se
aplica antes el permiso ACL del usuario, que le ofrece slo permiso de lectura, no alcanzar a tener permiso de escritura.
Por otra parte, aunque pepe est en el grupo otros, que no tiene ningn permiso, como la ACL le otorga permiso de lectura
y escritura en el paso (2), s que podr acceder al fichero.

Problema: Slo se pueden configurar ACLs si las particiones estn marcadas para usar ACL. Por defecto, las particiones que
se configuran durante la instalacin estndar (con anakonda), s que estn marcadas. Pero cualquier otra particin (o disco)
adicional que aadamos debemos que configurarla expresamente para que soporte ACLs con la herramienta tune2fs.
Los permisos ACL slo afectan al usuario ACL (no propietario) y al grupo ACL (no propietario). No afecta NUNCA al usuario
propietario ni a OTROS.
Cuando se trabaja con ACL nos olvidamos del comando chmod, excepto para cambiar los permisos especiales (suid, sgid y
sticky bit)
Para consultar los permisos ACL, disponemos del comando getfacl
Para establecer los permisos ACL, tenemos el comando setfacl
Ejemplos:
setfacl m d:g:interns:rx

/shared/profs

Establece herencia de ACL por defecto (d = defaults) a un directorio para todos los archivos y directorios que se creen a
partir de ese momento.
Si queremos establecer esos permisos tambin para lo que ya existe en el directorio hay que utilizar el siguiente comando:
setfacl R m d:g:interns:rx /shared/profs

Si no ponemos la d: (de defaults), tambin se pueden aplicar permisos ACL recursivos, pero sin establecer herencia.

Ejercicio: Un grupo de estudiantes necesita un directorio colaborativo llamado /opt/research donde


puedan almacenar sus resultados de investigacin. Slo los miembros del los grupos profesores y
graduados deberan poder crear nuevos archivos en el directorio y los nuevos archivos deberan tener las
siguientes propiedades:
El directorio debera ser propiedad de root
Los archivos nuevos deberan ser propiedad del grupo graduados de manera automtica
Los profesores deberan tener acceso de lectura/escritura sobre los archivos nuevos
Los becarios slo deberan tener acceso de lectura a los archivos nuevos
El resto de usuarios (que no sean de los grupos profesores, graduados o becarios) no deberan ni siquiera
poder acceder al contenido de la carpeta

Solucin (como root):


(el orden de las operaciones es importante)
mkdir p /opt/research
chgrp grads /opt/research
chmod 2770 /opt/research
setfacl m g:profs:rwx /opt/research
setfacl m d:g:profs:rwx /opt/research
setfacl m g:becarios:rx /opt/research
setfacl m d:g:becarios:rx /opt/research
chmod o=- /opt/research

(*)
(**)
(**)

(*) chmod 2770 es equivalente a chmod 770 + chmod g+s sobre /opt/research
(**) Cuando se establece herencia sobre subdirectorios, SIEMPRE se debe dar permiso de ejecucin (navegacin)
Si se quieren copiar archivos de un sitio a otro, manteniendo permisos y ACLs hay que hacerlo con el comando
cp a origen destino

Vous aimerez peut-être aussi