GNU/Linux >> Tutoriales Linux >  >> Linux

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 principio de su desarrollo. Necesitamos ejecutar scripts, modificar archivos y ejecutar procesos para administrar los sistemas de manera efectiva, pero ¿qué sucede cuando vemos Permiso denegado? ? ¿Sabes por qué vemos este mensaje? Si conoce la causa del problema, ¿sabe cómo implementar la solución?

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

La TL;DR es que hay dos formas principales de asignar permisos.

Método simbólico

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

[tcarrigan@server ~]$ chmod WhoWhatWhich file | directory

donde:

  • Quién - representa identidades:u,g,o,a (usuario, grupo, otro, todos)
  • Qué - representa acciones:+, -, =(agregar, eliminar, establecer exacto)
  • Cuál - representa los niveles de acceso:r, w, x (leer, escribir, ejecutar)

Un ejemplo de esto es si quiero agregar el leer y escribir permisos a un archivo llamado test.txt para usuario y grupo , utilizo el siguiente comando:

[tcarrigan@server ~]$ chmod ug+rw test.txt

Divulgación completa, este no es mi método preferido para asignar 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 numérico es, según mi experiencia, la mejor manera de aprender y practicar permisos. Se basa en la siguiente sintaxis:

[tcarrigan@server ~]$ chmod ### file | directory

Aquí, de izquierda a derecha, el carácter # representa un nivel de acceso. Hay tres niveles de acceso:usuario, grupo y otros. Para determinar cuál es cada dígito, usamos lo siguiente:

  • Empezar en 0
  • Si leer se debe establecer el permiso, agregue 4
  • Si escribe se debe establecer el permiso, agregue 2
  • Si el ejecutar se debe configurar el permiso, agregue 1

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

-rw-r-x---

Los permisos se representan como 650 . ¿Cómo llegué a esos números?

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

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

[tcarrigan@server ~]$ chmod 650 test.txt

Ahora que comprende los conceptos básicos del cálculo de permisos en Linux, veamos los permisos especiales incluido en el sistema operativo.

[ También le puede interesar: Una introducción a las listas de control de acceso (ACL) de Linux]

Permiso especial explicado

Los permisos especiales constituyen un cuarto nivel de acceso además del usuario , grupo y otros . Los permisos especiales permiten privilegios adicionales sobre los 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 conocido como SUID , el permiso especial para el nivel de acceso de usuario tiene una única función:Un archivo con SUID siempre se ejecuta como el usuario propietario del archivo, independientemente del usuario que pasa el comando. Si el propietario del archivo no tiene permisos de ejecución, utilice una S mayúscula. aquí.

Ahora, para ver esto desde una perspectiva práctica, veamos el /usr/bin/passwd dominio. Este comando, por defecto, tiene el conjunto de permisos SUID:

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

Tenga en cuenta las s donde x normalmente indicaría permisos de ejecución para el usuario.

grupo + s (especial)

Comúnmente conocido como SGID , este permiso especial tiene un par de funciones:

  • Si se establece en un archivo, permite que el archivo se ejecute como el grupo que posee el 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
[tcarrigan@server article_submissions]$ ls -l 
total 0
drwxrws---. 2 tcarrigan tcarrigan  69 Apr  7 11:31 my_articles

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

Como se señaló anteriormente para SUID , si el grupo propietario no tiene permisos de ejecución, entonces una S mayúscula se utiliza.

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 propietario (y raíz ) de un archivo puede eliminar el archivo dentro de ese directorio. Un ejemplo común de esto es /tmp directorio:

[tcarrigan@server article_submissions]$ ls -ld /tmp/
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/

El conjunto de permisos se indica con la t minúscula , donde la x normalmente indicaría el privilegio de ejecución.

Configuración de permisos especiales

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

Supongamos que queremos configurar SGID en el directorio community_content .

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

[tcarrigan@server article_submissions]$ chmod g+s community_content/

Usando el método numérico, necesitamos pasar un cuarto dígito anterior en nuestro chmod dominio. El dígito utilizado se calcula de manera similar a los dígitos de permiso estándar:

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

La sintaxis es:

[tcarrigan@server ~]$ chmod X### file | directory

Donde es el dígito de permisos especiales.

Aquí está el comando para establecer SGID en community_content usando el método numérico:

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

[ Descarga gratuita:hoja de referencia de comandos avanzados de Linux. ] 

Resumen

Para terminar, los permisos son fundamentalmente importantes para ser un administrador de Linux efectivo. Hay dos formas definidas de establecer permisos usando chmod Comando:Simbólico y numérico. Examinamos la sintaxis y los cálculos necesarios para ambos métodos. También consideramos los permisos especiales y su rol en el sistema. Ahora que comprende los permisos y los conceptos subyacentes, puede resolver el siempre molesto Permiso denegado error cuando intenta impedir su trabajo.


Linux
  1. Cómo encontrar archivos con permisos SUID y SGID en Linux

  2. Cómo copiar permisos y propiedad de archivos a otro archivo en Linux

  3. Linux – Ejecutar Vs Bit de lectura. ¿Cómo funcionan los permisos de directorio en Linux?

  4. Linux:¿Suid no tiene efecto en los directorios con Linux?

  5. UNIX/Linux:Cómo usar Sticky Bit en directorios y archivos

Una guía para principiantes sobre los permisos de Linux

Permisos y propiedad de archivos de Linux explicados con ejemplos

Permisos de archivos especiales en Linux:SUID, GUID y Sticky Bit

Permisos básicos de directorio de Linux y cómo verificarlos

Comprender los permisos básicos de archivos y la propiedad en Linux

Bit de ejecución vs lectura. ¿Cómo funcionan los permisos de directorio en Linux?