Chmod

Chmod

Contenido

Comando Chmod en Linux:

El programa de línea de comandos chmod, abreviatura de change mode (cambiar modo en inglés) sirve para asignar permisos de acceso a carpetas y directorios en sistemas de archivos compatibles con los permisos de archivo típicos de Unix. Esto afecta, por regla general, a todos los sistemas de archivos estándar en las derivaciones de Linux que más se usan para operar servidores. Para hacer cualquier modificación en los atributos de los archivos chmod, es necesario ser propietario del archivo o contar con derechos raíz (administrador o root).

Linux es una de las opciones más populares entre los administradores de servidores web. En la mayor parte de ellos se instalan distribuciones de este sistema operativo tipo Unix como, por ejemplo, Ubuntu, Kali o Parrot. Una característica común a todos los derivados Unix es la atribución de derechos de acceso a los archivos y directorios. Los usuarios tienen la posibilidad de gestionarlos implementando chmod, un programa de línea de comandos que se activa con el comando chmod en la terminal de Linux.

Los permisos definen los privilegios para el propietario del archivo (el «usuario»), los miembros del grupo que posee el archivo (el «grupo») y cualquier otra persona («otros»). Hay dos formas de representar estos permisos: con símbolos ( caracteres alfanuméricos) o con números octales (los dígitos del 0 al 7).

Recomiendo ver antes el apartado de Permisos Básicos en Linux para entender mejor el funcionamiento del comando.

Sintaxis:

Asignar permisos con Chmod:

Los permisos en Linux se pueden reflejar tanto con letras como con números. Ambas formas son correctas e igual de funcionales. Sin embargo, lo más intuitivo son las letras, ya que nos permiten comprender mejor de qué permiso se trata. Los números son más usados por usuarios avanzados, al ser más rápido de especificar.

Cada archivo o carpeta que nos encontremos al listar el contenido de un directorio irá indicado con un símbolo:

  • – : Indica que se trata de un archivo.
  • d : Indica que se trata de un directorio.
  • l : Indica que se trata de un enlace (acceso directo, por ejemplo).

 

Y cada archivo o directorio lleva tres niveles de permisos diferentes: uno para el propietario, otro para los usuarios del mismo grupo que el propietario, y otro para los demás usuarios. A su vez, cada uno de estos niveles puede tener 3 valores diferentes en función del grado de privilegios que especifiquemos en el sistema. Estos valores podemos especificarlos por las siguientes letras:

  • r : Permiso de lectura (permite abrirlo, copiarlo, etc).
  • w : Permiso de escritura (permite modificarlo, borrarlo, etc).
  • x : Permiso de ejecución (si es binario, permite ejecutarlo).

 

De esta manera, tenemos que elegir los permisos (rwx) para cada nivel de usuario (dueño, grupo y otros).

Chmod debe ir acompañado del nuevo nivel de privilegios que queramos darle al nuevo archivo o directorio, así como de un «+» si lo que vamos a hacer es darle ese nuevo permiso, o un «» si lo que vamos a hacer es quitarle permisos.

También podemos cambiar los permisos del «grupo» y «otros usuarios» añadiendo los parámetros «g» y «o» respectivamente. El propietario se indicaría sin este parámetro, o con una «u». Y si queremos cambiar los permisos a todos a la vez, podemos usar el parámetro «a».

				
					chmod [opciones] [permisos] [nombre del archivo]
				
			

Asignar Permisos de Ejecución al Propietario:

				
					chmod +x Archivo
				
			

Quitar Permisos de Ejecución al Propietario:

				
					chmod -x Archivo
				
			

Asignar Permisos de Lectura al Propietario:

				
					chmod +r Archivo
				
			

Asignar Permisos al Grupo del Usuario:

				
					chmod g+rwx Archivo
				
			

Asignar Permisos al Resto de Usuarios:

				
					chmod o+rwx Archivo
				
			

Asignar Permisos de Lectura a Propietarios, Grupos y Resto de Usuarios:

				
					chmod a+r Archivo
				
			

Asignar Permisos con Números Octales con Chmod:

Para representar los permisos en octal,  cada dígito es una combinación de los números 4 , 2 , 1 y 0:

  • 4 significa «leer».
  • 2 significa «escribir».
  • 1 significa «ejecutar».
  • 0 significa «sin permiso». 

 

Por ejemplo, en caso de querer representar chmod 754 archivo, entonces 7 es la combinación de permisos 4 + 2 + 1 (leer, escribir y ejecutar), 5 es 4 + 0 + 1 (leer, no escribir y ejecutar), y 4 es 4 + 0 + 0 (leer, no escribir y no ejecutar).

Los números de permisos que nos podemos encontrar serán los siguientes:

  • 0 = (Sin permisos)    
  • 1 = –x (Solo permisos de ejecución)
  • 2 = -w- (Solo permisos de escritura)
  • 3 = -wx (Permisos de escritura y ejecución)
  • 4 = r– (Solo permisos de lectura)
  • 5 = r-x (Permisos de lectura y ejecución)
  • 6 = rw- (Permisos de lectura y escritura)
  • 7 = rwx (Todos los permisos)

 

Dependencias en los permisos:

Debemos tener en consideración que cuando nos referimos a estos permisos en el sistema operativo de código abierto sobre un archivo, generalmente estos dependen de forma directa de los permisos de la carpeta que los alberga. Básicamente con esto lo que os queremos decir es que, aunque un archivo tenga una serie de permisos determinados, los usuarios tendrán que adaptarse a los que estén en un principio asignados a la carpeta principal donde se guardan. Es decir que, si se les asigna en el fichero un permiso de lectura y escritura, si esto está bloqueado en la carpeta superior, no se harán efectivos.

Evidentemente esto puede resultar muy útil para los administradores del sistema, ya que, para efectuar determinadas restricciones en multitud de archivos al mismo tiempo, basta con configurar correctamente los permisos de la carpeta contenedora. Por tanto, esto es lo que realmente significa la dependencia que tienen esos ficheros con respecto al directorio donde se guardan y que está a un nivel por encima.