====== Gestión de Permisos ====== ===== Comando_chmod ===== Sirve para gestionar los permisos en un sistema Linux; y en esta parte tenemos los permisos: {{pasted_image_20231119105827.png|}} Vamos quitar el permiso de lectura al archivo hola: {{pasted_image_20231119105914.png|}} Ahora vamos a quitar el permiso de escritura al archivo hola con chmod -w: {{pasted_image_20231119110120.png|}} Y si intentamos escribir, vemos que no podremos: {{pasted_image_20231119110137.png|}} ==== GESTIÓN DE PERMISOS CON NÚMEROS EN LINUX ==== Los permisos se pueden representar mediante números octales, donde: * 4 representa todos los permisos de lectura (r). * 2 representa todos los permisos de escritura (w). * 1 representa todos los permisos de ejecución (x). Por lo tanto, la combinación de estos números octales representa los permisos de cada conjunto (propietario, grupo y otros). Aquí hay algunos ejemplos: * **4** (lectura): 100 en binario. * **2** (escritura): 010 en binario. * **1** (ejecución): 001 en binario. Estos números octales se suman para representar los permisos. Por ejemplo: * **rwx** (lectura, escritura, ejecución): 4+2+1 = 7 en octal. * **rw-** (lectura, escritura, sin ejecución): 4+2+0 = 6 en octal. * **r--** (lectura, sin escritura, sin ejecución): 4+0+0 = 4 en octal. Entonces, cuando utilizas ''chmod'' con números, especificas los permisos para el propietario, el grupo y otros en ese orden. Por ejemplo: chmod 755 archivo * ''Propietario'' -> 1º dígito. Esto daría permisos completos al propietario (lectura, escritura y ejecución, con el número 7). * ''Grupos'' -> 2º dígito. El grupo tiene permisos de lectura y ejecución, pero no de escritura, debido a la suma de Lectura (4) + Ejecución (1) = 5 en octal. * ''Otros'' -> 3º dígito. Los otros tienen lo mismo, permisos de lectura y ejecución, pero no de escritura, debido a la suma de Lectura (4) + Ejecución (1) = 5 en octal. ==== EJEMPLOS ==== **Otorgar permisos completos al propietario y sólo de lectura a grupos y otros** chmod 744 nombre_carpeta Explicación de los permisos: * **Propietario (dueño):** Lectura (4) + Escritura (2) + Ejecución (1) = 7 * **Grupo:** Lectura (4) * **Otros:** Lectura (4) Esto significa que el propietario tiene permisos completos (lectura, escritura y ejecución), mientras que el grupo y otros tienen permisos solo de lectura. Puedes adaptar el comando según tus necesidades específicas. ==== GESTIÓN DE PERMISOS CON LETRAS EN LINUX ==== Así es cómo funciona la gestión de permisos con el comando ''chmod'' en Linux usando letras en lugar de números: * **u**: Usuario (propietario del archivo) * **g**: Grupo * **o**: Otros (resto de usuarios) * **a**: Todos (equivalente a ugo) Luego, las letras siguientes indican la acción a realizar: * **+**: Agregar permisos * ****: Quitar permisos * **=**: Establecer permisos exactos Y, finalmente, las letras que representan los permisos: * **r**: Lectura (read) * **w**: Escritura (write) * **x**: Ejecución (execute) ==== EJEMPLOS: ==== Por ejemplo, con la u damos permisos al usuario propietario y luego establecemos permiso de escritura, lectura o ejecución: {{pasted_image_20231215104856.png|}} Ahora por ejemplo, vamos a dar permiso de ejecución al grupo: {{pasted_image_20231215104926.png|}} Y ahora, de escritura a los otros: {{pasted_image_20231215104948.png|}} Además, la letra 's' se utiliza junto con 'u', 'g' o 'o' y con 'x' para establecer atributos especiales: * **s**: * Con 'u' y 'x', establece el bit SUID, permitiendo que el programa se ejecute con los privilegios del propietario del archivo. * Con 'g' y 'x', establece el bit SGID, lo que significa que el programa se ejecutará con los privilegios del grupo del archivo. * Con 'o' y 'x', establece el sticky bit, principalmente utilizado en directorios para asegurar que solo el propietario del archivo pueda eliminar o renombrar sus archivos. Por ejemplo, ''chmod u+rw archivo'' dará permisos de lectura y escritura al usuario, y ''chmod u+s programa'' establecerá el bit SUID en el programa. Es decir, si por ejemplo ejecutamos el comando sudo chmod u+s /bin/bash establece el bit de SUID (Set User ID) en un archivo ejecutable. Cuando se establece el bit SUID en un archivo ejecutable, dicho archivo se ejecuta con los privilegios del propietario del archivo en lugar de los del usuario que lo ejecuta. {{pasted_image_20231215105220.png|}} ===== Comando_setfact ===== El comando ''setfacl'' se utiliza para establecer listas de control de acceso (ACL). Las ACL permiten un control más detallado sobre los permisos de acceso a archivos y directorios en comparación con los permisos tradicionales de Unix. ''setfacl'' se utiliza para gestionar las Listas de Control de Acceso (ACL), que permiten definir permisos más detallados que los proporcionados por ''chmod''. **Ver ACL existentes:** Puedes usar el comando ''getfacl'' para ver las ACL existentes en un archivo o directorio. Por ejemplo: getfacl carpeta1 {{pasted_image_20231212152636.png|}} **Establecer nuevas ACL:** Para establecer una nueva ACL, puedes usar ''setfacl''. De tal forma que podemos asignar permisos a una carpeta para un usuario en específico. Por ejemplo, vamos a crear una carpeta donde nadie tenga ningún permiso: {{pasted_image_20231212153035.png|}} Y ahora con setfacl le damos permisos sólo al usuario Esteban: setfacl -m u:esteban:rwx carpeta {{pasted_image_20231212153119.png|}} Nos logueamos como el usuario Esteban y vamos a ver que con este usuario sí tenemos permisos de rwx sobre esta carpeta: {{pasted_image_20231212154033.png|}} Sin embargo, si ahora somos otro usuario, por ejemplo mario, veremos que no tenemos permisos: {{pasted_image_20231212153238.png|}} **Crear ACL a grupos** También puedes establecer ACL para grupos: setfacl -m g:grupo12:rw carpeta1 **Eliminar una ACL** Esto eliminará la entrada de ACL para el usuario especificado: setfacl -x u:usuario nombre_del_archivo ===== Comando umask ===== El comando ''umask'' se utiliza para establecer los permisos predeterminados para los nuevos archivos y directorios creados por un usuario. El nombre "umask" proviene de "user mask" o "user file creation mask". La máscara umask se utiliza para ocultar (o restar) ciertos permisos de los permisos predeterminados que se asignarían a un archivo o directorio recién creado. La máscara umask es un valor de tres dígitos octales (0-7) que se aplica al inverso de los permisos que se desean ocultar. Cada dígito en la máscara representa un conjunto específico de permisos (lectura, escritura y ejecución) para el propietario, el grupo y otros. La máscara umask se resta de los permisos predeterminados para determinar los permisos finales. La estructura de la máscara umask es la siguiente: umask [dígito de usuario] [dígito de grupo] [dígito de otros] * **Dígito de usuario:** Representa los permisos del propietario. * **Dígito de grupo:** Representa los permisos del grupo. * **Dígito de otros:** Representa los permisos para otros usuarios. Ejemplos de máscaras umask comunes: * ''umask 022'': Esto significa que se quitará la escritura para el grupo y otros. Los nuevos archivos tendrán permisos 644 (rw-r--r--). * ''umask 077'': Esto significa que se quitarán todos los permisos para grupo y otros. Los nuevos archivos tendrán permisos 600 (rw-------). * ''umask 002'': Esto significa que se quitará la escritura para otros. Los nuevos archivos tendrán permisos 664 (rw-rw-r--).