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.

Claro está que, por seguridad, muchos servicios requieren permisos restrictivos sobre sus directorios de configuración/trabajo. Por ende el servidor SSH dejó inmediatamente de funcionar. Una valiosa lección para el joven padawan: jamás tocar permisos sobre directorios de sistema como /, /etc, /usr, /boot, /lib, /lib64, /bin, /sbin, /usr, /tmp, /opt, y otros.

Pero para eso existen los servidores de desarrollo, para que, tanto desarrolladores como sysadmins, puedan hacer pruebas y romper sin perturbar a los usuarios finales. Y también para que los juniors los utilicen como plataforma de entrenamiento/aprendizaje.

Para solucionar este inconveniente (y dado que sólo se habían alterado ACLs y no permisos Unix) decidí simplemente borrar absolutamente TODAS las ACLs del filesystem, desde el raíz en adelante, de forma recursiva:

# setfacl -R -b /

Borrón y cuenta nueva.

Para más información:

# man setfacl


Tal vez pueda interesarte


Compartí este artículo