/etc
La configuración de todo. Aquí vive cómo está configurado el servidor web, el SSH, el firewall.
Es la carpeta que más vas a tocar y la que conviene respaldar antes de cambiar nada.
En Windows cada disco tiene su letra. En Linux no hay letras: hay
un único árbol que empieza en /, y los discos, las
memorias USB o los recursos de red se «cuelgan» de una carpeta dentro de ese
árbol.
Al principio desconcierta. La ventaja es que la ruta de algo siempre se escribe igual, sin importar en qué disco esté guardado.
La configuración de todo. Aquí vive cómo está configurado el servidor web, el SSH, el firewall.
Es la carpeta que más vas a tocar y la que conviene respaldar antes de cambiar nada.
Los registros. Cuando algo falla, la respuesta está aquí casi siempre.
También es la carpeta que más crece: es la culpable habitual de los discos llenos (lección 6).
La carpeta personal de cada usuario. La tuya es
/home/tu-usuario, y se abrevia ~.
Es donde puedes trabajar sin pedir permisos especiales.
Donde se suelen instalar las aplicaciones propias y los datos que sirve la máquina.
Por convención, no por obligación: si heredas un servidor, mira ahí primero.
pwd # en que carpeta estoy
cd /var/log # ir a una carpeta
cd .. # subir un nivel
cd ~ # volver a mi carpeta personal
ls -lh # listar con detalle y tamanos legibles
ls -lha # ... incluidos los ocultos (los que empiezan por punto)Dos costumbres que ahorran horas desde el primer día: la tecla Tab completa nombres de archivo y de comando -y de paso evita escribir mal una ruta-, y la flecha arriba recupera lo último que escribiste. Casi nadie teclea las rutas largas enteras.
Cuando algo no funciona en un servidor, la respuesta está en la primera
columna de ls -l más veces de las que parece. Se lee de izquierda a
derecha y no tiene misterio.
ls -l /var/www/htmldrwxr-xr-x 2 www-data www-data 4096 sep 7 09:12 uploads -rw-r--r-- 1 www-data www-data 1841 sep 5 14:03 index.html -rw------- 1 root root 412 ago 30 11:20 .env
d es una carpeta, - es un archivo normal,
l es un enlace a otro sitio.
rwx = leer, escribir, ejecutar. Un guion significa que
no tiene ese permiso.
En -rw-r--r--, el dueño puede leer y escribir, pero no
ejecutar.
Lo mismo, para quien pertenezca al grupo del archivo. Es como se le da acceso a varias personas sin hacerlas dueñas.
Cualquier otro usuario de la máquina. Es la parte que importa en seguridad, y la que se mira primero.
Las dos columnas de nombres: www-data www-data. Primero
el usuario dueño, después el grupo.
De poco sirve el permiso si el dueño no es quien creías.
Mira el .env del ejemplo: -rw-------. Solo el
dueño lee y escribe; el grupo y los demás, nada. Es exactamente como debe estar un
archivo con credenciales, y es lo que hay que comprobar cuando uno se pregunta si
algo está bien guardado.
Los famosos 755 y 644 no son códigos que haya que
memorizar: son la suma de los tres permisos, para cada uno de los
tres grupos.
Leer 4 · escribir 2 · ejecutar 1.
Se suman: leer y escribir es 6; leer y ejecutar es 5; los tres, 7.
Dueño 6 (lee y escribe), grupo 4 (solo lee), otros 4 (solo leen).
Es lo normal para un archivo de datos o una página web.
Dueño 7 (todo), grupo y otros 5 (leer y entrar).
En una carpeta, «ejecutar» significa poder entrar en ella. Sin ese permiso, la carpeta existe pero no se puede abrir.
sudo chmod 644 index.html # permisos de un archivo
sudo chmod 600 .env # solo el dueno, para credenciales
sudo chmod -R 755 /var/www/html # -R aplica a todo lo de dentro
sudo chown www-data:www-data index.html # cambiar dueno y grupoSobre el 777 que recomienda medio internet:
significa «todos pueden leer, escribir y ejecutar». Es decir, cualquier
usuario o proceso de la máquina puede reescribir ese archivo.
Aparece como solución porque hace desaparecer el error de permisos al instante -y es cierto: lo hace-. Lo que también hace es dejar el archivo escribible por todo el mundo, y en un directorio web eso permite reemplazarlo. El arreglo correcto casi siempre es cambiar el dueño al usuario del servicio, no abrir el permiso a todos.
root es el administrador absoluto: puede hacer cualquier cosa,
incluido destruir el sistema. En Ubuntu no se entra como root; se trabaja como
usuario normal y se pide permiso puntual con sudo para lo que lo
necesita.
Un comando destructivo sobre la ruta equivocada, ejecutado como root, se ejecuta. No hay confirmación ni papelera.
Como usuario normal, el mismo error se detiene en un «permiso denegado», que es una red de seguridad gratis.
Cada uso de sudo queda registrado con el usuario, la
hora y el comando.
Si tres personas administran la máquina y todas entran como root, no hay forma de saber quién hizo qué.
sudo eleva el privilegio para ese
comando y se acabó.
Una sesión abierta como root eleva todo lo que escribas después, incluido lo que escribas distraído.
Es lo correcto: la configuración del sistema no la toca un usuario
normal. Se antepone sudo:
sudo nano /etc/ssh/sshd_config.
Y antes de editar, una copia: sudo cp archivo archivo.bak.
Cuesta dos segundos y salva la tarde.
El servidor web corre como su propio usuario -normalmente
www-data-, no como tú. Si la carpeta es tuya, él no
escribe.
Se arregla con chown, dándole la propiedad al usuario del
servicio. No con chmod 777.
El caso clásico es un chmod -R sobre una ruta
equivocada. Por eso -R se escribe despacio y se comprueba la
ruta antes de pulsar Enter.
Con ls -l se ve cómo quedó y se corrige. Si tocaste
/etc o /usr a lo ancho, puede ser más rápido
rehacer la máquina.
whoami dice quién eres, id añade tus
grupos y sudo -l lista qué te está permitido ejecutar con
privilegios.
Ves -rw-r--r-- en un archivo. ¿Quién puede modificarlo?
rw; el grupo y los demás solo
r. Leer sí, escribir no.El servidor web no puede escribir en su carpeta de subidas. ¿Cuál es el arreglo correcto?
¿Por qué se usa sudo en vez de entrar como root?
Ya te mueves y entiendes quién puede hacer qué. La siguiente lección es
instalar y actualizar software: apt, la diferencia entre
update y upgrade -que no es la que parece- y cómo se dejan
puestas las actualizaciones de seguridad automáticas, que es la tarea con mejor
relación entre esfuerzo y riesgo evitado de todo el curso.
Siguiente: Paquetes y actualizaciones
Continuar ← Entrar por SSH y orientarse