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.