Una de las funciones que más esperaba al pasarme de Windows a Linux (hace años ya) era proteger una carpeta con contraseña porque, seamos sinceros, si queremos esconder algún contenido en Windows no existe forma más que poner la carpeta como oculta y esconderla entre miles de subcarpetas. Pero eso no protege nada, bastaba entrar a opciones de carpeta (desde el navegador de archivos) escoger que se muestren las carpetas archivos ocultos y voilá, nuestro contenido privado era vulnerable de nuevo. Vulnerable no solo de ser leído por otros sino (mucho peor) de ser modificado y hasta ¡ser borrado!
Había escuchado que en Linux si se podía aplicar protección con contraseña a las carpetas pero nunca encontré como hacerlo y es que no hay una opción en algún menú que sea intuitiva. Incluso ensayando a prueba y error di con una manera de hacerlo y muy alegre la posteé aquí. Sin embargo, al ser una solución empírica (sin usar teoría), obviamente, no era el método correcto.
El asunto es bastante sencillo pero requiere ciertos conocimientos teóricos. En este caso sobre los permisos en Linux (este tip sirve sobre cualquier distro linux). Vamos por partes:
Permisos en Linux
Un sistema Linux basa su seguridad en los permisos, por eso ni siquiera nosotros mismos podremos borrar archivos del sistema por error (en Windows puedes borrar toda tu carpeta Windows apretando solo una tecla; obviamente, la PC no vuelve a arrancar). Los permisos en Linux son de tres tipos:
- Lectura. Significa acceder al archivo y ver su contenido (su valor es 4)
- Escritura. Significa modificar el archivo (su valor es 2)
- Ejecución. Significa ejecutar el proceso contenido en el archivo, o ver el contenido de una carpeta (su valor es 1)
Además, los permisos se asignan según los usuarios en el siguiente orden: propietario (el propietario del archivo o directorio,) grupo (grupo de usuarios al que pertenece el archivo), otros (los demas usuarios). Por lo tanto si un archivo tiene los permisos 764 significa:
- 7=4+2+1 El propietario puede leer, escribir y ejecutar el archivo.
- 6=4+2+0 El grupo puede leer y escribir el archivo pero no puede ejecutarlo.
- 4=4+0+0 Los demás usuarios podrán leer el archivo pero no podrán modificarlo ni ejecutarlo.
Eso suponiendo un archivo en concreto. Pero, ¿y si queremos modificar los permisos de ciertos archivos? Para eso existe el comando chmod.
Comando chmod
Este comando se usa para asignar permisos a achivos o directorios y su sintaxis es la siguiente:
chmod tipo-de-permisos ruta-del-archivo-o-carpeta
Supongamos que queremos darle todos los permisos a la carpeta juegos que está dentro de nuestro home. Deberíamos escribir:
sudo chmod 777 juegos
¿Y por qué escribí el nombre de la carpeta y no la ruta como indica la sintaxis?
Eso es porque cuando abrimos la terminal está ya está en nuestro home. Así que no era necesario indicar la ruta de la carpeta juegos porque se hallaba en la misma ubicación que la sesión de terminal. Ahora supongamos que le daremos los mismos permisos al archivo imagen.jpg que está dentro de la carpeta fiesta que a su vez está dentro de la carpeta fotos de nuestro home. En este caso sí debemos especificar la ruta (¿sen entiende por qué, no?)
sudo chmod 777 fotos/fiesta/imagen.jpg
La otra forma sería entrando a la carpeta a través de la terminal:
cd fotos/fiesta
Para luego aplicar los permisos (como ya estamos dentro de la carpeta no es necesario indicar la ruta, solo el nombre del archivo):
sudo chmod 777 imagen.jpg
Proteger carpetas usando permisos
Si bien esto se ha hecho un poco largo, todo lo anterior es sumamente útil si se quiere proteger una carpeta pues, tarde o temprano la tendremos que desbloquear o en casos general, aprender a asignar permisos en fundamental en Linux. Veamos, ¿qué significa que el archivo X tiene los permisos 400?
- 4=4+0+0 El propietario puede leer (4) pero no puede modificar (0) ni ejecutar (0)
- 0=0+0+0 El grupo no puede leer (0) tampoco modificar (0) y tampoco ejecutar (0)
- 0=0+0+0 Los demas usuarios no pueden leer (0) ni modificar (0) ni ejecutar (0).
¿Qué nos queda en claro de todo esto? Pues, que para negar todo permiso hay que asignar el valor 0. Y si queremos anular los permisos totales (incluso para nosotros mismos) habría que asignar el valor 0 a los tres tipos de usuarios. En otras palabras, si quiero proteger la carpeta privado que esta en mi home, bastaría con escribir en la terminal:
sudo chmod 000 privado
Así de sencillo. Ya verás como Nautilus muestra la carpeta con un candado que indica la privacidad.
Pero si quieres más privacidad aún sería mejor ocultar la carpeta. Para eso basta colocar un punto al inicio del nombre de la carpeta (o del archivo). En nuestro caso debemos renombrar privado a .privado
Sin embargo, si lo intentas notarás que no se puede porque la carpeta no tiene permisos de escritura. Habría que primero devolverle los permisos con un chmod 777, luego cambiarle el nombre y por último cancelarle los permisos nuevamente con un chmod 000.
Ten en cuenta
Ahora tu carpeta estará protegida incluso para ti mismo. Para visualizar su contenido debes acceder como root.
Por último, el manejo de permisos no significa que si alguien accede a tu computadora y tiene los conocimientos suficientes pueda acceder a tus datos (hay formas no muy complicadas de hacerlo). Pero al menos, la gran mayoría (quizás todos) de tus conocidos no podrán acceder a tus datos privados. Sin embargo, si lo que quieres es protección total (de tal manera que ni el root del sistema pueda acceder sin una contraseña especial) debes encriptar los archivos.
Si te animas, Volkan Rivera escribió un excelente how to al respecto:
http://www.volkanrivera.com/esp/?p=773








Pingback: Bitacoras.com
Hola, Álvaro. Una pregunta: ¿en qué momento colocas la contraseña?
Para abrir la carpeta protegida tienes que acceder como root. La forma más rápida sería abrir una terminal y escribir
sudo nautilus
escribes tu contraseña y voilá, puedes acceder a todas las carpetas.
Buenos dias Alvaro.
Siguiendo con el tema que has iniciado.. tienes idea de lo que habria que hacer para que cuando un usuario quisiese entrar en una carpeta del servidor el sistema pidiese una contraseña y si el usuario pone la contraseña correcta tenga acceso a la carpeta…
Este seria el caso para una carpeta de documentacion solo para miembros de la organización, no para todo el publico que accede a la web.
Gracias de antemano y un abrazo desde el sur de España
Bueno, si en el servidor usas Cpanel puedes proteger directorios con contraseña. Supongo que también podría hacerse por la línea de comandos, pero no sé como hacerlo.