GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi l'utilisateur mysql a bash shell dans /etc/passwd ?

Si vous installez MySQL sur Linux, alors un nouveau compte utilisateur appelé 'mysql ' sera créé pour exécuter mysqld un service. Mais pourquoi l'utilisateur mysql a-t-il un shell bash dans /etc/passwd ? Généralement, les services sont exécutés en tant qu'utilisateur nologin, où le shell sera défini sur /bin/false ou /bin/nologin dans /etc/passwd dossier. Cela signifie que le compte est éligible pour exécuter un service, mais n'a pas d'accès au shell. Je croyais fermement (corrigez-moi, si ma compréhension est erronée dans la section des commentaires) que ce paramètre améliorera la sécurité. L'accès au shell fourni à l'utilisateur mysql est-il intentionnel (ou a-t-il un objectif réel) ? Découvrons.

Selon le rapport de bogue soumis dans Redhat, le script de pré-installation mysql semble créer un utilisateur en utilisant useradd commande et a utilisé '-s ' option définie sur /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 || :

Le problème a été signalé par Mike Rubel@Redhat , qui dit mysql l'utilisateur doit être nologin utilisateur par défaut.

Mais il semble que Tom Lane (probablement l'un des développeurs MySQL) refuse d'accepter le rapport de bogue. Il dit mysql le compte est créé sans mot de passe et limitera finalement l'accès à la connexion.

Mike a répondu - le comportement est toujours inhabituel, car un mysqld vulnérable permettrait à un attaquant d'installer une clé SSH dans /var/lib/mysql/.ssh/authorized_keys (le répertoire personnel de mysql), pour autoriser l'accès au shell distant (ce qui fait qu'un compte sans mot de passe a moins de sens).

Bien qu'il y ait eu beaucoup de soutien pour Mike, Tom a continué à justifier la raison de mysql compte ayant accès au shell. Il dit qu'il existe des utilitaires tels que mysqlhotcopy , mysqluc nécessitent un accès au shell. L'administrateur MySQL peut également vouloir passer à mysql utilisateur pour effectuer des opérations de sauvegarde.

Refuser l'accès shell à l'utilisateur MySQL affectera le service ?

Eh bien, je suis d'accord que certaines commandes peuvent nécessiter un accès au shell. Mais la commande de sauvegarde MySQL la plus populaire mysqldump ne nécessite pas shell en tant qu'utilisateur mysql  n'est-ce pas? L'administrateur MySQL n'a pas besoin de passer à mysql compte utilisateur pour exécuter une sauvegarde, à la place mysqldump peut être exécuté comme n'importe quel utilisateur en fournissant un nom d'utilisateur, un mot de passe et une base de données mysql valides. J'exécute une sauvegarde de mon site Web via cron qui utilise mysqldump . Je ne passe pas à mysql utilisateur pour le faire.

Selon Tom, si c'est la seule raison pour laquelle mysql l'utilisateur a accès au shell, alors je suis fortement contre.

J'ai donc changé mysql shell utilisateur à /bin/false dans /etc/passwd . Je n'ai vu aucun problème jusqu'à présent (j'espère pas à l'avenir). Au cas où, si je vois un problème, je reviendrai sur cet article et le mettrai à jour.

Avertissement:

Je ne suis pas un développeur MySQL ni un expert dans son utilisation. Mais je comprends seulement que l'utilisateur mysql ne nécessite pas d'accès au shell. Je me trompe peut-être, mais mysql en tant que nologin fonctionne sans aucun problème sur mon serveur.

Autorisez-vous l'utilisateur mysql à avoir accès au shell ? J'apprécie vos pensées.

Information:

Vous voudrez peut-être connaître la différence entre /bin/false et /sbin/nologin.


Linux
  1. Bash =~ Regex et Https://regex101.com/?

  2. Comment /etc/motd est-il mis à jour ?

  3. Comment récupérer à partir d'une entrée racine supprimée dans les fichiers /etc/shadow et/ou /etc/passwd dans CentOS / RHEL 6

  4. /etc/passwd affiche l'utilisateur dans un groupe, mais /etc/group ne le fait pas

  5. Modifier le répertoire personnel d'un utilisateur LDAP sous Linux

Comprendre le fichier /etc/passwd

La bonne façon de modifier les fichiers /etc/passwd et /etc/group sous Linux

Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

Pourquoi /bin/sh pointe-t-il vers /bin/dash et non /bin/bash ? ?

Qu'est-ce que le fichier /etc/passwd sous Linux ?

Pourquoi les répertoires /home, /usr, /var, etc. ont-ils tous le même numéro d'inode (2) ?