Linux.¿Me da usted su permiso?
Un ordenador lo pueden usar muchas personas y por eso se suele crear un usuario para cada persona que vaya a utilizarlo, es decir, uno para mi hermano, mi hermana, mi padre, mi madre, mi novia y yo.
Cuando arranca el ordenador, nos pide el usuario y la contraseña e iniciamos el usuario que nos toque. Evidentemente hay que tener un control de que cosas puedo hacer con mi usuario. No puedo acceder así como así a las cosas de mi novia y borrarle lo que quiera, le estropearía todo lo que esta haciendo y luego cualquiera la aguanta. Para controlar estas cosas están los permisos.
En Linux los permisos se establecen en 3 niveles:
- Permisos del propietario. Cada archivo o directorio es de un propietario y solo éste o el usuario root puede cambiar el dueño y sus permisos.
- Permisos para el grupo. Cada usuario puede pertenecer a uno o varios grupos y estos permisos afectan a los usuarios que estén dentro del mismo grupo que el propietario.
- Permisos para otros. Aquí se trata de los permisos que tienen los demás usuarios y los grupos que faltan, es decir, los otros o el resto.
Antes observamos con detalle lo que hacía cuando ejecutábamos ls -all, voy a explicar con pelos y señales que significa toda esa información para saber como funcionan los permisos:
En la primera columna tenemos 10 caracteres muy interesantes:
El primer carácter nos indica que tipo de archivo es:
- d. Es un carpeta o directorio.
- El guion(-). Es un archivo normal.
- c. Es un dispositivo orientado a carácter. Por ejemplo un archivo de control de puertos usb.
- b. Es un dispositivo orientado a bloque. Por ejemplo un archivo o directorio para control de una unidad extraíble.
- l. Es un enlace de un archivo o directorio.
- Los 9 caracteres que faltan están orientados a los permisos.
- Las siglas son r-leer, w-escribir y x-ejecutar. Se organizan en bloques de 3 caracteres; los 3 primeros para el propietario, los 3 siguientes para el grupo y los 3 últimos para los demás.
¡No me entero una mierda, por el amor de Dios usa un ejemplo!.
Vamos a escoger la segunda línea de la imagen y vamos a desmontarla para ver que quiere decir:
- d. Es un directorio o carpeta.
- Los 3 primeros caracteres son rwx. Es decir, que para el propietario se le va a permitir, leer (r), escribir (w) y ejecutar (x).
- Los 3 siguientes caracteres son r-x. Es decir, que para el grupo al que pertenece el propietario, que según la tercera columna es el grupo root, sus permisos son leer (r), escribir no se le permite (-) y si le permite ejecutar (x).
- Los 3 últimos caracteres son r-x. Para el resto de usuarios y grupos sus permisos son leer (r), no le permite escribir (-) y si ejecutar (x).
Si ahora resulta que con cualquier usuario que no sea root, intentamos borrar este archivo, no lo permitará y solo nos dejará verlo y ejecutarlo.
¡Genial! y visto todo esto…¿Como se usa?.
El comando que se utiliza para cambiar permisos a archivos y directorios es chmod. Vamos a echar un vistazo a las opciones que tiene el comando:
- a. Se aplica a todo el mundo (all).
- u. Se aplica solo al usuario (user).
- g. Se aplica solo al grupo (group).
- o. Se aplica a los demás (others).
- +. Se añade permisos.
- -. Se quita permisos.
- r. Permiso de lectura.
- w. Permiso de escritura.
- x. Permiso de ejecución.
Vamos a ver algunos ejemplos:
chmod a+r ó +r <nombre del fichero> #Añadimos permiso de lectura a todo el mundo, es decir, propietario, grupos y otros.
chmod og-x <nombre del fichero> #Le quitamos permiso de ejecución a los grupos y a los demás, el propietario lo dejamos como está.
chmod u+rwx <nombre del fichero> #Le añadimos permisos de lectura, escritura y ejecución al propietario.
chmod o-rwx <nombre del fichero> #Le quitamos permisos de lectura, escritura y ejecución a los demás.
Existe otra forma de dar permisos a los archivos basándose en esta tabla:
- 0 (***). No hay permisos.
- 1 ( **x). Permiso sólo de ejecución.
- 2 (*w*). Permiso sólo de escritura.
- 3 (*wx). Permiso de escritura y ejecución.
- 4 (r**). Permiso de solo lectura.
- 5 (r*x). Permiso de lectura y ejecución.
- 6 (rw*). Permioso de lectura y escritura.
- 7 (rwx). Permiso de lectura, escritura y ejecución.
Fijándonos en esa tabla vamos a hacer unos ejemplos:
chmod 600 <archivo> #Esto quiere decir según la tabla, que al propietario le doy permiso de lectura y escritura, al grupo y a los demás no les doy ningún permiso.
chmod 411 <archivo> #Con esta instrucción le doy persmisos de lectura al propietario y permiso de ejecución al grupo y los demás.
Si prestamos atención usamos un número para cada nivel de permiso, es decir, propietario, grupos y lo demás.
Y si quiero cambiar el propietario, ¿Puedo hacerlo?.
El comando para hacerlo es chown. Este comando te permite cambiar el propietario del archivo, pero evidentemente para hacerlo debes ser root o el propio dueño del archivo que vamos a modificar:
chown <usuario> <archivo o carpeta> #Cambia el propietario.
chown -R <usuario> <archivo o carpeta>. Cambia el propietario al archivo o carpeta pero de forma recursiva, es decir, la carpeta principal y todos los archivos y subcarpetas que haya dentro.
chown <usuario:grupo> <nombre de archivo o carpeta> #Con esta instrucción cambiamos el usuario y el grupo al mismo tiempo con una sola línea.
¿Y que hay del Grupo?.
Se hace con el comando chgrp y funciona exactamente igual que con chown.
chgrp <grupo> <archivo o carpeta>
Continúa por Operaciones con archivos.