Cómo leer y cambiar los permisos de un fichero en Linux
Como seguramente ya sabes, en Linux hay una jerarquía de permisos de acceso a los ficheros y esta es la que le indica al sistema operativo quién puede ver, escribir o ejecutar un fichero en el equipo. Estos permisos son iguales en todas las distribuciones en Linux, ya sea en Ubuntu, Debian, ArchLinux o CentOS.
Puedes tener tu propia distribución de Linux instalada en una máquina virtual en tu equipo si accedes al curso gratuito de Linux básico que te ofrezco en mi web.
Puedes ir a la página oficial de Linux para ver como se aplican estos permisos, o quedarte aquí y entender de forma sencilla como leer y cambiar los permisos de los ficheros en Linux.
Los permisos en Linux vienen indicados por letras cuando lanzas un comando de listar los ficheros y directorios. Las primeras letras de cada línea te indican los permisos que tiene habilitados los ficheros y se leen en bloques de 3 letras a excepción de la primera letra que nos indica si nos encontramos con un directorio ( letra d) o con un fichero regular ( un guion “-“).
Índice de contenidos
Ver los permisos de los ficheros en Linux
Vamos a ver rápidamente los permisos de un fichero basta con lanzar el comando básico para listar, es decir este comando:
root@aprendolinux:/home/jaime/test# ls -l
total 112
drwxr-xr-x 2 jaime jaime 4096 may 22 2020 directorio1
drwxr-xr-x 2 jaime jaime 4096 feb 20 2020 directorio2
-rw-r--r-- 1 jaime jaime 45204 jun 23 17:13 fichero1
-rwxrwxrwx 1 jaime jaime 18 jun 23 17:42 fichero2
Como ves el directorio1 y el directorio2 tienen una “d” delante de los permisos, que como te comenté antes, significa que (obviamente) son directorios, jeje.
Qué significa “rwx” en Linux
Después vemos que tiene “rwx” lo que significa que tiene permisos de:
r: lectura | w: escritura | x: ejecución |
Y los bloques de permisos van de 3 en 3 y se leen en este orden:
USUARIO rwx | GRUPO rwx | TODOS rwx |
Por tanto cuando vemos como en el código anterior algo como “rw-r–r–” significa esto:
USUARIO rw– El propio usuario tiene permisos de lectura y escritura, pero no de ejecución. | GRUPO r– El grupo al que pertenece el usuario tiene permisos sólo de lectura. | TODOS r— Todos los usuarios del sistema tienen permisos parar leer. |
Cómo cambiar los permisos de un fichero o directorio (carpeta) en Linux
Si ya tenemos estos permisos en un fichero o en un directorio (lo que se asemejaría a una carpeta de Windows) pero queremos darle otros permisos diferentes, podemos hacerlo de varias formas… pero siempre con el mismo comando, que sería “chmod“
Usando chmod en Linux
Por ejemplo teniendo los permisos como en el fichero anterior, vemos que tenemos permisos de lectura y escritura pero faltaría el de ejecución. Si queremos darle permisos de ejecución de una vez a todos los grupos y personas del equipo, bastaría con lanzar el siguiente comando:
root@aprendolinux:/home/jaime/test# ls -l
drwxr-xr-x 2 jaime jaime 4096 may 22 2020 directorio1
drwxr-xr-x 2 jaime jaime 4096 feb 20 2020 directorio2
-rw-r--r-- 1 jaime jaime 45204 jun 23 2020 fichero1
-rwxrwxrwx 1 jaime jaime 18 jun 23 2020 fichero2
root@aprendolinux:/home/jaime/test# chmod +x fichero1
root@aprendolinux:/home/jaime/test# ls -l
drwxr-xr-x 2 jaime jaime 4096 may 22 2020 directorio1
drwxr-xr-x 2 jaime jaime 4096 feb 20 2020 directorio2
-rwxr-xr-x 1 jaime jaime 45204 jun 23 2020 fichero1
-rwxrwxrwx 1 jaime jaime 18 jun 23 2020 fichero2
Fácil, ¿no? Venga ahora vamos a empezar a a ponerlo un poco más difícil. Si no queremos añadir (+x) o quitar (-x) permisos en general, y lo que queremos es poner unos permisos específicos, como por ejemplo “rw-rw-rw” tenemos que pensar en código binario.
Pasar permisos Linux a código binario y decimal
Para pasar los permisos de un fichero o un directorio a código binario tenemos que volver a separarlos de tres en tres como hemos visto en el punto anterior. Y como siempre tienen la misma posición, asignamos un 1 o un 0 según los permisos estén activados o desactivados. Por ejemplo en el caso de “rwx r-x r-x” se trasladaría a unos y ceros en la tabla de esta forma:
USUARIO rwx 111 | GRUPO rwx 101 | TODOS rwx 101 |
Por lo tanto, pasando estos números de código binario a números decimales tendríamos 755. Entonces si queremos que el “fichero2” tenga directamente esos permisos igual que “fichero1” tendríamos que hacer lo siguiente:
root@aprendolinux:/home/jaime/test# chmod 755 fichero2
root@aprendolinux:/home/jaime/test# ls -l
drwxr-xr-x 2 jaime jaime 4096 may 22 2020 directorio1
drwxr-xr-x 2 jaime jaime 4096 feb 20 2020 directorio2
-rwxr-xr-x 1 jaime jaime 45204 jun 23 2020 fichero1
-rwxr-xr-x 1 jaime jaime 18 jun 23 2020 fichero2
¿Lo ves? Hemos cambiado con este comando el permiso de fichero2 y lo hemos puesto exáctamente igual que el permiso fijado en fichero1.