Permisos De Ficheros y Directorios
Table of contents
Importancia de Entender Permisos y Propiedades de Ficheros y Directorios
No podemos funcionar óptimamente en el entorno de Linux sin entender que son permisos y propiedades de Ficheros. Debemos tener un entendimiento mínimo del propósito de Umask y porque sirve establecer permisos de ficheros. En esta página veremos las utilidades nativas disponibles en Linux para establecer permisos de Ficheros y Directorios
Comprender los permisos de archivos y directorios en Linux es importante por varias razones:
Seguridad: los permisos de archivos y directorios determinan quién puede acceder, modificar y ejecutar archivos y directorios. Al configurar los permisos adecuados, puede controlar y restringir el acceso a datos confidenciales y evitar que usuarios no autorizados realicen cambios en archivos importantes.
Integridad de los datos: los permisos de archivos y directorios ayudan a garantizar que usuarios no autorizados no modifiquen ni eliminen accidentalmente archivos importantes. Al establecer los permisos adecuados, puede proteger sus datos para que no sean manipulados o perdidos.
Cumplimiento: Ciertas regulaciones o estándares de seguridad, como GDPR o PCI DSS, pueden requerir permisos de archivos y directorios. Al comprender e implementar los permisos adecuados, puede garantizar el cumplimiento de estas regulaciones y proteger a su organización de posibles multas o sanciones.
Colaboración: comprender los permisos de archivos y directorios es fundamental para una colaboración eficaz en un entorno multiusuario. Al configurar los permisos correctamente, puede permitir o restringir el acceso a archivos y directorios específicos, lo que permite a los usuarios trabajar juntos en proyectos mientras se mantiene la seguridad de los datos.
Que son permisos y propiedad de Ficheros
Hay varias acciones que un usuario usualmente quiere hacer cuando trabaja con Ficheros y Carpetas en un ambiente de Linux:
- crear, acceder, renombrar, mover or boarrar un archivo o una carpeta
- leer un archivo
- escribir a un archivo para actualizarlo
- ejecutar un programa para hacer alguna tarea
Cada una de esas actividades es controlada al nivel del usuario dueño de los recursos, de un grupo de usuarios o el resto de usuarios en el sistema que no pertenecen a un grupo en particular.
En Linux cada uno de esas actividades recibe un valor numérico.
Tipo De Permiso | Valor Numérico |
---|---|
(r)ead (leer) | 4 |
(w)rite (escribir) | 2 |
e(x)ecute (ejecutar) | 1 |
Estos valores se pueden sumar para asignar los permisos deseados.
Si queremos dar permiso de leer solamente, usamos el valor 4.
Si queremos dar permiso de leer y escribir juntamente, usamos el valor agregado de 4 y 2, es decir seis: (4+2)=6
.
Para dar permiso completo de leer, escribir y ejecutar, usames el valor agregado de 4, 2 y 1, es decir siete: (4+2+1)=7
.
Los permisos pueden darse a tres categorias de usuarios:
- dueño: el individuo que ha creado o se le ha asignado los recursos
- grupo: un grupo de usuarios en el sistema al que se le da acceso a los recursos pertenecientes a un usuario que puede o no ser parte del grupo.
- otros: o resto del mundo, todos los demas usuarios que no son dueños de los recursos
El tópico siguiente explica el origen de esos valores numéricos.
Entendiendo UMASK
Antes de entender y aplicar permisos, debemos entender que es UMASK y para que sirve.
UMASK es la máscara de creación del modo de archivo.
En Linux existe un número llamdo UMASK que es la máscara de creacion del modo de archivo en el ambiente del usuario. Linux usa este valor por defecto para establecer permisos cuando creamos ficheros y directorios en nuestro ambiente.
Tanto en Ubuntu como en RedHat podemos encontrar el valor por defecto the UMASK
en el archivo /etc/login.defs
.
-> grep -i umask /etc/login.defs
# UMASK Default "umask" value.
# UMASK is the default umask value for pam_umask and is used by
# 022 is the "historical" value in Debian for UMASK
# If USERGROUPS_ENAB is set to "yes", that will modify this UMASK default value
UMASK 022
Asi que, por defecto el valor de umask in Linux es 022
.
El valor numérico actual cuando creamos archivos y directories es governado por el valor de UMASK. Por defecto, el valor en /etc/login.defs
se aplica al sistema entero para todos los usuarios.
El valor de UMASK puede cambiarse.
Aunque no es recomendable, el valor de UMASK puede cambiarse de acuerdo a la política local de Administración de Sistemas. Cambiando el valor no afecta recursos que ya existen, solo afectara recursos creados despues del cambio.
Un usuario puede cambiar el umask en su propio ambiente al editar ~/.bashrc
y agregar un nuevo valor.
-> vi .bashrc
Agregar esta linea con el valor deseado.
umask 011
Releer la configuración para activar el cambio.
-> source .bashrc
Para ver el valor en nuestro ambiente podemos esar el comando umask
.
-> umask
0011
Linux usa los tres últimos números, contando de derecha a izquierda, para calcular los permisos, en este ejemplo usara 011
.
Permisos Predeterminados
Los permisos en Linux son el mecanismo usado para controlar acceso a recursos entre los usarios que entran al sistema.
Los suma de permisos son a seguir:
- carpetas:
777
- archivos:
666
El 7
se traduce a rwx
que indica leer, escribir, y ejecutar.
El 6
se traduce a rw-
que indica leer, escribir, no ejecutar.
Cada número aplica a una categoría de usuarios
7 7 7
6 6 6
[usuario] [grupo] [mundo]
Usando el valor por defecto the UMASK de 022
podemos ver los permisos que obtenemos.
Permisos Predeterminados de Carpetas
Básicamente, sustraemos la umask de 777
y nos da los permisos de ficheros.
Cuando creamos un fichero los permisos seran rwx rwx r-x
.
0777 --> rwx rwx rwx
- 0022
------
0775 --> rwx rwx r-x
Los valores indican lo siguiente:
- el usuario, como dueño obtiene acceso completo de leer, escribir y ejecutar
- el group, obtiene acceso completo de leer, escribir y ejecutar
- el mundo, obtiene acceso completo de leer y ejecutar, pero no escribir
Una carpeta no se puede acceder si no tiene permiso de ejecutar.
El permiso de ejecutar de una carpeta permite que podamos accederla. Si una carpeta no tiene persimo de ejecutar para un grupo de usuarios, entonces esos usuarios no pueden cambiar a esa carpeta.
Permisos Predeterminados de Ficheros
Básicamente, sustraemos la umask de 666
y nos da los permisos de archivo.
Cuando creamos un archivo los permisos seran rw- rw- r--
.
0666 --> rw- rw- rw-
- 0022
------
0664 --> rw- rw- r--
Los valores indican lo siguiente:
- el usuario, como dueño obtiene acceso de leer y escribir, pero no ejecutar
- el group, obtiene acceso de leer y escribir, pero no ejecutar
- el mundo, obtiene acceso de leer solamente
Los permisos pueded cambiarse con el comando CHMOD.
En la sección que sigue veremos como usar el comando chmod
para establecer permisos como lo deseamos.
Usando CHMOD Para Asignar Permisos
El usuario tiene libre albedrío para establecer permisos de archivos y directorios. El comando chown
existe para ese propósito.
La sintax general es así:
-> chmod <octal> <carpeta>
-> chmod <octal> <archivo>
Pasamos dos argumentos al comando chmod
:
- el valor octal del permiso a aplicar
- el fichero o directorio a cambiar
Por ejemplo:
-> chmod 750 miCarpeta
-> chmod 640 miArchivo.txt
El el caso anterior, hemos usado el valor octal (numérico) de 750
y 640
para establecer permisos. Si lo deseamos, en vez de números, podemos usar la letra correspondiente y el resultado será el mismo.
- u = usuario
- g = grupo
- o = otros
- a = todos (usuario, grupo, otros)
Por ejemplo:
chmod u=rwx,g=r-x,o=--- miCarpeta
chmod u=rw-,g=r--,o=--- miArchivo.txt
chmod a=rw- myArchivo.txt
En este ejemplo indicamos explicitamente la categoria de usuario y el permisio que se le aplica. El símbolo -
indica la ausencia de permiso.
Anteriormentete hemos dicho que el permiso de ejecutar de una carpeta permite que podamos accederla. Consideremos el ejemplo siguiente:
-> chmod 640 miCarpeta
En este caso, obtendremos un error al atentar acceder la carpeta con el comando cd
.
-> cd miCarpeta/
-bash: cd: miCarpeta/: Permission denied
La razón es que la carpeta no tiene permiso de ejecutar. Para arreglar el problema, demos el permiso necesario.
-> chmod +x miCarpeta
Usando CHOWN Para Asignar Dueño
El comando chmod
existe para aplicar permisos de propieded. El usuario tiene libre albedrío para establecer la propieded de archivos y directorios que le pertenecen. Sin embargo, esto debe ser hecho de manera juiciosa para no exponer información restringida.
La sintax general es así:
-> chown {usuario|grupo} <carpeta>
-> chown {usuario|grupo} <archivo>
Pasamos dos argumentos al comando chown
:
- el nombre del usuario o grupo al que aplicamos el permiso
- el fichero o directorio a cambiar
Por ejemplo:
-> chown migrupo miCarpeta
-> chown staff myArchivo.txt
Conclusion
El entendimiento de los permisos de archivos y directorios en Linux es esencial para mantener la seguridad de los datos, proteger la información confidencial y garantizar el cumplimiento de las regulaciones y estándares.
Los permisos en Linux son el mecanismo usado para controlar acceso a recursos entre los usarios que entran al sistema.
El valor de umask es un valor númerico que existe por defecto en sistemas de linux. Este valor es usado para establecer permisos de ficheros y directorios.
Referencias
Glosario De Comandos
Los comandos siguientes son usados frecuentemente en sesiones de Linux.
- umask
- valor máscara establecida para crear ficheros y directorios
- chmod
- comando para establecer permisos de ficheros y directorios
- chown
- comando para establecer la propiedad de ficheros y directorios
Referencias Utiles
Paginas Manuales