Un archivo creado en el lugar incorrecto o con derechos demasiado abiertos a menudo causa problemas más tarde. El comando mkdir es suficiente para comenzar, pero no reemplaza el control del propietario, del grupo y de los permisos.
Para un directorio personal, créalo en tu carpeta de usuario. Para un directorio compartido o utilizado por un servicio, primero identifica la cuenta que debe escribir en él. Un chmod 777 a veces oculta un verdadero problema de propietario y permite que todas las cuentas locales modifiquen el contenido.
Crea la carpeta en el lugar correcto
Desde el directorio actual, el siguiente comando crea un solo directorio:
mkdir respaldos
Con una ruta absoluta, sabes exactamente dónde se creará la carpeta. Agrega -p si los directorios padres pueden faltar:
mkdir -p ~/proyectos/sitio-prueba/logs
Sin -p, mkdir se detiene si ~/proyectos/sitio-prueba no existe. La opción también evita un error cuando el último directorio ya está presente. No transforma un camino incorrecto en un camino correcto: verifícalo con pwd antes de ejecutar el comando.
Para preparar un espacio que debe pertenecer a tu cuenta, mantente en tu directorio personal. Evitarás sudo, por lo que un directorio creado por root que tu usuario no podrá llenar:
mkdir -p ~/archivos/2026
stat -c '%A %U:%G %n' ~/archivos ~/archivos/2026
Elige derechos adecuados para el uso
Un directorio requiere el derecho x para ser atravesado. En un directorio, r permite listar los nombres y w permite agregar, renombrar o eliminar entradas. Los derechos realmente aplicados también dependen de tu umask.
Para un directorio privado, créalo con un modo explícito:
mkdir -m 700 ~/archivos-privados
stat -c '%A %a %U:%G %n' ~/archivos-privados
El modo 700 permite el acceso al propietario y cierra el directorio a otros usuarios. Para un directorio donde un grupo de trabajo debe leer y escribir, elige un grupo conocido y el modo 2770:
sudo install -d -o alice -g equipo-web -m 2770 /srv/equipo-web
stat -c '%A %a %U:%G %n' /srv/equipo-web
El 2 al principio activa el bit setgid del directorio. Los nuevos archivos y subdirectorios heredan entonces el grupo equipo-web. Esta solución evita abrir la escritura a todas las cuentas del servidor. Verifica que los miembros esperados estén en este grupo con id nombre_usuario.
mkdir -m 777 crea un directorio modificable por todos, luego el umask puede reducir aún más este modo. No lo utilices para corregir un Permission denied. Lee primero la ruta completa, su propietario y los derechos de cada directorio padre:
namei -l /srv/equipo-web
ls -ld /srv /srv/equipo-web
id
Controla antes de confiar el directorio a un servicio
Un servicio lanzado bajo www-data, postgres o una cuenta dedicada no necesariamente ve los mismos derechos que tu sesión. Consulta su usuario antes de cambiar nada. Para systemd, este comando da las cuentas configuradas por la unidad:
systemctl show mi-servicio
-p User -p Group -p DynamicUser
Luego crea el directorio con el propietario esperado y prueba un archivo desde esta cuenta. En una máquina de prueba:
sudo install -d -o www-data -g www-data -m 750 /var/lib/mi-servicio
sudo -u www-data touch /var/lib/mi-servicio/test-escritura
ls -l /var/lib/mi-servicio/test-escritura
sudo rm /var/lib/mi-servicio/test-escritura
Esta verificación te dice si la cuenta del servicio puede realmente escribir. Si falla, no añadas permisos al azar. Primero controla el propietario, el grupo, las ACL eventuales con getfacl y los derechos de los directorios padres.
- Utiliza
mkdir -ppara un camino cuyos padres pueden faltar. - Utiliza
statols -ldjusto después de la creación. - Para un directorio compartido, define propietario, grupo y modo antes de lanzar el servicio.
- Reserba
chmodpara una corrección específica, después de haber identificado la cuenta bloqueada.
La guía sobre setfacl en Linux ayuda cuando un solo usuario necesita acceso adicional. Si necesitas modificar permisos en una jerarquía existente, utiliza mejor el procedimiento dedicado a chmod recursivo: cambiar todos los archivos y carpetas con el mismo modo rompe fácilmente los derechos de ejecución de los directorios.
La página de manual mkdir(1) detalla las opciones, y mkdir(2) explica el efecto del umask y la herencia del grupo. Mantén estos dos puntos en mente antes de crear un directorio utilizado por un servicio.
