Conceptos Básicos sobre Permisos de Linux - Usar Umask en un Servidor

Actualizado el . Posteado en Blog. Visitado 4332 veces.

                    Conceptos Básicos Permisos Linux Usar Umask Servidor

Introducción

Los permisos de Linux permiten que un propietario de archivo o directorio restrinja el acceso basado en la relación del usuario con cada archivo. Esto permite esquemas de control que proporcionan diferentes niveles de acceso a diferentes personas.

El comando "umask" se utiliza para determinar los permisos predeterminados asignados a los archivos creados por cada usuario. Se puede modificar para proporcionar restricciones de seguridad estrictas o permisos relajados para escenarios de uso compartido de archivos, dependiendo de las necesidades del sistema y del usuario.

Este tutorial explicará los conceptos básicos de los permisos de Linux y demostrará la utilidad de configurar correctamente "umask". También cubrirá brevemente el comando "chmod" como una herramienta de permisos asociados.

Categorías de Permiso

Los permisos de Linux pueden parecer oscuros y difíciles de entender para los nuevos usuarios. Sin embargo, una vez que esté familiarizado con la forma en que se representan los permisos, es trivial leer y cambiar los permisos de un archivo o directorio con facilidad.

Permisos del Propietario

El primer concepto necesario para entender los permisos es que Linux es fundamentalmente un sistema operativo multiusuario.

Cada archivo es propiedad de exactamente un usuario. Incluso si usted es la única persona que usa su servidor, todavía hay una serie de "usuarios" diferentes creados para ejecutar programas específicos. Puede ver los diferentes usuarios de su sistema escribiendo:

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
. . .

El archivo / etc / passwd contiene una línea para cada usuario que se haya creado en su sistema operativo. El primer campo en cada línea es el nombre de un único usuario. Como puede ver, muchos de estos usuarios están asociados con servicios y aplicaciones.

Configurar servicios para operar como un usuario distinto nos permite controlar el acceso al servicio aprovechando la asignación de permisos de usuario. Muchos programas están configurados para crear un nombre de usuario y realizar todas las operaciones que utilizan ese usuario.

Permisos del Grupo

La segunda categoría a la que podemos asignar permisos es el "propietario del grupo" del archivo.

Al igual que con la categoría de propietario, un archivo puede ser propiedad de exactamente un grupo. Cada usuario puede ser miembro de varios grupos y cada grupo puede contener varios usuarios.

Para ver los grupos a los que pertenece actualmente su usuario, escriba:

groups

Esto le mostrará todos los grupos de los que su usuario es actualmente miembro. De forma predeterminada, sólo puede ser miembro de uno o dos grupos, uno de los cuales podría ser el mismo que su nombre de usuario.

Para mostrar todos los grupos actualmente disponibles en su sistema, escriba:

cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
. . .

El primer campo de cada línea es el nombre de un grupo.

Linux le permite asignar permisos basados ​​en el propietario del grupo de un archivo. Esto le permite proporcionar permisos personalizados a un grupo de personas ya que sólo un usuario puede poseer un archivo.

Otros Permisos

La última categoría a la que puede asignar permisos es la categoría "otros". En este contexto, otro se define como cualquier usuario que no es el propietario del archivo y no es miembro del grupo que posee el archivo.

Esta categoría le permite establecer un nivel de permisos base que se aplicará a cualquier persona que no pertenezca a los otros dos grupos de control.

Tipos de Permisos

A cada categoría de permisos (propietario, propietario de grupo y otros) se les pueden asignar permisos que permiten o restringen su capacidad de leer, escribir o ejecutar un archivo.

Para un archivo regular, se requieren permisos de lectura para leer el contenido de un archivo, se necesitan permisos de escritura para modificarlo y se necesitan permisos de ejecución para ejecutar el archivo como un script o una aplicación.

Para los directorios, los permisos de lectura son necesarios para ls (listar) el contenido de un directorio, los permisos de escritura son necesarios para modificar el contenido de un directorio, y los permisos de ejecución permiten al usuario cd (cambiar directorios) al directorio.

Linux representa estos tipos de permisos usando dos anotaciones simbólicas separadas: alfabética y octal.

Notación Alfabética

La notación alfabética es fácil de entender y es utilizada por algunos programas comunes para representar permisos.

Cada permiso está representado por una sola letra:

  • R = permisos de lectura
  • W = permisos de escritura
  • X = permisos de ejecución

Es importante recordar que los permisos alfabéticos siempre se especifican en este orden. Si se concede un cierto privilegio, se representa con la letra apropiada. Si el acceso está restringido, se representa con un guión (-).

Los permisos se dan primero para el propietario de un archivo, seguido por el propietario del grupo y finalmente para otros usuarios. Esto nos da tres grupos de tres valores.

El comando ls usa la notación alfabética cuando se llama con su opción de formato largo:

cd /etc
ls -l
drwxr-xr-x 3 root root    4096 Apr 26  2012 acpi
-rw-r--r-- 1 root root    2981 Apr 26  2012 adduser.conf
drwxr-xr-x 2 root root    4096 Jul  5 20:53 alternatives
-rw-r--r-- 1 root root     395 Jun 20  2010 anacrontab
drwxr-xr-x 3 root root    4096 Apr 26  2012 apm
drwxr-xr-x 3 root root    4096 Apr 26  2012 apparmor
drwxr-xr-x 5 root root    4096 Jul  5 20:52 apparmor.d
drwxr-xr-x 6 root root    4096 Apr 26  2012 apt
…

El primer campo en la salida de este comando representa los permisos del archivo.

Diez caracteres representan estos datos. El primer carácter no es realmente un valor de permisos y en su lugar significa el tipo de archivo (- para un archivo regular, d para un directorio, etc).

Las nueve caracteres siguientes representan los permisos que discutimos anteriormente. Tres grupos que representan propietario, propietario de grupo y otros permisos, cada uno con valores que indican permisos de lectura, escritura y ejecución.

En el ejemplo anterior, el propietario del directorio "acpi" tiene permisos de lectura, escritura y ejecución. El propietario del grupo y otros usuarios han leído y ejecutado permisos.

El archivo "anacrontab" permite al propietario del archivo leer y modificar, pero los miembros del grupo y otros usuarios sólo tienen permiso para leer.

Notación Octal

La forma más concisa, pero un poco menos intuitiva de representar los permisos es con la notación octal.

Utilizando este método, cada categoría de permisos (propietario, propietario de grupo y otros) se representa por un número entre 0 y 7.

Llegamos al número apropiado asignando a cada tipo de permiso un valor numérico:

  • 4 = permisos de lectura
  • 2 = permisos de escritura
  • 1 = permiso de ejecución

Sumamos los números asociados con el tipo de permisos que queremos conceder para cada categoría. Este será un número entre 0 y 7 (0 que representa ningún permiso y 7 que representa los permisos de lectura, escritura y ejecución completos) para cada categoría.

Por ejemplo, si el propietario del archivo tiene permisos de lectura y escritura, esto se representaría como un 6 en la columna del propietario del archivo. Si el propietario del grupo sólo necesita permisos de lectura, se puede utilizar un 4 para representar sus permisos.

Similar a la notación alfabética, la notación octal puede incluir un carácter principal opcional que especifica el tipo de archivo. Esto es seguido por permisos de propietario, permisos de propietario de grupo y otros permisos, respectivamente.

Un programa esencial que se beneficia del uso de la notación octal es el comando chmod .

Uso del Comando Chmod

La forma más popular de cambiar los permisos de un archivo es mediante la notación octal con el comando chmod . Ahora trabajaremos mediante la creación de un archivo vacío en nuestro directorio personal:

cd
touch testfile

En primer lugar, permite ver los permisos que se dieron a este archivo después de la creación:

ls -l testfile
-rw-rw-r-- 1 demouser demouser 0 Jul 10 17:23 testfile

Si interpretamos los permisos, podemos ver que el propietario del archivo y el propietario del grupo de archivos tienen privilegios de lectura y escritura y otros usuarios tienen capacidades de lectura.

Si lo convertimos en notación octal, el propietario y el propietario del grupo tendrían un valor de permiso de 6 (4 para leer, más 2 para escribir) y la otra categoría tendría 4 (para leer). Los permisos completos estarían representados por el triplete 664.

Vamos a pretender que este archivo contiene un script bash que nos gustaría ejecutar, como el propietario. No queremos que nadie modifique el archivo, incluidos los propietarios de grupos, y no queremos que nadie en el grupo pueda leer el archivo en absoluto.

Podemos representar los permisos deseados configurados alfabéticamente de la siguiente manera: -rwxr -----. Vamos a convertir que en notación octal y cambiar los permisos con chmod :

chmod 740 testfile
ls -l testfile
-rwxr----- 1 demouser demouser 0 Jul 10 17:23 testfile

Como se puede ver, los permisos se asignaron correctamente.

Si queremos cambiar los permisos de nuevo, podemos hacerlo fácilmente dando a chmod el siguiente comando:

chmod 664 testfile
ls -l testfile
-rw-rw-r-- 1 demouser demouser 0 Jul 10 17:23 testfile

Establecer Permisos Predeterminados con Umask

El comando "umask" define los permisos predeterminados para los archivos recién creados basados ​​en el conjunto de permisos "base" definido para archivos y directorios.

Los archivos tienen un conjunto de permisos de base de 666 o acceso de lectura y escritura completo para todos los usuarios. Los permisos de ejecución no se asignan de forma predeterminada porque la mayoría de los archivos no se ejecutan (la asignación de permisos ejecutables también abre algunas preocupaciones de seguridad).

Los directorios tienen un conjunto de permisos base de 777, o leer, escribir y ejecutar permisos para todos los usuarios.

Umask opera aplicando una "máscara" sustractiva a los permisos de base mostrados arriba. Usaremos un ejemplo para demostrar cómo funciona esto.

Si queremos que el propietario y los miembros del grupo de propietarios puedan escribir en directorios recién creados, pero no en otros usuarios, queremos asignar los permisos a 775.

Necesitamos el número de tres dígitos que expresaría la diferencia entre los permisos base y los permisos deseados. Ese número es 002.

  777
- 775
------
  002

Este número resultante es el valor umask para aplicar. Coincidentemente, este es el valor umask predeterminado para muchos sistemas, como vimos cuando creamos un archivo con el comando touch anterior. Intentemoslo de nuevo:

touch test2
ls -l test2
-rw-rw-r-- 1 demouser demouser 0 Jul 10 18:30 test2

Podemos definir una umask diferente utilizando el comando umask .

Si queremos asegurar aun más nuestro sistema, podemos decir que de manera predeterminada, queremos que los usuarios que no sean propietarios de archivos no tengan permisos en absoluto. Esto se puede lograr con la 077 umask:

umask 077
touch restricted
ls -l restricted
-rw------- 1 demouser demouser 0 Jul 10 18:33 restricted

Si tenemos un proceso que crea contenido compartido, es posible que desee dar permisos completos a cada archivo y directorio que cree:

umask 000
touch openfile
ls -l openfile
-rw-rw-rw- 1 demouser demouser    0 Jul 10 18:36 openfile

De forma predeterminada, la configuración asignada a umask sólo se aplicará a la sesión de shell actual. Al iniciar sesión la próxima vez, los archivos y directorios nuevos se darán los ajustes originales elegidos por su distribución.

Si desea que sus configuraciones de umask persistan en las sesiones, puede definir la configuración de umask en su archivo .bashrc:

cd
nano .bashrc

Busca para ver si ya hay un conjunto de valores de umask. Modifique el valor existente si lo hay. De lo contrario, agregue una línea en la parte inferior del archivo con la configuración de umask deseada:

umask 022

Aquí, hemos elegido dar al propietario permisos completos, y quitar permisos de escritura para el propietario del grupo y otras categorías. Ajusta esta configuración a tu gusto para que tus preferencias estén disponibles la próxima vez que inicies sesión.

Una Palabra de Advertencia

Un punto muy importante para recordar es cambiar permisos con ciertas áreas del sistema de archivos y ciertos procesos requieren permisos específicos para ejecutarse correctamente. Los permisos inadecuados pueden provocar errores y aplicaciones que no funcionan.

Por otro lado, los ajustes que son demasiado permisivos pueden ser un riesgo para la seguridad.

Por estas razones, se recomienda no ajustar los permisos fuera de su propio directorio de inicio a menos que tenga conocimiento de las repercusiones que pueden surgir debido a configuraciones configuradas incorrectamente.

Otra buena regla a la que atenerse, especialmente cuando se configura manualmente el software, es asignar siempre la directiva de permisos más restrictiva posible sin afectar la funcionalidad.

Esto significa que si sólo un usuario (como un servicio) necesita acceder a un grupo de archivos, entonces no hay necesidad de permitir que el resto del mundo tenga escritura o incluso acceso de lectura al contenido. Esto es especialmente cierto en contextos donde las contraseñas se almacenan en texto sin formato.

Puede afinar los permisos de forma más completa utilizando correctamente los permisos del propietario del grupo y agregando los usuarios necesarios al grupo apropiado. Si todos los usuarios que necesitan acceso a un archivo son miembros del propietario del grupo, la otra categoría de permisos puede bloquearse para obtener mayor seguridad.

Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian

licencia creative common
Este trabajo está licenciado por Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Sobre el Autor
Pipe Peña
Author: Pipe Peña
Soy un loco enamorado de la vida. Licenciado en Ciencias Sociales y Humanas, amante de la informática y la astrofísica. Me gusta crear e investigar proyectos que enriquezcan la construcción y desarrollo del conocimiento individual y colectivo. Me encantan los videojuegos, el cine, la química, matemáticas, la física cuántica y la música, en donde actualmente soy compositor. Me baso en la idea que toma Baruch Spinoza sobre Dios.

Imprimir


Comentar este artículo en los foros (0 respuestas).