Permisos

Como en cualquier sistema operativo, en GNU/Linux necesitamos que los ficheros tengan una serie de permisos para que podamos leerlos, modificarlos, ejecutarlos, etc.
Estos permisos se establecen sobre los ficheros para determinar que acciones pueden realizar sobe el fichero el propietario, el grupo de usuarios al que pertenece el fichero, y el resto de usuarios. En GNU/Linux, todos los ficheros pertenecen a un usuario y a un grupo.

Trabajando con los permisos

Los permisos asociados a un fichero, pueden ser modificados por el propietario de ese fichero (y evidente por root) para decidir quien tiene acceso a él. Las herramientas básicas para trabajar con los permisos son:

  • chmod, que nos permite modificar los permisos de los ficheros
  • chown, que nos permite modificar el propietario y el grupo al que pertenece el fichero.

Interpretar los permisos de un fichero

Antes de nada, hemos de saber que permisos tiene un fichero para saber que podemos hacer con él. Para mostrar los permisos basta hacer un ls -l <nombre_fichero>; obtendremos algo así:

$ ls -l miscript.sh
-rwxr-xr-- 1 nacx nacx 603648 may 25 20:24 miscript.sh

Los permisos del fichero son lo que esta resaltado en rojo y se leen del siguiente modo: El primer carácter puede ser un  si es un fichero corriente, una d si es un directorio, una s si es un socket, etc. Normalmente será un  o una d.

Ahora vienen los realmetne importantes. A partir del primero se leen de tres en tres: los tres primeros carácteres describen los permisos del propietario sobre el fichero, los 3 siguientes los permisos del grupo y los 3 últimos los permisos del resto de usuarios. La letra r indica permiso de lectura, la w de escritura, la x de ejecución, y el  indica que no tiene ese permiso. En el ejemplo anterior tendriamos:

  • rwx para el propietario: puede leerlo, escribir en el y ejecutarlo.
  • r-x para el grupo: los miembros del grupo pueden leerlo y ejecutarlo, pero no modificarlo.
  • r– el resto de gente sólo puede leerlo.

Cuando hablamos de un directorio el significado cambia un poco: r significa poder leer su contenido, es decir, poder hacer un lsw significa poder modificar el contenido del directorio, y x significa poder entrar en el directorio. Así, por ejemplo, si no quisieramos que alguien entrara en un directorio, bastaria con quitarle el permiso de ejecución al resto de usuarios.

Modificar los permisos: chmod

Para modificar los permisos utilizamos el comando chmod <permisos> <ficheros>.
El campo de permisos se especifica de la siguiente manera: hay dos formas, la numérica y la forma explícita. De momento explicaré la explícita ya que es más intuitiva.

Lo primero es decir si nos referimos a los permisos del usuario, grup, de otros, o de todos a la vez, con las letras ugoa. Seguidamente decimos si queremos dar o quitar el permiso con un signo + o un . Finalmente ponemos los permisos a los que nos referimos. Además podemos hacer todas las combinaciones, refiriéndonos a más de un permiso o usuario, agrupándolos o separándolos por comas. Veamos un ejemplo:

$ ls -l miscript.sh
-rwxr-xr-- 1 nacx nacx 603648 may 25 20:24 miscript.sh
$ chmod o-r,g+w miscript.sh
$ ls -l miscript.sh
-rwxrwx--- 1 nacx nacx 603648 may 25 20:24 miscript.sh

Con esto hemos quitado el permiso de lectura al resto de usuarios y hemos dado permiso de escritura a los usuarios pertenecientes al grupo al que pertenece el fichero.

Se puede realizar la misma acción cambiando los permisos numéricamente, por ejemplo, hay 3 permisos para el propietario, 3 para el grupo y 3 para el resto de gente, también es factible cambiar los permisos utilizando el lenguaje máquina (binario), cambiando así la cadena anteriormente puesta:

$chmod o-r,g+w miscript.sh

Por:

$ chmod 770 miscript.sh

Sencillamente se reemplaza el rwx por 3 dígitos, si existe el permiso el dígito es 1, si no, es 0, después con los 3 dígitos (1 o 0), estos 3 dígitos los entendemos cómo un número binario y los pasamos a decimal, así obtenemos el número que tenemos que darle a la orden chmod. Por ejemplo si los permisos fueran rw- el número binário sería 110, esto pasado a decimal da el número 6, haríamos lo mismo con los siguientes 3 permisos del archivo y sacaríamos el segundo número decimal, e igual con el tercer grupo de permisos. Con el caso anterior del archivo miscript.sh tiene los permisos rwx rwx —:

rwx = 111 (binario) = 7 (decimal).
rwx = 111 (binario) = 7 (decimal).
– – – = 000 (binario) = 0 (decimal).

De ahí sale el número para el chmod en este caso 770.
Ahora sólo queda que cada uno experimente por su cuenta. Por supuesto encontraréis mucha más información en man chmod.

Para cambiar los atributos de forma numerica tenemos que el 1 son los permisos de ejecución x, el 2 de escritura w y el 4 de lectura r, tenemos que sumarlos, por ejemplo, si queremos un archivo de escritura y lectura será: 2 +4 = 6
Si quisiéramos un archivo con rwx para el usuario dueño del archivo, rw para el grupo y sólo r para el resto seria:

$chmod 764 miscript.sh

Donde el 7 vendria de 1 (x=ejecucción) + 2 (w=escritura) + 4 (r=lectura) = 7
Donde el 6 vendria de 4 (r=lectura) + 2 (w=escritura) = 6
Donde el 4 vendria de 4 (r=lectura)

Modificando el propietario y el grupo: chown

La sintaxis es: chown <nuevo propietario>:<nuevo grupo> <fichero>. Para ejecutar este comando hace falta tener privilegios de root. Para ello basta usar el comando su. Veamos un ejemplo:

$ su
# ls -l miscript.sh
-rwxr-xr-- 1 nacx nacx 603648 may 25 20:24 miscript.sh
# chown daniel:grupo_dani miscript.sh
# ls -l miscript.sh
-rwxr-xr-- 1 daniel grupo_dani 603648 may 25 20:24 miscript.sh

Podemos ver como el fichero antes pertenecia al usuario nacx y al grupo nacx y ahora pertenece al usuario daniel y al grupo grupo_dani.

Tutorial elaborado por Nacx para ADSLAyuda.com

Este sitio web utiliza cookies para mejorar su experiencia. Asumiremos que estás de acuerdo, pero puedes optar por no seguir si lo deseas. Aceptar Leer más