permisos

  • Este artículo explica cómo agregar un nuevo share (carpeta compartida en jerga Windows) y usuario a un servidor Samba ya configurado y funcionando.

  • 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).

  • La semana pasada un sysadmin junior se mandó una pequeña cagada en un servidor de desarrollo: modificar permisos en directorios de sistema editando ACLs. El resultado fue desastroso, en el sentido en que el servidor SSH dejó de funcionar, por tener el directorio /etc permisos de acceso demasiado permisivos (valga la redundancia). La idea del sysadmin era buena, crear un grupo de "administradores" que tengan la capacidad de editar archivos de configuración, y agregar al mismo a algunos powerusers y sysadmins (ignorando que para esto existe el grupo root, o wheel en muchas distribuciones GNU/Linux y *BSD). Como, al mismo tiempo, estaba aprendiendo a trabajar con ACLs, decidió utilizar una para crear este permiso.

  • Al utilizar las herramientas chown y chmod para cambiar los atributos de un archivo o directorio, los enlaces simbólicos son procesados por el sistema de archivos como cualquier otro acceso. Por ende terminamos cambiando permisos sobre el target o destino del enlace simbólico. Pero ¿qué pasa si necesitamos cambiar permisos del enlace simbólico propiamente dicho? La respuesta está en las manpages.

  • Este artículo explica cómo configurar un acceso SFTP restringido para un usuario no privilegiado. Restringido en el sentido de que este usuario sólo pueda moverse dentro del directorio al que se le da acceso, y sea incapaz de siquiera ver qué archivos existen fuera del mismo. Es el ejemplo clásico en el que se debe limitar el acceso a un desarrollador o cliente al directorio de trabajo de su sitio Web, sin que pueda "salir" fuera del mismo (chroot).

  • 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.

  • En este artículo voy a demostrar cómo listar los grants (privilegios de acceso) sobre una tabla en un servidor de bases de datos PostgreSQL.

  • Los sistemas operativos FreeBSD admiten dos tipos de listas de control de accesos para los sistemas de archivos ZFS: POSIX.1e (las mismas que soporta Linux) y NFSv4 (parte del protocolo NFS versión 4).

    Anteriormente expliqué detalladamente cómo implementar y trabajar con ACLs POSIX en Linux, en esta oportunidad voy a demostrar cómo trabajar con ACLs NFSv4 en FreeBSD.

  • En GNU/Linux, cuando se setean permisos sobre archivos utilizando la notación octal, se ven afectados todos los conjuntos de usuarios del sistema (user, group, others). En cambio, cuando se utiliza el modo simbólico (ugoa: user, group, others, all), es posible cambiar permisos de forma selectiva, sin afectar al resto de los conjuntos de usuarios.

  • Esta semana tuve la necesidad de crear un nuevo usuario en un sistema de control de versiones Subversion. Una tarea sencilla, la cual dejo documentada en este breve artículo.

  • Al intentar acceder a la wiki de un proyecto alojado en un servidor Trac, me encontré con el siguiente mensaje de error:

    WIKI_VIEW privileges are required to perform this operation on WikiStart. You don't have the required permissions.
    

    Básicamente significa que el usuario actual no tiene permisos para acceder a la Wiki. Este artículo demuestra cómo gestionar permisos de acceso (autorización) a un sistema Trac desde línea de comandos.

  • El día de hoy tuve que auditar permisos en un servidor de bases de datos MySQL, y me encontré con la dificultad que el mismo no provee una herramienta o comando para volcar todos los permisos (grants) de todos los usuarios. Por ello me vi en la necesidad de desarrollar un pequeño script Bash para llevar a cabo esta simple tarea. Pequeño script al que luego le agregué alguna funcionalidad básica para realizar filtrado y formateo de la salida.

  • Este artículo describe algunos comandos útiles para obtener información acerca de usuarios y privilegios en bases de datos MySQL.

  • Los privilegios públicos son aquellos privilegios por defecto que se aplican sobre una conexión cuando no se especifica un usuario. Este artículo explica cómo revocarlos.

  • En PostgreSQL, los roles son objetos globales que puede acceder a todas las bases de datos de cluster (contando con los privilegios adecuados). Los roles están completamente separados de los usuarios a nivel sistema operativo, aunque es conveniente mantener una correspondencia entre los mismos. A fin de inicializar un sistema de bases de datos, cada instalación fresca siempre contiene un rol predefinido. Este rol es siempre un superusuario, y tiene el mismo nombre (a menos que sea cambiado cuando se corre initdb) que el del usuario (a nivel sistema operativo) que inicializó el cluster de bases de datos. Como habrán notado en artículos anteriores, habitualmente se utiliza el nombre de usuario "postgres" para dicho rol. Los roles determinan el conjunto de privilegios disponibles a un cliente conectado.

  • 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.

  • Luego de actualizar mi estación de trabajo FreeBSD, me encontré con este error al lanzar VirtualBox:

    libGL error: failed to open drm device: Permission denied
    

    Seguido inmediatamente por un segfault. Sin embargo, al lanzar VirtualBox como root este problema no ocurría. Por ende se trataba claramente de un problema de permisos.