Cada archivo, directorio y otros objetos del sistema en Linux tienen asignado un propietario y un grupo. Esta es la parte más básica, pero esencial, de la seguridad del sistema que protege a los usuarios entre sí. A los propietarios, usuarios que pertenecen a un grupo y a todos los demás se les puede conceder diferentes tipos de acceso para leer, escribir o ejecutar archivos. Esto se conoce generalmente como permisos de archivo en Linux.
Para establecer los permisos y gestionar la propiedad, usaremos los siguientes comandos:
- chmod: cambiar los permisos de los archivos
- chown: cambiar el propietario del archivo
- chgrp: cambiar la propiedad del grupo
- id: imprimir los ID de usuario y de grupo
Usuarios, grupos y todos los demás
Por lo general, el propietario de un archivo es el usuario que lo ha creado y (al menos inicialmente) el grupo es el asociado al propietario (también conocido como grupo primario ). Para ilustrarlo, vamos a crear un nuevo archivo llamado test1 en el directorio de trabajo actual:
1echo "Este es un archivo falso llamado test1">; test1
bash
Entonces hagámoslo:
1ls -l prueba1
bash
El primer carácter de la salida indica que test1 es un archivo regular (es decir, no un directorio u otro tipo de objeto del sistema). Los siguientes nueve caracteres (divididos en 3 grupos de 3) indican los permisos de lectura ( r ), escritura ( w ), y ejecución ( x ) del propietario, el propietario del grupo y los demás usuarios del sistema.
El primer grupo de 3 caracteres ( rw- ) indica que el propietario del archivo (usuario ) tiene permisos de lectura y escritura, como es el caso del grupo (como se indica en los 3 caracteres siguientes). Finalmente, el último grupo ( r– ) indica que el resto de los usuarios sólo pueden leer ese archivo – pero no escribirlo ni ejecutarlo.
Para cambiar los permisos de un archivo, usaremos chmod. Este comando debe ser seguido por una representación simbólica que indica a quién deben aplicarse los nuevos permisos:
- u significa usuario (o más precisamente, el propietario del archivo)
- g significa grupo
- o significa todos los demás usuarios
- a significa todos los usuarios
El tipo de permiso:
- +r añade el permiso de lectura
- -r elimina el permiso de lectura
- +w añade permiso de escritura
- -w elimina el permiso de escritura
- +x añade el permiso de ejecución
- -x elimina el permiso de ejecución
- +rw añade permisos de lectura y escritura
- +rwx añade permisos de lectura y escritura y de ejecución
y así sucesivamente.
Por último, también tenemos que indicar el nombre del archivo o directorio. Cambiemos los permisos de test1 de la siguiente manera. Para empezar, añadiremos permisos de ejecución sólo para el propietario:
1chmod u+x test1
bash
A continuación, haremos
1chmod o-rw test1
bash
para eliminar los permisos de lectura y escritura de los usuarios que no sean el propietario y que no formen parte del propietario del grupo.
Echemos un vistazo a los permisos actuales de test1 después de hacer los cambios anteriores:
1ls -l prueba1
bash
Otra forma de establecer permisos es usar un octal en lugar de una expresión simbólica. Para traducir a octal, debemos dividir los permisos deseados en grupos de 3 caracteres y usar la siguiente tabla para reemplazar cada grupo con su equivalente octal:
PermisosBinaryOctal—0000–x0011-w-0102-wx0113r–1004r-x1015rw-1106rwx1117
Cada permiso se denomina a menudo basado en bits en la tabla anterior. Así, la presencia de un permiso dado significa que el bit correspondiente está fijado. Por ejemplo, r-x significa que tanto el bit de lectura como el de ejecución están establecidos, mientras que el bit de escritura no lo está. Por lo tanto, si necesitas asignar a rwx permisos sobre test1 para el propietario, rw para el grupo, y sólo r para todos los demás, debes hacer
1chmod764 test1
bash
Otros ejemplos:
- permisos rw para el propietario y el grupo y ningún acceso para otros usuarios: chmod 660 test1
- Todos los permisos (rwx) para el propietario pero sólo los permisos de lectura y ejecución para todos los demás (esto incluye tanto al grupo como a los demás usuarios): chmod 755 test1
Cuándo usar la expresión simbólica o la forma octal para establecer los permisos depende del escenario específico. Si sólo se necesita establecer un poco, es probable que la expresión simbólica sea más rápida. Pero si queremos establecer diferentes permisos para el propietario, el grupo y todos los demás, la forma octal es más fácil y directa.
Si ejecutamos los comandos anteriores, los permisos actuales de test1 son rwxr-xr-x ( 755 ) y tanto el propietario como el grupo son y , respectivamente.