En este rápido tutorial, veremos cómo podemos utilizar el comando chmod en una máquina Ubuntu para encontrar, modificar y eliminar los permisos de usuario de archivos específicos que existen en el sistema de archivos del usuario. Vamos a jugar a través de varias condiciones para que podamos dominar los comandos chmod básicos que pueden hacer nuestra vida cotidiana más fácil con Ubuntu.
Linux Permisos
Linux Permisos son un gran conjunto de reglas que son simples de entender si captamos los derechos básicos. Los tres puntos principales que tenemos que entender para saber cómo funcionan los permisos de Linux son:
- El elemento para el que se definieron los permisos
- Qué acciones se pueden realizar con un permiso
- Quién puede realizar qué acciones
Hay dos elementos básicos en el Sistema de Archivos de Linux:
- Directorios
- Archivos
Hay tres acciones que se pueden realizar:
- Leer
- Escribir
- Ejecutar. Aparte de ejecutar scripts, las mismas acciones son necesarias para crear ficheros y otras carpetas dentro de él
Los usuarios que pueden realizar estas acciones son:
- Propietario del fichero
- Grupo del propietario del fichero
- Usuario que no está asociado al grupo propietario o al propio propietario
Para ver los permisos relacionados con un fichero, ejecutar el siguiente comando:
Esto es lo que obtenemos con este comando:
Encontrar permiso para archivos
En la salida, los primeros 10 caracteres presentan el permiso para el archivo:
- El primer carácter, que es ‘-‘ en este caso significa que se trata de un archivo. Para un directorio, habría sido una ‘d’.
- Los nueve caracteres siguientes representan los permisos para el propietario, el grupo del propietario y otros, respectivamente.
Modificación de permisos
La sintaxis para modificar el permiso de un archivo tiene el siguiente aspecto:
Representación octal para los permisos
Podemos presentar los permisos como un número octal. Por ejemplo, para establecer permisos de lectura, escritura & ejecución para el propietario, permisos de lectura & escritura para su grupo, y ningún permiso para los demás, a un fichero hello.txt, ejecutaremos el siguiente comando:
Una vez que ejecutamos el comando anterior e intentamos leer un archivo con una cuenta no propietaria utilizando el siguiente comando:
Obtendremos el siguiente error:
¿Pero de dónde sale ese número? Cada dígito de ese número representa un conjunto de permisos. Veamos cómo se derivaron:
- 0: Significa ningún permiso
- 1: Significa el permiso de ejecución
- 2: Significa el permiso de escritura
- 4: Significa el permiso de lectura
Para asignar los permisos de lectura, escritura & ejecución para el propietario, le asignamos el número 7(= 4 + 2 + 1). Vamos a entender mejor esto en una tabla de dígitos:
Número | Binario | Lectura | Escritura | Ejecución |
0 | 000 | NO | NO | NO |
1 | 001 | NO | NO | SÍ |
2 | 010 | NO | SÍ | NO |
3 | 011 | NO | SÍ | SÍ |
4 | 100 | SÍ | NO | NO |
5 | 101 | SÍ | NO | SÍ |
6 | 110 | SÍ | SÍ | NO |
7 | 111 | SÍ | SÍ | SÍ |
La tabla anterior es mucho más clara en cuanto a lo que representa cada uno en términos de permisos de archivo.
Representación de caracteres para los permisos
Podemos presentar los permisos como un número octal. Por ejemplo, para establecer permisos de lectura, escritura & ejecución para el propietario, permisos de lectura & escritura para su grupo, y ningún permiso para los demás, a un fichero hello.txt, ejecutaremos el siguiente comando:
Para añadir permisos a un usuario existente, también podemos hacer:
Aquí, el permiso de escritura se estaba asignando al grupo de usuarios del propietario del archivo.
Cambios de permisos recursivos
También podemos cambiar los permisos de los archivos contenidos en un directorio específico con un solo comando. Para modificar los permisos de todos y cada uno de los archivos y carpetas de un directorio proporcionado de una sola vez, utilice sudo chmod con -R:
Podemos ver la siguiente salida que refleja claramente el cambio en los permisos de los archivos:
Cambiando recursivamente los permisos de los archivos
Conclusión
En esta lección, vimos cómo podemos modificar los permisos de un archivo y si es necesario, hacerlo recursivamente. Entendimos los conceptos básicos detrás de los permisos de Linux que pueden ayudarnos mucho en nuestro trabajo diario.