Las nóminas que todos podían abrir
Una gestoría guarda las nóminas de sus clientes en un servidor compartido. Un becario curiosea y abre la carpeta. Cualquiera con una cuenta puede leer todos los sueldos.
Nadie ha atacado nada. El archivo tenía los permisos mal puestos. Esta lección enseña a ponerlos bien.
Al final de esta lección
Nota
Puedo decir quién puede leer, escribir o ejecutar un archivo y cambiarlo.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Dueño | el único usuario al que pertenece un archivo | |
| Grupo | una lista con nombre de usuarios que comparten archivos | |
| Resto | todos los que no son el dueño ni están en el grupo | |
| root | la cuenta de administración, que puede hacerlo todo | |
| sudo | ejecuta una sola orden como root | sudo whoami |
| Setgid | en una carpeta, hace que lo nuevo herede su grupo | 2750 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Tres tipos de persona, tres derechos
Todo archivo tiene un dueño y un grupo. Los demás son el resto.
Para cada uno de los tres, el archivo dice si puede leer (r), escribir (w) y ejecutar (x).
En una carpeta, r permite listarla, w permite añadir o quitar archivos y x permite entrar.
¿Quién soy?
idSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Modo, dueño y grupo de una carpeta
stat -c "%a %A %U %G" /srv/projectsSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Ejemplo: leer un modo
| Modo | El dueño puede | El grupo puede | El resto puede |
|---|---|---|---|
| rwxr-x--- | leer, escribir, ejecutar | leer, ejecutar | nada |
| rw-rw-r-- | leer, escribir | leer, escribir | leer |
| rw------- | leer, escribir | nada | nada |
| rwxr-xr-x | leer, escribir, ejecutar | leer, ejecutar | leer, ejecutar |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
chmod cambia un modo
chmod cambia el modo. Puedes darle tres cifras, como en chmod 640 nomina.txt.
O puedes decir qué añadir o quitar. g+w da escritura al grupo. o-r quita la lectura al resto.
Ejecuta estos bloques en orden. Cada ls -l muestra el modo nuevo.
Crea un archivo vacío
touch nomina.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Dueño lee y escribe, grupo lee
chmod 640 nomina.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Mira el modo
ls -l nomina.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Deja que el grupo también escriba
chmod g+w nomina.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Mira otra vez
ls -l nomina.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que chmod 777 arregla cualquier "permiso denegado". Pero deja que cualquier usuario de la máquina cambie el archivo. Averigua quién necesita el derecho y dáselo solo a ese dueño o a ese grupo.
Usuarios, root y sudo
Cada persona y cada servicio tiene una cuenta de usuario. Un usuario normal solo abre el archivo de otro si su modo lo permite, y no puede cambiar los del sistema.
root puede hacerlo todo. Nadie debería trabajar como root todo el día. sudo ejecuta solo una orden como root, y luego vuelves a ser un usuario normal.
Un usuario normal es rechazado
ls /rootSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
El mismo usuario, con sudo
sudo whoamiSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Entrega el archivo a root
sudo chown root nomina.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Mira el dueño
ls -l nomina.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Devuélvelo
sudo chown student nomina.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Una carpeta compartida pide grupo y setgid
Un equipo comparte una carpeta. Crea un grupo, por ejemplo ventas, y añade a cada miembro con usermod -aG ventas nombre.
Asigna el grupo a la carpeta con chgrp. Después decide qué puede hacer el grupo.
Añade setgid, el 2 de 2750. Así lo que se cree en la carpeta pertenece a su grupo, lo cree quien lo cree.
Crea una carpeta de práctica
mkdir -p equipoSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Setgid: grupo lee y entra, resto nada
chmod 2750 equipoSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Busca la letra s
ls -ld equipoSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.