En Linux los archivos y las carpetas tienen asociados una serie de permisos que son: Lectura, Escritura y Ejecución. Estos permisos se asocian al usuario propietario, a los usuarios pertenecientas al mismo grupo al cual pertenece el usuario propietario y para el resto de usuarios, como cabe suponer si el usuario propietario no es root, el usuario root está por encima, de hecho es quien lo crea, modifica, da permisos y/o elimina.
Lectura: (read) Permite acceder en modo sólo lectura, si es directorio ver los archivos que contiene y si es archivo ver su contenido.
Escritura: (write) Permite acceder y modificar, crear y borrar.
Ejecución: (execution) Permite ejecutar archivos como si fueran un programa.
Los caracteres atribuidos a los permisos son:
r quiere decir escritura y viene de Read
w quiere decir lectura y viene de Write
x quiere decir ejecución y viene de eXecute
Para cambiar los permisos se usa chmod, acrónimo de change mode
si lista un directorio con el modificador l haciendo así >ls -l el sistema devolverá algo semejante a esto:
Podemos observar que a la izquierda de cada archivo hay primero una linea horizontal mediana y luego nueve lineas más ocupadas o no, cuando están ocupadas quiere decir que se han otrorgado permisos si se miuestra la "barra" - quiere decir que no se han otrorgado, son 10 barras, la primera y luego tres grupos de tres.
Despejamos la duda de la primera, la primera cuando es un archivo se muestra la barra (-) si es un directorio se muestra una d en lugar de la barra tal y como se puede observar en la imagen.
Los tres grupos de tres:
El primer grupo de tres son los permisos para el propietario, el segundo grupo para los usuarios del mismo grupo que el propietario y el tercer grupo para el resto. El order de cada grupo de tres es :
1º Read
2º Write
3º Execute
por ejemplo, los siguientes permisos:
-rwxr-xr-- = Empieza por - por lo tanto es un archivo y no un directorio. El propietario tiene todos los permisos R(ead) W(rite) (e)X(ecute), los miembros del grupo tienen permisos R - X ; es decir lectura y ejecución y el resto de usuarios R-- ; sólo lectura.
Por lo tanto, recopilemos:
Un archivo tiene tres conjuntos de permisos:
primero son los permisos del propietario
en segundo lugar, los permisos para el grupo propietario
por último, vienen los permisos para todos los demás.
Los permisos que se pueden aplicar son:
para acceso de lectura a un archivo (la capacidad de abrirlo y ver el contenido)
para acceso de escritura al archivo (la capacidad de cambiar el archivo o su contenido)
y, por último, para ejecutar el acceso al archivo (la capacidad de ejecutar el archivo como un programa)
Cada uno de estos permisos se puede permitir o denegar según sea necesario para cualquier archivo y se pueden configurar de manera diferente para el propietario, el grupo y todos los demás.
Nota: independientemente de los permisos establecidos, el usuario root siempre tiene acceso de lectura y escritura a cualquier archivo del sistema. Esto puede ser útil, ya que es posible establecer la propiedad y los permisos de modo que pueda eliminar su propio acceso a sus archivos y luego necesitar que el usuario root los restaure.
Cambio de permisos chmod
Para realizar los cambios de permisos de forma global se usa el comando chmod de la siguiente manera:
chmod 000 archivo o directorio
donde 000 va a ser el valor que asignemos
En los entornos Unix básicamente cada permiso tiene el siguiente valor:
Lectura: 4
Escritura: 2
Ejecución: 1
Usamos estos números de la siguiente manera,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)
Tenemos pues 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
Aunque esta sea la mas usada, hay otras formas de asignar permisos como por ejemplo usar la notación octal o asignar un permiso de ejecución por ejemplo a un archivo concreto usando + para asignarlo y - para anularlo, por ejemplo:
chmod +x archivo asigna a archivo el permiso de ejecución
chmod -x archivo quita a archivo el permiso de ejecución
chmod u+w archivo asigna a archivo el permiso de escritura para el usuario propietario
chmod ug+r archivo asigna a archivo el permiso de lectura al propietario y a su grupo.
Como con muchos comandos y acciones en linux con trastear y leer se aprende como hacer la misma cosa de varios modos, cada uno elige su preferido.