Mostrando entradas con la etiqueta usuarios. Mostrar todas las entradas
Mostrando entradas con la etiqueta usuarios. Mostrar todas las entradas

lunes, 2 de mayo de 2016

Alta de usuarios en MySQL (|II)

Esta es una actualización de mi chuleta, y para el que lo necesite



A estas alturas ya sabemos que podemos definir los permisos que un usuario tiene a una base de datos (o tabla, o donde sea) usando GRANT; hay muchos tipos de privilegios pero los los más típicos que yo me encuentro son estos
  • SELECT: acceso sólo de lectura
  • INSERT: se permiten hacer inserts en la(s) tabla(s) seleccionada(s)
  • UPDATE: se permiten hacer updates en la(s) tabla(s) seleccionada(s)
  • DELETE: se permiten hacer delete de las filas que hay en la(s) tabla(s) seleccionada(s)
  • USAGE: no se permite nada, es un sinónimo para "sin privilegios".
  • ALL PRIVILEGES: todos los privilegios (no sólo incluye estos cuatro; aquí podéis encontrar un listado más completo)
Y para qué todo esto? Pues porque quiero actualizar ms notas

Esto es suficiente para dar de alta un nuevo usuario

 GRANT xxxxx on database.table to 'user'@'host' identified by 'password';

donde xxxxx son los permisos de los que os hablaba arriba.
Si además, queremos limitar el número de conexiones de ese usuario, añadimos al final la limitación, y quedaría de esta manera

 GRANT xxxxx ON database.table TO 'user'@'host' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS #;

El cambio de contraseña para un usuario, queda así

SET PASSWORD FOR 'user'@'host' = PASSWORD('yyyyyyyyyyyy');

Y qué hago si quiero saber qué privilegios tiene un usario, sobre qué y cómo esan definidos? Pues con este comando, que últimamente estoy utilizando bastante

SHOW GRANT FOR 'user'@'host';

que nos devolverá todos los permisos de ese usuario concreto; si  no le pasas el usuario (sólo "SHOW GRANT") te devolverá los privilegios del usuario con el que estás conectado.

martes, 20 de enero de 2015

Configurar un servidor sFTP y chrootear usuarios

Después de pasarme media mañana para configurar una estructura concreta de usuarios con una escalera de permisos a los que además había que chrootear, he encontrado una página (la única en internet, diría yo) en la que se explica COMPLETAMENTE y PASO POR PASO cómo chrootear un usuario sFTP. Y como nota mental, me lo apunto aquí, que no se diga!


Primero creamos un grupo de trabajo, que será al que pertenecerán los usuarios que tenga que enjaular

groupadd sftp

Después creo el usuario 'pedro' y lo asigno este grupo

useradd -G sftp -s /bin/false pedro

Si el usuario está creado, sólo hay que definirle su nuevo grupo; yo lo hago editando el

/etc/passwd

y cambiando el grupo antiguo por el nuevo. Tal vez no sea bonito, pero sí efectivo. Ah, y recuerda cambiarle los permisos a la home de 'pedro', para que coincidan con los que acabas de definirle:

chgrp sftp pedro

Ahora editamos el archivo de configuración del SSHd, donde también definimos los parámetros del sFTP

vi /etc/ssh/sshd_config

Busca y comenta la línea

Subsystem sftp /usr/libexec/openssh/sftp-server

y añade esta en su lugar

Subsystem sftp internal-sftp

y al final de todo, añade estas líneas:

Match Group sftp
   X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory %h                    
  ForceCommand internal-sftp  

donde
"Match Group sftp" indica que las siguientes líneas se aplicaran a los usuarios que pertenezcan a este grupo
"ChrootDirectory %h" es el directorio (la home del usuario) que se utilizará para hacer chroot cuando el usuario se autentifique.
"ForceCommand internal-sftp" fueza la ejecucuón del 'internal-sftp' e ignora cualquier comando que sea mencionado en el archivo ~/.ssh/rc

Después, reinicia el servicio SSHd


service ssh restart

Y por último, los permisos; esta es la parte que menos se explica porque todos sabemos de permisos, pero no! cuidado... no es lo que esperas a primera vista.

chmod 755 /home/pedro
chown root /home/pedro
chgrp -R sftp /home/pedro --- (por si aún no lo habías hecho)

y ya está. Con esto el directorio está enjaulado, pero no podrás escribir. Si además necesitas subir archivos o escribir de alguna manera en el directorio, tendrás que crear uno nuevo dentro de este que será el que tenga permisos para todo

mkdir /home/pedro/uploads
chown pedro /home/pedro/uploads

Y ya lo tienes; haz las pruebas que necesites, que ya es tuyo!
No parece mucho, pero la verdad es que me ha costado un poquito, y si puede servirle de ayuda a alguien, mejor que mejor...



Ah, casi me olvido; la fuente original es ésta, lo mío es prácticamente una traducción