Permisos, propiedad y atributos
Cuando hacemos un ls -l y vamos a la parte de los permisos encontraremos algo como esto:
Modelo UGO
El modelo UGO viene de User, Group y Others, que es como un archivo en linux gestiona los permisos sobre un archivo, si tu uid(identificador) es igual al Uid del user o pertenece al Gid, entonces tendras los permisos que tiene designado alguno de ellos, y si no recibiras los permisos del archivo que pertenecen a otros.
- User: usuario que es el dueño del archivo
- Group: Grupo o el equipo que tiene ciertos permisos sobre el archivo.
- Other: otros y si eres el dueño y perteneces al grupo, lo que pasa es que cuando evalua primero al propietario y coincide, linux no continua evaluando el resto y se detiene ahi.
La Trinidad de los Permisos (rwx)
En linux los permisos son representados usando estos (no son los unicos hay permisos especiales):
- read: que se traduce como leer, y si esto lo que nos permite es leer archivos (lo que tiene anotado dentro del archivo), y en caso de un directorio ver la lista de elementos como archivos, o subdirectorios.
Como dato en linux un directorio es un archivo que dentro tiene los punteros o datos de sus subdirectorios o archivos que este contiene.
- write: que se traduce como escribir, y este permiso en un archivo te permite modificar el contenido del archivo, mientra que en un directorio este permiso te permite eliminar, renonbrar o crear archivos o subdirectorios dentro del directorio.
Como en linux el directorio es un archivo que contiene los datos como el puntero nombre, puedes reescribirlo, incluso agregar mas datos para crear archivos.
- execute: que se traduce como ejecutar, y este permiso en un archivo te permite ejecutar el archivo como si fuese un programa, binario o un script, mientras que en un directorio te permite entrar al directorio.
Es como el permiso necesario para tocar el directorio, asi que sin este permiso, el permiso de rw no sirven para un directorio.
Estos permisos tambien pueden ser representados por:
| permiso | letra | numero |
|---|---|---|
| read | r | 4 |
| write | w | 2 |
| execute | x | 1 |
Notación Octal vs. Notación Simbólica
En linux se tiene dos formas de manipular los permisos, una que es la notacion octal y otra que es la notacion simbolica.
Notación Simbólica
Esta notacion tiene esta estructura: <A quien> <que se va hacer> <el permiso>:
- A quien: este puede ser representado con
upara usuario,gpara grupo,opara otros o por ultimoapara todos. - Que se va hacer: este se puede representar usando el
+para agregar un permiso,-para quitar o=para asignar tal cual le pasas los permisos, si no le pasas este no se pone. - El permiso: donde representamos con
rpara lectura,wpara escritura oxpara ejecucion. (en caso de que se necesite representar ninguno, se debe dejar vacio)___
Ejemplos:
u+xle sumamos por así decirlo el permiso de ejecucion a los permisos que ya se tenian a propietario del archivo.
g-wle quitamos o restamos el permiso de escritura al grupo.
o=rle asignamos el permiso de lectura a los otros, pero remplazamos los permisos, asi que el permiso quedo comor--.
Notación Octal
Esta notacion tiene esta estructura: <valor octal u><valor octal g><valor octal o>.
En la notacion octal se usa la suma de los valores numericos que tiene cada permiso:
| permiso | letra | numero |
|---|---|---|
| read | r | 4 |
| write | w | 2 |
| execute | x | 1 |
| Sin permiso | - | 0 |
Para encontrar el valor octal se suma los 3 permisos dependiendo a cuales quieras agregar y el resultado es el valor octal que termina representando el conjunto de permisos que se le agregar:
| permisos (rwx) | Suma | Valor octal |
|---|---|---|
| --- | 0+0+0 | 0 |
| —x | 0+0+1 | 1 |
| -w- | 0+2+0 | 2 |
| -wx | 0+2+1 | 3 |
| r— | 4+0+0 | 4 |
| r-x | 4+0+1 | 5 |
| rw- | 4+2+0 | 6 |
| rwx | 4+2+1 | 7 |
Entonces ahora con los permisos, este seria un ejemplo de su uso 755 significa: 7 para el User (rwx), 5 para el Group (r-x) y 5 para Others (r-x), donde el primer digito es el propietario, el segundo el grupo y el tercero siempre los demas.
Herramientas de control
chmod (Change Mode)
Este comando significa cambiar modo, y lo que hace es alterar los permisos de un archivo(incluyendo directorios), y este acepta tant la notacion octal como la notacion simbolica.
- Su Sintaxis base es:
chmod [banderas] [permisos] [archivo/directorio]. - ejemplo con notacion octal:
chmod 777 test.sh. - ejemplo con notacion simbolica:
chmod u+xr,g+x archivo.sh.
chown (Change Owner)
Este comando se traduce al español como cambiar propietario, y eso es justo lo que hace, cambia al propietario o dueño del archivo o directorio a alguien mas, pero tambien te da la opcion de poder cambiar de grupo al archivo.
Pero este comando solo esta limitado al uso del usuario root.
- Su Sintaxis base es:
chown [banderas] [nuevo_dueño]:[nuevo_grupo] [archivo/directorio], pero no necesariamente se debe poner un nuevo grupo, solo cuando tambien desees cambiar el grupo y el propietario. - ejemplo basico solo cambiando al propietario:
chown cypher hola.txt - ejemplo basico cambiando al propietario y al grupo:
chown cypher:inf reporte.txt
chgrp (Change Group)
Este comando se traduce al español como cambiar grupo, y solo se usa para cambiar el grupo de un archivo(o directorio).
Pero este comando esta limitado, solo puede ser usado si es que el usuario es el propietario y pertenece al nuevo grupo.
- Su Sintaxis basica es:
chgrp [banderas] [nuevo_grupo] [archivo]. - ejemplo basico:
chgrp inges report.txt
Bandera de recursividad -R
Esta bandera es usable por los 3 comandos anteriores y sirve para seleccionas directorios y sus archivos de forma recursiva, es decir a sus directorios, sus directorios hijas, sus archivos, y normalmente se pone dentro de una directorio.