AddThis Social Bookmark Button

Permisos de archivos

Saber que permisos tiene un archivo o directorio

Como ya comentamos, al utilizar la instrucción ls –a la primera columna te mostrará los permisos del archivo o carpeta pero que significa cada letra que aparece.

La columna de permisos de archivos, esta denotada por 10 caracteres que nos muestran la información al respecto de la siguiente manera:

drwxr-xr-x

El primero nos muestra información sobre el archivo o carpeta que señalar, una d significa que es un directorio, l significa que es un archivo con un link y un significa que es un archivo.

Los siguientes 9 caracteres son 3 grupos que indican los permisos para el dueño del archivo (owner) la primera serie, para el grupo la segunda serie y para los demás usuarios la tercera serie. Cada serie esta compuesta de tres caracteres que pueden ser rwx lo cual significa permisos de lectura (read), escritura (write) y ejecución (execution). Por ejemplo

drwxr-xr-x 7 mysql mysql 512 jun 25 14:01 mysql-test

Por el primer caracter sabemos que mysql-test es un directorio

  • Por los caracteres 2,3 y 4 (primera serie de 3) sabemos que el propietario del archivo tiene permisos de lectura (r), escritura (w) y ejecución (x)
  • Por los caracteres 5,6 y 7 (segunda serie) que los miembros del grupo tienen permisos de lectura (r) y ejecución (x), pero no de escritura.
  • Por los caracteres 8,9 y 10 (tercera serie) que los demás usuarios tienen permisos de lectura (r) y ejecución (x), pero no de escritura.

Cambiando los permisos

Para cambiar los permisos de un archivo o directorio en Unix, utilizamos el comando chmod con la sintaxis:

chmod [-fR] archivo

-f sirve para que realice los cambios sin dar ninguna advertencia

-R para que sera recursivo, es decir si se aplica sobre un directorio los cambios también aplicarán a todos lo archivos y subdirectorios dentro de él

indica los permisos que tendrá el archivo y se especifica mediante 3 números producto de una conversion de binario a decimal donde el primer dígito indicara los permisos para el usuario, el segundo para el grupo y el tercero para todos los usuarios. La conversión se hace de la siguiente forma:

Definimos los permisos que queremos poner al archivo, por ejemplo rwxrwxr-x y a cada letra le asignamos el número 1 y a cada - el número 0 en notación binaria.

rwxrwxr-x sería:

111111101 pero dividido en los tres grupos quedaría 111 111 101 y la conversión de cada grupo a número decimal sería como sigue:

111 en binario = 7 en decimal

101 en binario = 5 en decimal

por lo tanto el modo sería 775

Otro ejemplo para poner los permisos rwxr-xr-- ¿podrías hacer el ejercicio?

Respuesta: El código binario quedaría 111101100 entonces cada grupo sería 111 101 100 y la conversión:

111 en binario = 7 en decimal

101 en binario = 5 en decimal

100 en binario = 4 en decimal

entonces el modo sería 754.

Practica ahora la forma inversa. Si un archivo tiene permisos 664 ¿que permisos tendría el usuario, cuales el grupo y cuales todos los demás usuarios? La respuesta esta al final de está página.

Cambiando propietario y grupo del archivo

Se utilizan los comandos chown y chgrp aunque realmente con el chown podrías cambiar los dos al mismo tiempo y la sintaxis es como sigue:

chown [-fhR] propietario[:grupo] archivo

chgrp [-fhR] grupo archivo

Las opciones -f y -R funcionan de manera similar a las del comando chmod. La opción -h cambia el propietario (o grupo) del archivo si es una liga simbólica (recuerda que esto lo sabemos si el primer caracter es una l. Ver explicación del comando ls -l) Por ejemplo el siguiente comando cambia el propietario del achivo practica.txt para que sea el usuario jorge

chmod jorge practica.txt


Respuesta a la pregunta: Si un archivo tiene permisos 664 ¿que permisos tendría el usuario, cuales el grupo y cuales todos los demás usuarios? La respuesta esta al final de está página.

 

El primer 6 es para permisos del propietario, el segundo para permisos del grupo y el 4 para todos los demás usuarios entonces, haciendo la conversión de decimal a binario:

6 en decimal = 110 en binario

4 en decimal = 100 en binario

Por lo tanto del código binario de los permisos quedaría 110110100 y llevándolo a las letras de los permisos seria rw-rw-r-- los permisos sería lectura y escritura para el propietario y para el grupo y solo lectura para los demás usuarios.