GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué el usuario de mysql tiene bash shell en/etc/passwd?

Si instala MySQL en Linux, entonces una nueva cuenta de usuario llamada 'mysql ‘ se creará para ejecutar mysqld Servicio. Pero, ¿por qué el usuario de mysql tiene bash shell en /etc/passwd? ? En general, los servicios se ejecutan como usuario sin inicio de sesión, donde el shell se establecerá en /bin/false o /bin/nologin en /etc/passwd expediente. Significa que la cuenta es elegible para ejecutar un servicio, pero no tiene acceso de shell. Creí firmemente (corríjame, si mi comprensión es incorrecta en la sección de comentarios) esta configuración mejorará la seguridad. ¿El acceso de shell proporcionado al usuario de mysql es intencional (o tiene algún propósito real)? Vamos a averiguarlo.

De acuerdo con el informe de error presentado en Redhat, el script de preinstalación de mysql parece crear un usuario usando useradd comando y ha usado '-s ‘ opción establecida en /bin/bash .

/usr/sbin/useradd -M -o -r -d /var/lib/mysql -s /bin/bash \
 -c "MySQL Server" -u 27 mysql > /dev/null 2>&1 || :

El problema fue informado por Mike Rubel@Redhat , quien dice mysql el usuario debe ser nologin usuario por defecto.

Pero parece que Tom Lane (probablemente uno de los desarrolladores de MySQL) se niega a aceptar el informe de errores. Dice mysql la cuenta se crea sin contraseña y, en última instancia, restringirá el acceso de inicio de sesión.

Mike respondió:el comportamiento sigue siendo inusual, porque un mysqld vulnerable permitiría a un atacante instalar una clave SSH en /var/lib/mysql/.ssh/authorized_keys (el directorio de inicio de mysql), para permitir el acceso de shell remoto (lo que hace que una cuenta sin contraseña signifique menos).

Aunque hubo mucho apoyo para Mike, Tom continuó justificando el motivo de mysql cuenta con acceso shell. Él dice que hay utilidades como mysqlhotcopy , mysqluc requieren acceso de shell. Además, es posible que el administrador de MySQL quiera cambiar a mysql usuario para realizar operaciones de copia de seguridad.

¿Denegar el acceso de shell al usuario de MySQL afectará el servicio?

Bueno, estoy de acuerdo en que algunos comandos pueden requerir acceso de shell. Pero el comando de copia de seguridad de MySQL más popular mysqldump no requiere shell como usuario de mysql  ¿no es así? El administrador de MySQL no necesita cambiar a mysql cuenta de usuario para ejecutar una copia de seguridad, en lugar de mysqldump se puede ejecutar como cualquier usuario al proporcionar un nombre de usuario, una contraseña y una base de datos mysql válidos. Ejecuto una copia de seguridad de mi sitio web a través de cron que usa mysqldump . No cambio a mysql usuario para hacer eso.

Según Tom, si esa es la única razón por la que mysql usuario tiene acceso shell, entonces estoy totalmente en contra.

Así que cambié mysql shell de usuario a /bin/false en /etc/passwd . No vi ningún problema hasta ahora (espero que no en el futuro). En caso de que vea algún problema, volveré a este artículo y lo actualizaré.

Descargo de responsabilidad:

No soy un desarrollador de MySQL ni un experto en usarlo. Pero solo entiendo que el usuario de mysql no requiere acceso de shell. Puede que me equivoque, pero mysql como nologin funciona sin problemas en mi servidor.

¿Permitirá que el usuario de mysql tenga acceso de shell? Aprecio tus pensamientos.

Información:

Es posible que desee saber la diferencia entre /bin/false y /sbin/nologin.


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. Bash =~ Regex y Https://regex101.com/?

  3. ¿Cómo se actualiza /etc/motd?

  4. CentOS / RHEL:cómo recuperarse de un archivo /etc/passwd eliminado

  5. ¿Qué es diferente entre /bin/false y /sbin/nologin como shell del usuario nologin?

Comprender el archivo /etc/passwd

La forma correcta de editar archivos /etc/passwd y /etc/group en Linux

¿Por qué /bin/sh apunta a /bin/dash y no a /bin/bash?

¿Qué es el archivo /etc/passwd en Linux?

BASH:compruebe /etc/shadow si la contraseña de usuario está bloqueada

#!/bin/sh vs #!/bin/bash para máxima portabilidad