Te has preguntado ¿ Como se dan los permisos de archivos en linux ?

CHMOD 777, 755, 655, 644 y más permisos archivos Linux
Este tutorial os mostramos qué es el comando CHMOD, CHOWN y CHATTR con sus posibles combinaciones de permisos en archivos y carpetas Linux con ejemplos: chmod 777, 755, 666, 644 y más.

Una de las formas más prácticas como podemos proteger nuestros archivos y carpetas en entornos Linux es estableciendo de manera adecuada los permisos para que aquellas personas que acceden al sistema puedan o no editar estos archivos.

Todos estos valores los podemos establecer de forma sencilla y definiendo que alcance puede tener un usuario en una carpeta o archivo, puede ser lectura o escritura, y así mantener la integridad de nuestros archivos.

Los permisos con CHMOD de Linux son los que nos dan acceso a archivos y carpetas. CHMOD es el encargado de gestión de permisos de todo esto. Muchos los usáis en los servidores web entre otros debido a que es una de las funciones más útiles y efectivas a la hora de realizar y gestionar permisos en todos los ficheros y carpetas del servidor o equipo Linux.

El comando CHMOD nos da la posibilidad de poder cambiar los permisos de los archivos y carpetas de la máquina con Linux. Os detallamos en este tutorial algunos ejemplos. Se suele saber que el uso de CHMOD es lo mejor para pHp entre otros lenguajes, por eso es el uso de servidores Linux entre otras características. Para que entendáis el funcionamiento de estos comandos lo primero que debéis saber es cómo funciona.

Hoy analizaremos cómo establecer los permisos en un ambiente Linux.

Para este caso usaremos un archivo en Debian 8 pero el procedimiento es similar en cualquier distro de Linux.

1. Tipos de permisos en Linux

En todos los sistemas Unix existe un mecanismo que nos permite, como administradores, definir los tipos de acceso que se tendrá a un archivo o carpeta particular.

Dentro de este mecanismo de control de los entornos Unix existen dos tipos de variables que debemos conocer y entender su función:

Clases
Estas determinan que usuarios pueden acceder al archivo o carpeta

Permisos
Estos determinan la tarea que pueden ejecutar los usuarios autorizados en dichos archivos

Ahora, cuando damos clic derecho sobre un archivo o carpeta y nos dirigimos a la opción Propiedades podemos ver lo siguiente:

Dentro de este esquema identificamos tres (3) tipos de clases:

Propietario
Es la persona que ha creado el archivo o la carpeta

Grupo
Dentro de este parámetro definiremos el grupo de usuarios que tendrán acceso al archivo o carpeta

Otros
Dentro de este parámetro están incluidos los usuarios particulares

Ahora contamos con tres tipos de permisos de edición de nuestros archivos o carpetas, éstos son:

Lectura
Esta opción permite que el usuario vea el archivo pero no le da la potestad de realizar cambios en el mismo lo cual nos da un alto nivel de seguridad ya que no podrán editarlo, copiarlo o borrarlo.

Escritura
Al otorgar este permiso permitimos que los usuarios que acceden al archivo o carpeta puedan realizar sobre el mismo cualquier tipo de edición, Copiar, cortar, borrar) lo cual pone en riesgo la integridad del mismo.

Ejecutar
Al activar esta opción, la cual viene por defecto deshabilitada, podemos ejecutar archivos.

Comprendiendo esto podemos establecer combinaciones entre los permisos y las clases para determinar el mejor nivel de seguridad para nuestros archivos.

2. Comprendiendo códigos de error de permisos en Linux

Ahora llega uno de los puntos que como administradores o personal involucrado en el área de IT debemos conocer y es la identificación de los errores que surgen al momento en que un usuario intenta tomar alguna acción en un archivo, por ejemplo el famoso 777.

En los entornos Unix básicamente cada permiso tiene el siguiente valor:
Lectura: 4
Escritura: 2
Ejecución: 1

Debemos aprender a jugar con estos números de la siguiente manera, esto con el fin de hacer nuestra experiencia de Linux la mejor.

Si deseamos establecer un permiso de escritura usaremos el 6 (4 + 2= Lectura + Escritura)

Si deseamos que un usuario pueda ejecutar usaremos el 7 (4 + 2 + 1= Lectura + Escritura + Ejecución)

Ahora contamos con la siguiente tabla de valores:
0: Sin permisos
1: Ejecución
2: Escritura
3: Lectura y escritura
4: Lectura
5: Lectura y ejecución
6: Lectura y escritura
7: Lectura, escritura y ejecución

3. Tipos de permisos más comunes

Los tipos de permisos más comunes, o su combinación, son los siguiente:

666 ( RW / RW / RW)
Esta opción permite que todos los usuarios puedan leer y escribir en un archivo.

777 ( RWX / RWX /RWX)
Esta opción permite que todos los usuarios puedan leer, escribir y ejecutar en el archivo o carpeta

755 (RWX / RW / RW)
Con este permiso el propietario del archivo puede leer, escribir y ejecutar en el archivo mientras que los demás leer y escribir en el archivo mas no ejecutar.

644 (RW / R / R)

Con este permiso el propietario puede leer y escribir en el archivo mientras los demás solo pueden leer.

700 (RWX /—)
Con este permiso el propietario tiene el control total del archivo mientras que los demás usuarios no tendrán acceso de ningún tipo al archivo.

Como vemos contamos con diferentes opciones para establecer los respectivos permisos en Linux.

4. Como establecer un permiso a un archivo o carpeta

El procedimiento para establecer el permiso es muy sencillo. Basta con ir a la terminal y ejecutar la siguiente sintaxis:

chmod Tipo de permiso Ruta_Archivo

Por ejemplo:
chmod 666 /home/Solvetic/Solvetic.jpg
Contamos con estas interesantes opciones para establecer los mejores parámetros de seguridad en nuestros archivos y carpetas.

Viéndolo en sistemas Linux con letras veríais algo como esto en temas de permisos Linux al completo:

0 = — = sin acceso
1 = –x = ejecución
2 = -w- = escritura
3 = -wx = escritura y ejecución
4 = r– = lectura
5 = r-x = lectura y ejecución
6 = rw- = lectura y escritura
7 = rwx = lectura, escritura y ejecución

Si lo que queremos es dar varios permisos, lo que debemos hacer es sumarlos.

Si por ejemplo usamos el comando chmod 777:
chmod 777
Estamos diciendo que les damos a los 3 tipos de usuarios el máximo permiso, dándoles lectura, ejecución y escritura, y es de haber sumando 4+2+1 por eso usamos tres veces 7. Si queremos dar permisos de lectura escritura pues sería 4+2 = 6 si lo que queremos es sólo dar lectura sería 4. Si lo que queremos es dar lectura y ejecución sería de sumar 4 + 1 = 5. De ahí las diferentes combinaciones.
chmod 755
En este caso chmod 755 estamos dando permiso de lectura y ejecución (4+1) a todos los usuarios excepto al propietario que lo tiene completo (lectura, escritura, ejecución 4+2+1).
chmod 666
Este tipo de comando chmod lo que realiza es dar permisos de lectura y escritura a todos, excepto ejecución (4+2). Todos pueden acceder al archivo, leer su contenido y modificarlo.
chmod 644
Este chmod 644 se suele utilizar para no permitr la escritura a nadie que no sea el propietario. (755 es similar, lectura y ejecución y para propietario todos los permisos) Este chmod 644 más restrictivo (sólo lectura) y (lecura, escritura para propietario).

Estos comandos los podéis realizar por comandos, si es un servidor local, pues logandote y haciendolos de forma directa, si es remoto, os podéis conectar con este programa para que os aparezca la ventana del servidor Linux (como si estuvierais en local). O una otra opción es descargar gratis y utilizar el programa Filezilla que nos frece realizar estos cambios de permisos de forma gráfica (más fácil).

Os enseñamos en este caso un servidor Linux que conectamos de forma remota con Filezilla y aparece los permisos de forma gráfica tanto de los archivos como de las carpetas.

Si queremos cambiarlos pulsamos encima de la carpeta o archivo con el botón derecho y aparecerá la opción de Permisos del archivo, al pulsarlo aparece la ventana donde podemos cambiarlos.

Esperamos que os haya servido para entender el funcionamiento de los permisos en sistemas Linux / Unix. Pasemos a los otros 2 comandos para gestión de permisos.

5. Qué es y como usar comando CHOWN Linux

Dentro de las diversas tareas cotidianas que podemos implementar en ambientes Linux está la de establecer un nuevo propietario de un archivo o carpeta ya sea por temas de seguridad, organización o administración.
Una de las formas más prácticas que tenemos en Linux para este fin es el uso del comando chown y hoy veremos cómo podemos implementarlo y sacar el máximo provecho de este importante comando.

Qué es Chown
Chown (Change Owner – Cambiar Propietario) es un comando que nos ofrece la posibilidad de modificar el dueño o propietario de un archivo o carpeta en el sistema de archivos.

Este comando forma parte de la suite coreutils la cual viene incluida por defecto en todas las distros de Linux y usando Chown podemos especificar el nuevo propietario bien sea por su nombre o por la identidad del usuario dentro del sistema (UID).

Parámetros de Chown
Podemos definir una serie de parámetros para el uso de Chown los cuales son:
-c: Este parámetro nos permite definir los cambios que tendrá el archivo.
-R: Cambia de manera descendente el propietario de los directorios junto a su contenido.
-v: (verbose) Nos despliega una salida más descriptiva de la información.
–version: Nos despliega en pantalla la versión de Chown.
–dereference: Este parámetro actúa sobre valores simbólicos en lugar de hacerlo en el destino.
–reference: este parámetro cambia el propietario de un archivo tomando como referencia el propietario de otro archivo.
-h: Cuando se trata de enlaces simbólicos, cambia el propietario del destino en lugar del enlace propiamente dicho.

La sintaxis que debemos tener en cuanta cuando usamos Chown es la siguiente:
chown (opciones) usuario(:grupo) archivo(s) o directorio(s)
Para este estudio usaremos Ubuntu 16.

A continuación veremos algunos ejemplos de cómo usar Chown.

Modificar el propietario de un archivo
Esta es una de las tareas básicas que tenemos con el comando chown y en primer lugar debemos validar cuál es propietario actual del archivo, para ello usamos la sintaxis:
ls -lart Nombre_archivo
Hemos creado un archivo llamado solvetic.txt por lo cual ingresamos lo siguiente:
ls -lart solvetic.txt
Esto desplegará el propietario asó como los permisos que tiene actualmente y la fecha de creación.

Ahora estableceremos que el propietario de ese archivo será root, para ello ingresamos lo siguiente:
chown root solvetic.txt
Ahora ejecutamos de nuevo ls -lart solvetic.txt y podemos ver el nuevo propietario:

Modificando el grupo de un archivo
Podemos establecer un nuevo grupo para nuestros archivos usando chown, para ello debemos realizar el siguiente proceso:

Usar el comando ls – l (Nombre Archivo) para visualizar el grupo actual del archivo.

En este caso usaremos ls -l solvetic.txt. A continuación usaremos la siguiente sintaxis para la respectiva modificación:
chown :soporte solvetic.txt
(Soporte es el nombre del nuevo grupo).

Ver la versión actual de Chown
Para ello basta con ingresar lo siguiente:
chown –version

Modificar propietario de carpeta y todo lo que hay dentro de ella
Para esta tarea usaremos la siguiente sintaxis:
chown -R usuario carpeta
En este caso haremos que el usuario root sea el dueño de la carpeta, en este caso ingresamos lo siguiente:
chown -R root Solvetic

Cambiar grupo si el usuario pertenece a un grupo determinado
Podemos establecer que se modifique el grupo cuando el archivo está dentro de un grupo ya determinado.

Por ejemplo, si el archivo solvetic.txt está dentro del grupo solvetic el nuevo grupo se llamará soporte. Para ello usaremos el parámetro –from

En primer lugar usaremos ls -l solvetic.txt para visualizar el grupo al cual pertenece el archivo. Posteriormente usaremos la sintaxis –from:grupo actual) : (nuevo grupo) de este modo indicamos que si el archivo pertenece, en este caso, al grupo solvetic pase a ser del grupo soporte.

Copiar el propietario de un archivo a otro
Podemos copiar los parámetros que tiene un archivo a otro usando la opción –reference

En este caso tenemos dos archivos:
solvetic.txt = cuyo propietario es solvetic
pruebas.txt = cuyo propietario es root.

Usaremos la sintaxis:
chown –reference=solvetic.txt pruebas.txt
Para que el propietario de pruebas.txt sea el mismo de solvetic.txt

Vemos como chown nos ofrece diversas alternativas para la gestión de los propietarios en los diferentes archivos y carpetas en ambientes Linux de forma sencilla y confiable.

6. Qué es y como usar comando CHATTR Linux

Dentro de las funciones que como administradores de sistemas, personal de soporte o personal asociado al área de TI existe una muy importante que es la de modificar los atributos de una carpeta o archivo para incrementar sus niveles de seguridad, y el resultado que podemos obtener será el siguiente:
Evitar accesos no autorizados a los archivos o carpetas
Impedir la edición de los archivos
Evitar el robo de información
Llevar un control específico sobre las carpetas y archivos que están almacenados en el equipo

Aunque existen diversas formas para hacer esto hoy veremos un comando que tiene una amplia variedad de opciones para modificar los atributos en cualquier distro de Linux: Chattr

Qué es Chattr
Chattr (Change Attribute – Cambiar Atributos) es un comando que podemos implementar de manera sencilla con diversos parámetros que nos brindarán la posibilidad de proteger los archivos de borrados accidentales o de cambios involuntarios.

Una de las grandes ventajas de chattr es que protege los archivos incluso si la persona que intenta borrarlos tiene permisos de root.

Todos los atributos que pueden ser implementados con chattr son soportados por los sistemas nativos de Linux como son ext2, ext3, ext4 y btfrs lo cual permite que esta utilidad tenga un alcance mucho mayor de seguridad.

La sintaxis general para el uso de chattr es la siguiente:
chattr (operador) (atributo) (archivo)
Donde tendríamos que cambiar los datos entre paréntesis por lo que deseemos implementar. Lo veremos en los ejemplos que vienen a continuación.

Parámetros disponibles con Chattr

Como vemos debemos especificar ciertos parámetros que nos permiten definir el nivel de seguridad que tendrán nuestros archivos, son los siguientes por categoría:

Operadores
+: Permite que sean añadidos los atributos indicados a los atributos ya existentes en el archivo
-: Permite que se eliminen los atributos indicados a los atributos
=: Permite que los atributos indicados reemplacen los atributos existentes en el archivo.

Opciones
-V: Nos permite obtener una salida del comando chattr más descriptiva incluyendo la versión del programa.
-R: Esta opción cambia de manera descendente los atributos de los directorios y sus contenidos.
-v: Nos permite visualizar la versión del programa.

Atributos
a: Permite que el archivo solo pueda abrirse en modo de adjuntar para escritura.
A: Permite que la fecha del último acceso o atime no sea modificada.
c: Permite que el archivo se comprima de forma automática.
d: Permite definir que el archivo seleccionado no sea candidato para el respaldo al usar la herramienta dump.
D: Cuando hace referencia a un directorio permite que los datos sean escritos de forma sincrónica en el disco.
e: hace referencia a que el archivo o carpeta usa extensiones (extents) usadas para la cartografía de bloques.
j: Es usado en los sistemas de archivos ext3 y ext4 y permite establecer que el archivo sea escrito en el registro por diario cuando lo hemos montado con las opciones data=ordered o data=writeback.
i: Permite que el archivo sea inmutable, es decir, que pueda ser borrado o editado.
S: Indica que los cambios realizados en el archivo serán escritos de forma sincrónica en el disco.
s: Con este atributo los bloques usados en el disco duro serán escritos con ceros (0).
u: Al establecer este atributo cuando un archivo es eliminado su contenido queda almacenado para una posterior recuperación.

Usando Chattr en Ubuntu

Ahora veamos ejemplos prácticos sobre cómo implementar chattr en las distros de Linux, para este caso usaremos Ubuntu 16.

Hemos creado una carpeta llamada Solvetic y un archivo llamado pruebas.txt. Si deseamos proteger estos archivos usaremos la siguiente sintaxis (Usaremos sudo para que tenga los privilegios de superusuario).
sudo chattr +i Solvetic/ prueba.txt

Como vemos, aunque no se ha desplegado información, los cambios han sido procesados.

Comprobando los atributos

Para comprobar los atributos que hemos implementado usaremos lsattr y veremos lo siguiente:

Si intentamos borrar el archivo pruebas.txt, siendo superusuario, veremos que no es posible, usaremos la siguiente sintaxis:
sudo rm prueba.txt

Estableciendo los valores originales

SI deseamos que nuestros archivos no tengan los atributos de chattr usaremos la siguiente sintaxis:
sudo chattr -i Nombre_archivo
En nuestro ejemplo sería lo siguiente:
sudo chattr -i Solvetic/ prueba.txt
Ahora podemos intentar borrar el archive y veremos que ya es posible debido a que hemos removido los atributos:

Del mismo modo podemos proteger archivos que son delicados para la óptima función del sistema como por ejemplo
/etc/passwd y /etc/shadow files
Para proteger estos archivos debemos ingresar lo siguiente:
sudo chattr +i /etc/passwd
sudo chattr +i /etc/shadow files
Otro ejemplo de cómo podemos usar chart en Linux es usar el parámetro a el cual nos permite abrir el archivo en modo de adjuntar, para ello hemos creado un archivo llamado solvetic.txt

Posteriormente usaremos el comando:
sudo chartt +a Solvetic.txt
Para establecer este parámetro al archivo.

Podemos ver los atributos del archivo usando lsattr.

Ahora intentamos editar algo en el archivo usado el comando echo y veremos que se despliega el mensaje Operación no permitida. Si ahora usamos los símbolos >> podremos adjuntar algo al texto.

De este modo tenemos diversas opciones usando chattr en Linux y brindar parámetros de seguridad adicionales para nuestros archivos y carpetas más importantes usando alguno de los atributos que nos ofrece chattr.

fuente: solvetic.com

Deja una respuesta