Original article: Chmod Command – How to Change File Permissions in Linux

Uno de los primeros comandos que aprendí en Linux fue el comando touch que crea un archivo usando la línea de comando.

Si alguna vez tratas de crear, por ejemplo, un archivo de texto, todo lo que tienes que hacer es escribir touch filename.txt, presionar Enter, y el archivo es creado para ti en la carpeta donde estás. Luego puedes escribir lo que quieras dentro usando el editor de archivos de tu gusto.

Sin embargo, cuando se trata de crear scripts, las cosas se pueden poner un poco más complicadas. ¿Por qué es eso?

Déjame intentar mostrarte esto con un ejemplo. Supón que quieres crear un script usando 'touch'. Escribe touch example.sh, presiona Enter, y ahí lo tienes. Una vez más, puedes escribirlo usando un editor de archivos.

Con todo listo, todo lo que nos resta hacer es probarlo. Escribe ./sample.sh y presiona Enter para ver tu script en acción y... pero, ¿qué me está diciendo este mensaje?

Screenshot-from-2022-03-20-13-58-39

¿Por qué necesitamos permisos?

¡Yo soy el administrador! ¿Cómo es posible que no tengo permiso para ejecutar un script que yo mismo escribí segundos atrás?

En realidad hay una razón para eso – y, para ser honesto, la mayoría de usuarios deberían de ser agradecidos por ello, ya que no ser capaz de ejecutar scripts sin saber qué se está haciendo frecuentemente te previene de poner tu sistema en riesgo.

Vamos a conversar rápidamente sobre los permisos primero. Luego pasaremos a descubrir cómo cambiarlos.

Para obtener más información sobre tu archivo, usaremos el comando que lista los archivos en una carpeta: ls.

Después de escribir ls y presionar Enter, esto es lo que obtenemos de la línea de comando:

Screenshot-from-2022-03-20-14-05-58

Lo que hace es listar todos los archivos visibles de la carpeta en el que estás en este momento. Al agregarle la bandera -l, te provee con más información sobre los archivos de la carpeta. Este es el resultado cuando escribimos ls -l y presionamos Enter:

Screenshot-from-2022-03-20-14-08-00

Vemos el mismo archivo(s), pero con bastante información. Para empezar, tenemos una secuencia de diez guiones y letras que podrían parecer sin sentido a la primera. Esto es en realidad es el mapeo de permisos que tu archivo tiene.

El primer carácter puede ser un guion (- para un archivo común), una d (para una carpeta/directorio), o una l (para un enlace suave). Para ser más sencillos, me enfocaré en los archivos simples, aunque los permisos son válidos para todos estos tipos de archivos/carpetas.

Después del primer carácter, los otros 9 pueden ser divididos en grupos de tres. El primer trío muestran los permisos para el usuario actual. El próximo muestra los permisos para este grupo. Los últimos tres son los permisos para todos los usuarios que no encajan en esta categoría.

Para nuestra explicación, enfoquémonos en los primeros tres permisos, ya que no vamos a cambiar grupos ni nada parecido.

El primer trío dice rw-.

Es tiempo de entender qué son estos. Hay tres cosas que puedes hacer normalmente con un archivo: leerlo, escribir en él, y ejecutarlo. Eso es, básicamente, lo que significa esas tres letras.

La primera r se refiere a permisos de lectura. Luego tenemos w para permisos de escritura. Finalmente, un guion, lo que significa que cualquier cosa que debería estar ahí no está. Lo que debería de haber allí es una x, lo que significa ejecutable.

Así que, hablando del usuario actual (yo), los permisos que tengo para este archivo son los permisos de lectura y de escritura. No puedo, sin embargo, ejecutar el archivo sample.sh. Por eso, cuando tratamos de ejecutar el archivo, tengo ese mensaje 'permiso denegado'.

Entonces, ¿cómo puedo ejecutar este archivo? Ahí es donde el comando chmod entra en acción.

¿Qué hace chmod?

Bueno, he estado mencionando 'permisos' desde el inicio del artículo. Ampliemos esta explicación un poco para denotar qué son 'permisos' para acceder a un archivo de un cierto modo. Esto significa que r denota el permiso de acceder al archivo en modo lectura, w denota el permiso de acceder al archivo en modo escritura, y x denota el permiso de acceder al archivo en modo ejecución.

¿Por qué te estoy diciendo esto? Por el comando del que trata este artículo. chmod significa 'cambiar el modo'. En otras palabras, cuando uses este comando, estás cambiando el modo del archivo a cualquier modo que quieres usar.

Cómo usar los Operadores con cmod

Es necesario usar un operador con el comando chmod. Sirve para especificar el tipo de cambio que quieres hacer en los permisos.

Por ejemplo, + es el operador que usas para agregar un permiso a los que el archivo ya tiene. - remueve un permiso de la lista. Hay también el operador =, lo cual reinicia los permisos, así puedes definirlos nuevamente.

En nuestro caso, al escribir chmod -w sample.sh, lo que le estoy pidiendo al comando que haga es remover el permiso de escritura. Así que lo que tendría que hacer para agregar el permiso de ejecución es escribir chmod +x sample.sh.

Si ahora intento ejecutar el archivo, cualquier cosa que ponga en el script ahora va a ser ejecutado.

Usando ls -l, esto es lo que tendría ahora.

Screenshot-from-2022-03-20-14-12-03

¿Quién obtiene el permiso?

Algo más que vale la pena señalar es quién es el que obtiene este permiso. Verás que el 'x' es dado a todos los usuarios, al dueño del archivo, grupo y otros. Si esto no es lo que quieres, tal vez sería bueno quitar el permiso de ejecución nuevamente con chmod -x sample.sh.

Screenshot-from-2022-03-20-14-16-11

Para activar el permiso solamente para el dueño del archivo (yo, en este caso), deberíamos agregar una 'u' antes de '+x', así:

chmod u+x sample.sh

Escribe ls -l, esto es lo que tienes:

Screenshot-from-2022-03-20-14-18-22

Si querías dar el permiso tanto para el dueño como su grupo, entonces el comando debería ser chmod ug+x sample.sh.

Screenshot-from-2022-03-20-14-20-25

¡Genial! Pienso que esto cubre lo que querría mostrarte. Hay otras cosas que te interesarían, como usar chmod con valores octales o binarios para representar los permisos. Pero estos son modos que usamos para tener los mismos resultados y creo que con las letras es una forma más sencilla de lograr estos resultados.

En caso de que quieras más información sobre el comando, una cosa que puedes hacer es escribir chmod --help, el cual te dará un resumen de lo que el comando puede hacer. Una descripción aún más detallada se puede lograr escribiendo man chmod.

Espero que este artículo te haya sido de utilidad. Para más artículos sobre comandos de Linux, visita freecodecamp.org/espanol/news y freecodecamp.org/news.

¡Feliz codificación! 😃