Permisos de Linux: SUID, SGID y sticky bit

Los permisos de Linux son un concepto con el que todos los usuarios se familiarizan íntimamente desde el comienzo de su desarrollo. Necesitamos ejecutar scripts, modificar archivos y ejecutar procesos para administrar sistemas de manera efectiva, pero ¿qué sucede cuando vemos? ¿Sabes por qué estamos viendo este mensaje? Si conoce la causa del problema, ¿sabe cómo implementar la solución?

Daré una explicación rápida de las diferentes formas de calcular los permisos y luego nos centraremos en los permisos especiales en Linux. Si desea una mirada en profundidad a la chmod comando, consulte este artículo de Sudoer Shashank Hegde, Permisos de Linux: Una introducción a chmod.

el TL; República Dominicana es que hay dos formas principales de asignar permisos.

método simbólico

El método simbólico utiliza la siguiente sintaxis:

[[email protected] ~]$ chmod WhoWhatWhich file | directory

O:

  • Cual - representa las identidades: u, g, o, a (usuario, grupo, otro, todos)
  • Qué - representa las acciones: +, -, = (añadir, quitar, definir exactamente)
  • Cual - representa los niveles de acceso: r, w, x (leer, escribir, ejecutar)

Un ejemplo de esto es si quiero los permisos y en un archivo llamado and, uso el siguiente comando:

[[email protected] ~]$ chmod ug+rw test.txt

La divulgación completa no es mi método preferido para otorgar permisos, y si desea obtener más información sobre este método, le recomiendo su motor de búsqueda más cercano.

Método numérico

El método digital es, en mi experiencia, la mejor manera de aprender y practicar permisos. Se basa en la siguiente sintaxis:

[[email protected] ~]$ chmod ### file | directory

Aquí, de izquierda a derecha, el personaje # representa un nivel de acceso. Hay tres niveles de acceso: usuario, grupo y otros. Para determinar qué es cada dígito, usamos lo siguiente:

  • Empezar en 0
  • Si es necesario establecer un permiso, agregue 4
  • Si es necesario establecer un permiso, agregue 2
  • Si es necesario establecer un permiso, agregue 1

Esto se calcula por nivel de acceso. Interpretemos este ejemplo de permisos:

-rw-r-x---

Las autorizaciones están representadas por 650. ¿Cómo llegué a estos números?

  • Los permisos de usuario son: rw- o 4 + 2 =6
  • Los permisos del grupo son: receta o 4 + 1 =5
  • Los permisos de los demás son: --- Donde 0

Para poner eso en la sintaxis del comando, se ve así:

[[email protected] ~]$ chmod 650 test.txt

Ahora que comprende los conceptos básicos del cálculo de permisos en Linux, echemos un vistazo a lo que se incluye en el sistema operativo.

Índice

    Explicación de la autorización especial

    Las autorizaciones especiales constituyen un cuarto nivel de acceso además de usuario, grupo, y otro. Los permisos especiales permiten privilegios adicionales en conjuntos de permisos estándar (como sugiere el nombre). Hay una opción de permiso especial para cada nivel de acceso discutido anteriormente. Echemos un vistazo a cada uno individualmente, comenzando con Establecer UID:

    usuario + s (especial)

    Comúnmente señalado como SUID, la autorización especial para el nivel de acceso de usuario tiene una sola función: Un archivo con SUID siempre se ejecuta como el usuario propietario del archivo, independientemente del usuario que realice el pedido. Si el propietario del archivo no tiene permisos de ejecución, utilice mayúsculas S aquí.

    Ahora, para ver esto desde un ángulo práctico, veamos el /usr/bin/passwd pedido. Este comando, por defecto, tiene el conjunto de permisos SUID:

    [[email protected] ~]$ ls -l /usr/bin/passwd 
    -rwsr-xr-x. 1 root root 33544 Dec 13  2019 /usr/bin/passwd

    Nota la s o X normalmente indicaría los permisos de ejecución para el usuario.

    grupo + s (especial)

    Comúnmente señalado como SGID, esta autorización especial tiene varias funciones:

    • Si se establece en un archivo, permite que el archivo se ejecute como un grupo quién es el propietario del archivo (similar a SUID)
    • Si se establece en un directorio, todos los archivos creados en el directorio tendrán su grupo propiedad establecida en la del propietario del directorio
    [[email protected] article_submissions]$ ls -l 
    total 0
    drwxrws---. 2 tcarrigan tcarrigan  69 Apr  7 11:31 my_articles

    Este conjunto de permisos se indica con minúsculas s donde el X normalmente indicaría ejecutar privilegios para el grupo. También es particularmente útil para los directorios que se utilizan a menudo en los esfuerzos de colaboración entre los miembros de un grupo. Cualquier miembro del grupo puede acceder a cualquier archivo nuevo. Esto también se aplica a los archivos en ejecución. SGID es muy poderoso cuando se usa correctamente.

    Como se dijo anteriormente para SUID, si el grupo propietario no tiene permisos de ejecución, una letra mayúscula S es utilizado.

    otro + t (pegajoso)

    El último permiso especial se ha denominado "pedacito pegajoso". Este permiso no afecta a los archivos individuales. Sin embargo, a nivel de directorio, restringe la eliminación de archivos. Solo el dueño (y raíz) de un archivo puede eliminar el archivo en ese directorio. Un ejemplo común de esto es el /tmp directorio telefónico:

    [[email protected] article_submissions]$ ls -ld /tmp/
    drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/

    El conjunto de permisos se indica en minúsculas t, donde el X normalmente indicaría el privilegio de ejecución.

    Definir permisos especiales

    Para establecer permisos especiales en un archivo o directorio, puede utilizar uno de los dos métodos descritos anteriormente para los permisos estándar: simbólico o numérico.

    Supongamos que queremos definir SGID en el directorio community_content.

    Para hacer esto usando el método simbólico, hacemos lo siguiente:

    [[email protected] article_submissions]$ chmod g+s community_content/

    Usando el método numérico, necesitamos pasar un cuarto dígito anterior a nuestro chmod pedido. El dígito utilizado se calcula de la misma manera que los dígitos de autorización estándar:

    • Empezar en 0
    • SUID = 4
    • SGID = 2
    • pantimedias = 1

    La sintaxis es:

    [[email protected] ~]$ chmod X### file | directory

    O X es el número de autorizaciones especiales.

    Aquí está el comando para definir SGID a community_content por el método numérico:

    [[email protected] article_submissions]$ chmod 2770 community_content/
    [[email protected] article_submissions]$ ls -ld community_content/
    drwxrws---. 2 tcarrigan tcarrigan 113 Apr  7 11:32 community_content/

    Resumen

    En conclusión, los permisos son de fundamental importancia para ser un administrador de Linux eficaz. Hay dos formas definidas de establecer permisos usando el chmod Comando: Simbólico y numérico. Hemos analizado la sintaxis y los cálculos necesarios para ambos métodos. También analizamos los permisos especiales y su función en el sistema. Ahora que comprende los permisos y los conceptos detrás de ellos, puede resolver el siempre molesto error cuando intenta entorpecer su trabajo.

    Artículos de interés

    Subir