The Inside Out


Este sitio La web

¿Sufriste un ataque de generosidad y quieres regalarme algo? ¡Gracias! Fíjate en mi lista de deseos en Amazon.

Hai avuto un attacco di generosità e vuoi regalarmi qualcosa? Grazie! Controlla nella mia lista dei desideri su Amazon.

Administración de usuarios y permisos en Linux

Apenas comience a usar Linux "seriamente", o al menos, apenas empiece a curiosear por el sistema, una de las ganas o curiosidades que tendrá será de agregar nuevos usuarios. Es cierto que la mayoría de las distribuciones pensadas para uso masivo

Los programas principales a conocer son useradd, userdel, passwd, chmod y chown. Pero además veremos algunos archivos de configuración importantes, entre ellos /etc/groups, /etc/passwd y otros.

Agregar usuarios

Para agregar un usuario nuevo deberá usar el comando useradd. La sintaxis es simple, aunque permite algunas opciones interesantes si está trabajando en una red.

useradd rogelio

agrega al usuario rogelio y crea su directorio personal, /home/rogelio.

useradd -c "Rogelio Feliz" rogelio

crea al usuario rogelio con un comentario, "Rogelio Feliz" (el comentario es generalmente usado para guardar el nombre completo). Ahora que el usuario existe, debemos darle un password (sí, es esencial darle un password). Esto se hace con el comando passwd.

passwd roger

Deberá escribir un password (preferentemente seguro) para el usuario, y repetirlo para evitar errores. No verá el password que está escribiendo por motivos de seguridad. Note que puede cambiar su password personal (si es el usuario root, el de cualquier usuario) usando el comando passwd.

Otra posibilidad es usar (si su distribución lo incluye) el comando useradd, que en un solo paso crea el usuario, le pide el password a asignar, crea el directorio home, y agrega otros datos. El correspondiente comando para borrar usuarios (que por cierto no borra el directorio home del usuario eliminado) es deluser.

Una vez creado el usuario y su password, veamos el archivo que controla las posibilidades de ese usuario:

El archivo /etc/passwd

Este archivo guarda mucha de la información esencial de los usuarios. Su estructura es de frases separadas por el símbolo ":". Cada línea se ve como éstas:

nombre:password:UID:GID:comentario:home:shell
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/sh
rogelio:x:503:505:Rogelio Feliz:/home/rogelio:/bin/bash

La primera línea es un agregado nuestro para mostrar el significado de cada grupo. Note tres cosas: el password es representado por una x. Esto es porque el sistema de seguridad guarda los passwords encriptados dentro del archivo /etc/shadow. De esta manera, obtener un password de usuario es mucho más difícil. Además, cada usuario tiene dos números que lo distinguen: su UID o User IDentification, un número que identifica al usuario inequívocamente) y su GID o Group IDentification, el identificador de grupo. La UID distingue a un usuario en una red: dos usuarios en dos PCs distintas pueden llamarse "rogelio", pero sólo si su UID es la misma (por ejemplo, 501) podrán compartir datos fácilmente. Las UID de usuarios parten desde 500; las inferiores se reservan para procesos y servicios particulares. Veremos esto más abajo. La GID es lo que identifica al grupo del usuario (normalmente, el grupo tiene el mismo nombre que el usuario), y tiene características parecidas.

Veamos una línea del contenido del archivo de passwords, /etc/shadow (deberá abrirlo con el usuario root):

rogelio:$1$sIQg6Ctl$k46yZEWYHC6631Ymf.HQh0:12320:0:99999:7:::

Como vemos, este archivo también tiene secciones separadas por ":". Tenemos el login; el password encriptado; los días (desde una fecha estándard, 12320 días) en que el password no ha cambiado; los días antes de que el password pueda cambiarse (0); el tiempo en días luego del cual hay que cambiar el password (99999, infinito); los días de advertencia para cambiar el password (7); los días luego de la expiración antes de deshabilitar la cuenta (0); los días desde una fecha estándar que la cuenta ha estado deshabilitada (0) y un campo reservado.

Antes de seguir, debemos decir que la manera de eliminar un usuario es usar el comando userdel, que acepta la opción -r para eliminar todos sus archivos y directorios.

Grupos

En Linux y Unix, podemos tener tres posibilidades por defecto (después, root puede hacer absolutamente lo que quiera) respecto a grupos y archivos:

  1. Ser el dueño de un archivo. Podemos hacer lo que queramos con él
  2. Pertenecer al grupo del dueño: podemos hacer lo que el dueño quiera, pero no editar los permisos y grupos del archivo.
  3. No pertenecer al grupo: igual que arriba, pero en general con aún menos permisos que los usuarios pertenecientes al grupo.

Los grupos se administran mediante el archivo /etc/group. Para entender más, veamos unas líneas de ejemplo:

rogelio:x:505:
floppy:x:19:rogelio,marcos

Como ve, la línea se divide en cuatro partes: grupo:password:GID:usuarios en el grupo (separados por comas). Los passwords también están referidos al archivo shadow. Para agregar un usuario a un grupo, simplemente escríbalo al final de la línea. Es recomendable no agregar un usuario a un grupo a menos que sea indispensable. El que un usuario esté en demasiados grupos puede plantear problemas de seguridad.

Cambiar dueño y grupo

El comando chown permite cambiar el dueño y grupo de un archivo o grupo de ellos. Su uso es bastante simple:

chown -Rc rogelio:rogelio archivos

cambia recursivamente el dueño y grupo de los archivos definidos a rogelio y rogelio respectivamente. Note que deberá usar el usuario root para poder cambiar el dueño de un archivo.

Permisos

Hemos visto ya el significado de los conceptos "ID de usuario" e "ID de grupo", además de las divisiones entre dueño, grupo y otros usuarios. Ahora veamos cómo afectan estos conceptos nuestra vida cotidiana en Linux.
Cada archivo creado en el sistema tiene un dueño y un grupo. En su mayor parte, el dueño es el usuario root, y el grupo es el del usuario root. Un ejemplo: los archivos del directorio /usr/bin tienen como dueño y grupo a root. Pero además, todos los archivos tienen distintos permisos de uso. Todos los usuarios del sistema pueden leer los archivos en /usr/bin y ejecutarlos gracias a los permisos determinados para ellos, que sólo el dueño puede cambiar. Si usted guarda sus documentos personales en el directorio ~/Documentos, el dueño y grupo serán los suyos. Los demás usuarios podrán leer los archivos y (tal vez) ejecutarlos, pero no podrán modificarlos. Para cambiar esto, veamos qué permisos puede tener un archivo.

En Unix, cualquier archivo tiene tres tipos principales de permiso: permiso de lectura, permiso de escritura, y permiso de ejecución. Cada uno de ellos debe definirse como "sí" o "no" para el dueño, el grupo y los demás usuarios. Esto se puede hacer mediante el comando chmod. Chmod tiene una sintaxis compleja, y vamos a dividirla en partes.
Chmod, como los demás comandos, acepta opciones. Por eso, la sintaxis simplificada sería
chmod opciones modo archivos

Entre las opciones, las esenciales son sin duda -R (recursivo, abarca también a archivos dentro de subdirectorios), y -c (verboso, pero sólo informa sobre los archivos que cambian sus permisos). Veamos ahora los modos de uso.

Los modos de chmod se dividen en tres partes: los usuarios afectados, el cambio realizado y el permiso afectado:

  1. Los usuarios se describen según las letras u (dueño), g (grupo), o (otros, todos los usuarios que no pertenecen al grupo) y a (all, todos: dueño, grupo, y otros).
  2. El cambio realizado se expresa con + (activar), - (desactivar) o = (reemplazar los anteriores por los que estamos seleccionando ahora).
  3. Por último, el permiso a cambiar (estamos simplificando un poco) puede ser de lectura (r, read), escritura (w, write), o ejecución (x, execution).
Así, un posible uso de chmod es el de hacer ejecutable un archivo (por ejemplo un script de shell que acabamos de escribir): chmod u+x script.sh:

[rogelio@Edhellond rogelio]$ ls
bin/  script.sh  docs/  tmp/
[rogelio@Edhellond rogelio]$ chmod -c u+x borrados.log
el modo de `borrados.log' cambia a 0744 (rwxr--r--)
[rogelio@Edhellond rogelio]$

Puede además establecer permisos para varios usuarios a la vez separando con comas los modos:

[rogelio@Edhellond rogelio]$ chmod -c u+rwx,go=rx archivo
el modo de `borrados.log' cambia a 0755 (rwxr-xr-x)
[rogelio@Edhellond rogelio]$

Como ve, primero cambiamos los permisos del dueño (u +rwx), luego los del grupo y de otros (go =rw).

Usted puede querer usar en ocasiones la opción -R (recursivo) para cambiar los permisos de un montón de archivos a la vez. El ejemplo mejor es cuando copie archivos desde un CD grabado en Windows a un directorio: ¡todos los archivos están marcados como ejecutables! (Windows no tiene una estructura de permisos). La opción obvia sería chmod -Rc a-x * (cambiar todos los archivos en este directorio y sus subdirectorios eliminando el permiso de ejecución), pero hay un problema: esto también afecta a los directorios, y los directorios deben tener permiso de ejecución para poder ver lo que contienen. debemos entonces discriminar y usar chmod sólo sobre los archivos comunes. Para esto usaremos un pseudo script. El comando find debería hacer lo que queremos, y la manera es ésta:

find . -type f -exec chmod -c a-x {} \;

Podría grabar esto como un script y llamarlo "unwinder" o algo así. esto significa, más o menos: buscar en este directorio todo lo que sea un archivo y ejecutar el comando chmod para quitar los permisos de ejecución. La otra posibilidad es usar

chmod -Rc a-x ./*

a secas y luego agregar permiso de ejecución a los directorios a mano, con

chmod -c a+x directorio

uno por uno.

chmod también tiene un modo numérico. Dado que los permisos r, w y x pueden expresarse por números en notación octal (r=4, w=2, x=1), es posible usar chmod como vimos en el tutorial de scripts:

chmod 755 archivo

es otra manera de decir

chmod u+rwx,go+rx archivo

Entendamos un poco más: al decir chmod 755 estoy diciendo "para el dueño, aplicar permisos de lectura (4), escritura (2) y ejecución (1) que suman 7 (4+2+1). Para los otros dos (grupo y otros) aplicar lectura y ejecución solamente (4+1)."

Un error común al trabajar con chmod y chown es ejecutar chown después de chmod. chown altera los permisos, por lo que siempre debería primero cambiar el dueño y grupo de un archivo, y luego definir los permisos.

Políticas de permisos

No es una buena idea alterar permisos de archivos así porque sí. Particularmente, no debería cambiar permisos de dispositivos (directorio /dev). Los permisos y usuarios son una parte integral de la estructura de seguridad de una distribución, y en general hay otros pasos que pueden dar el mismo efecto.

Use con cuidado chmod, preferentemente en su directorio personal y sus archivos. Una buena idea si realmente le interesa la privacidad es ocultar el contenido de su directorio a los demás usuarios: eso se hace con el comando

chmod o-rx $HOME

Ahora ningún otro usuario salvo root podrá ver el contenido de su directorio personal.

Si le interesa el tema, consulte el uso de los comandos y archivos con man.

Contactarme - Contattarmi

Ningún dato es necesario, salvo antispam y el texto del mensaje.

Nessun dato è necessario, aparte antispam e il testo del messaggio.

Si tienes problemas con el formulario, escríbeme a la dirección de correo en la imagen:

Se hai problemi usando il form, scrivi all'email nell'immagine:

mailto image

Nombre / Nome
Email
Subject
Anti Spam: 2 + 2 =
Texto / Testo