Los permisos son fundamentales en todo sistema de archivos de cualquier sistema operativo. De una u otra forma dependiendo del SO que se utilice se realiza de forma más específica o general. Por ejemplo en Windows la manipulación de estos permisos no se realizan de forma sencilla ya que dicha funcionalidad no se realiza de forma autónoma, caso contrario de los sistemas basados en GNU/Linux en los cuales estos permisos se realizan de forma simple. Estos permisos nos otorgan la libertad de compartir o restringir el acceso a distintos directorios o archivos.
Niveles de Permiso
Todos los archivos y directorios en Linux y Unix tienen tres niveles de permisos los cuales son:
- Usuario: Propietario del archivo, se representa con la letra U, es quien crea el archivo o directorio
- Grupo: Grupo propietario del archivo, se representa con la letra G, generalmente cada usuario pertenece al menos a un grupo de trabajo.
- Otros o Resto de usuarios, se representa con la letra O, aquí se agrupan al resto de usuarios o grupos con el cual el propietario no tiene ningún vínculo, es decir el resto de usuarios del sistema.
Tipos de Permiso
En cada uno de los niveles de permisos se pueden asignar los siguientes permisos
- Lectura (r): En archivos Puede listar, copiar o visualizarlo. En Directorios pueden ver el contenido, se pueden listar a través del comando ls
- Escritura (w): En archivos significa que se puede modificar o borrar el contenido, incluso puede modificar los permisos. En Directorios significa que puede crear, eliminar archivos y directorios dentro de ese directorio.
- Ejecución (x): En archivos significa que se puede ejecutar el contenido. En Directorios significa que podemos entrar en la carpeta (comando cd).
El comando ls –l lista el contenido de un directorio y el argumento l, muestra los permisos de cada uno de los archivos o directorios, se presenta de la siguiente manera.
Tal como se puede observar los permisos listados se representan en grupos de tres.
El primer carácter es el tipo de archivos, los cuales pueden ser:
- – archivo
- d directorio
- l enlace simbólico.
- c dispositivo de caracteres.
- b dispositivo de bloques.
- p tubería.
- s socket.
Los siguientes nueves caracteres conforman el tipo de permiso que están atribuido, se representan en el siguiente orden lectura(r), escritura (w), ejecución(x). Cuando se encuentra el carácter – indica que no tiene el permiso correspondiente al lugar.
Observemos unos ejemplos
En archivo1 se puede observar que:
- El propietario tiene permiso de lectura y escritura
- El grupo tiene permiso de lectura y escritura
- Los otros tienen solo permiso de lectura
En archivo2 se puede observar que
- El propietario tiene permiso de lectura y escritura
- El grupo tiene permiso de lectura
- Los otros tienen solo permiso de lectura
En archivo3 se puede observar que
- El propietario tiene permiso de lectura, escritura y ejecución
- El grupo tiene permiso de lectura, escritura y ejecución
- Los otros tienen solo permiso de lectura, escritura y ejecución
En directorio1 se puede observar que
- El primer carácter indica que es un directorio
- El propietario tiene permiso de lectura, escritura y ejecución
- El grupo tiene permiso de lectura, escritura y ejecución
- Los otros tienen solo permiso de lectura y ejecución
Modificación de permisos
Estos permisos pueden modificarse según sea la necesidad del administrador del archivo o directorio, esta acción se puede realizar mediante el comando chmod
chmod <modificadores><permiso> nombre_archivo
Los modificadores más importantes son
-R: modifica los permisos recursivamente
-v: muestra cada archivo o directorio que se está modificando
Este comando se puede utilizar de dos maneras en octal o en notación simbólica, la diferencia entre ambos radica en que la notación octal se debe especificar todos los permisos de los tres niveles mientras que en la simbólica se puede modificar solo los necesarios.
Modo Octal
La sintaxis es:
chmod <modificadores><permiso octal> nombre_archivo
Este método agrupa la combinación de bits apagados o encendidos (0 1) en cada uno de los grupos generando ocho posibles combinaciones por cada uno de ellos.
Permiso |
Valor Octal |
Tipo de permiso |
— |
0 |
Sin permiso |
–x |
1 |
Ejecución |
-w- |
2 |
Escritura |
-wx |
3 |
Escritura y ejecución |
r– |
4 |
lectura |
r-x |
5 |
Lectura y ejecución |
rw- |
6 |
Lectura y escritura |
rwx |
7 |
Lectura, escritura y ejecución |
Para obtener el permiso de un archivo o directorio se deben combinar los permisos de usuario, grupo y otros del cual se obtiene un número de tres cifras. Ejemplos
chmod 756 archivo.txt
- Propietario (u) tiene acceso total
- Grupo (g) Permite lectura y ejecución
- Otros(o) permite lectura y escritura
chmod 342 archivo.txt
- Propietario (u) permite escritura y ejecución
- Grupo (g) Permite lectura
- Otros(o) permite escritura
Modo Notación Simbólica
La sintaxis es:
chmod <usuario><operador><permiso> <fichero>
En este modo solo se especifica a quien se otorga el permiso, usuario(u), grupo(g), otros(o) o todos(a), el operador mas (+) agregar, menos (-) quitar, igual (=) específica un modo y los permisos otorgados., en esta notación se utiliza la asignación a (todos) la cual asigna a todos los nivel el permiso. Ejemplos
chmod u+rwx,g+rx,g-x,o-w archivo1.txt
- El usuario obtiene permisos lectura, escritura y ejecución
- El grupo obtiene permisos de lectura, escritura y pierde los de ejecución
- Otros pierde permisos de escritura (el resto se quedan como están)
chmod g-rw,o+x archivo1,txt
- El usuario mantiene los permisos que tiene originalmente
- El grupo pierde el permisos de lectura y escritura
- Otros obtiene el permiso de ejecución
chmod a-w archivo.txt
- El usuario, el grupo y otros pierden el permiso de escritura y mantiene los demás sin modificar.
chmod a=rwx archivo.txt
- Asigna todos los permisos a todos los usuarios