Unix

  • Buscar archivos que tengan SUID y SGID

    Hace un tiempo expliqué cómo funcionan los bits SETUID y SETGID. Sin embargo, al final de dicho artículo mencioné los riesgos involucrados al utilizar estos bits de modo, por ello es recomendable evitar o minimizar su uso. Una buena práctica al momento de realizar el hardening de un servidor es listar todos los archivos que tengan SETUID o SETGID, para evitar configuraciones inseguras.

    Este artículo explica cómo utilizar find para buscar y encontrar todos los archivos y directorios que tengan SETUID y/o SETGID. Y de yapa cómo encontrar archivos y directorios con el STICKY bit habilitado (protección contra el borrado).

  • Cambiar sólo el grupo o sólo el usuario dueño de un archivo o conjunto de archivos en Linux

    Típicamente se utiliza el comando chown para modificar tanto el usuario como grupo dueño de un archivo o conjunto de archivos. Pero ¿qué pasa si necesitamos sólo cambiar el usuario o sólo cambiar el grupo? Veamos algunos usos avanzados de chown y chgrp en Linux con ejemplos prácticos.

  • Cómo funcionan los bits SETUID y SETGID

    El día de hoy un colega se acercó a preguntarme si era posible utilizar los bits SETUID y SETGID para restringir el acceso a archivos de log creados por una aplicación lanzada por los usuarios. El escenario era el siguiente: una aplicación de escritorio, lanzada por el usuario, crea un registro de actividad en un archivo de log. La necesidad entonces era que el usuario no sea capaz de borrar o modificar luego estos archivos. Pero claro, al lanzar la aplicación el propio usuario, los archivos de log se crean a su nombre, por ende es el propietario de los mismos (lo que significa que puede hacer lo que le plazca con ellos). Entonces, el problema se reduce a lograr que la aplicación lanzada por el usuario cree los archivos de log a nombre de otro usuario. Esto se traduce a que la aplicación corra bajo un usuario diferente al usuario actual. Es aquí cuando puede ser útil recurrir a los bits SUID y SGID en la configuración de permisos del ejecutable.

    Para explicar este problema voy a utilizar directamente un ejemplo.

  • Cómo listar los sockets Unix abiertos en Linux

    Este artículo explica cómo listar todos los sockets Unix abiertos en un sistema GNU/Linux utilizando la herramienta netstat.

  • Cómo saber si un directorio es un punto de montaje

    En todo sistema operativo, los archivos se organizan en sistemas de archivos. Un sistema de archivos es una estructura de datos de bajo nivel que organiza y mantiene los bloques de datos que implementan a los archivos contenidos dentro de un dispositivo, al igual que el espacio disponible y árbol de directorios. Todos los archivos accesibles desde un sistema Unix conforman una jerarquía y están organizados en un único gran árbol cuya raíz es el directorio /. Estos archivos pueden estar distribuidos a lo largo de diferentes sistemas de archivos en diferentes dispositivos (discos, particiones, etc.).

    El comando mount permite anexar el sistema de archivos encontrado en un dispositivo al árbol de archivos principal a partir de cierta ruta o ubicación, proceso conocido como montar. En su forma estándar, el comando mount toma los siguientes parámetros:

    # mount -t TIPO DISPOSITIVO DIRECTORIO
    

    El parámetro TIPO indica el tipo de sistema de archivos alojado en el DISPOSITIVO. El último parámetro determina el directorio donde se "monta" el sistema de archivos, conocido como "punto de montaje". De forma tal que el directorio no se comporta como un directorio tradicional (conjunto de archivos y subdirectorios) sino que apunta a un sistema de archivos externo. De esto se trata el "montaje" de sistemas de archivos y así es como todos los archivos accesibles por el sistema operativo quedan organizados en un único gran árbol.

    El sistema de archivos montado puede utilizar cualquier formato soportado por el sistema operativo o puede ser provisto a través la red (como por ejemplo Samba o NFS) u otros servicios. Típicamente mount es capaz de autodetectar el formato de sistema de archivos empleado por un dispositivo, con lo que el parámetro -t resulta opcional.

  • Directorio de trabajo y usos especiales del comando cd

    El directorio de trabajo es aquel que utiliza un proceso como referencia para las rutas relativas. Es decir, es el directorio donde se encuentra "situado" un proceso. Cada proceso en un sistema operativo puede estar trabajando en un directorio de trabajo diferente (valga la redundancia). De esta forma, se trata de un atributo independiente por proceso. Veamos cómo se utilizan con los comandos pwd y cd para modificar el directorio de trabajo actual, junto con algunos usos especiales.

  • DOUBLE PANIC, algo que no se ve todos los días

    Comparto esta captura de un "DOUBLE PANIC" en un Unix SCO, porque creo que es algo que no se suele ver a diario.

  • Esto es lo que pasa cuando usás software propietario

    Hoy llama por teléfono un usuario diciendo que no podía conectarse a un arcaico (pero lamentablemente aún en uso) sistema de gestión. Este sistema es un viejo SCO OpenServer, una versión de código cerrado de Unix desarrollada por SCO (Santa Cruz Operation) en la década de los 90, empresa que presentó la quiebra y finalmente desapareció en 2011. El servidor corrió en hardware dedicado hasta hace algunos años, cuando fue virtualizado utilizando un procedimiento ad-hoc sobre la plataforma VMware.

  • Gestión de grupos en GNU/Linux

    Este artículo demuestra el uso de las diferentes herramientas de gestión de grupos de usuarios en un sistema GNU/Linux, así como su funcionamiento y utilidad.

    Los grupos Unix son colecciones lógicas de usuarios del sistema. El uso principal de los grupos es para asignar permisos Unix sobre archivos y directorios a nivel grupo, tal como explica el artículo Usuarios, grupos, permisos y modos octales en sistemas Unix. Como resultado, esto permite que ciertos usuario del sistema puedan tener los mismos privilegios sobre un archivo o directorio.

  • Mostrar los usuarios actualmente logueados en un sistema Unix y saber qué estan haciendo

    Anteriormente demostré el uso de las herramientas last y lastlog para listar los accesos a un servidor Unix, al igual que lastb para mostrar los intentos de acceso fallidos. Sin embargo, no expliqué cómo visualizar los usuarios actualmente logueados en el sistema. Para ello se dispone de las herramientas who y w.

  • Usos especiales del comando cat

    Típicamente utilizamos el comando cat para volcar archivos por salida estándar (visualizar rápidamente un archivo de texto plano por pantalla), o tal vez concatenar dos o más archivos en uno. Sin embargo, cat tiene algunas opciones interesantes, tal vez poco conocidas o utilizadas. Veamos algunos usos especiales de cat que deberían ser conocidos por todo SysAdmin que se precie.

  • Usuarios, grupos, permisos y modos octales en sistemas Unix

    Este artículo trata de bajar a tierra algunos del los conceptos base acerca de usuarios, grupos, permisos, archivos y directorios en sistemas operativos de la familia Unix. Ya sea como introducción a usuarios novicios, como a modo de repaso para usuarios más veteranos.