GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum hat ein MySQL-Benutzer eine Bash-Shell in /etc/passwd?

Wenn Sie MySQL unter Linux installieren, wird ein neues Benutzerkonto mit dem Namen „mysql ‘ wird zum Ausführen von mysqld erstellt Service. Aber warum hat der mysql-Benutzer eine Bash-Shell in /etc/passwd ? Im Allgemeinen werden Dienste als nologin-Benutzer ausgeführt, wobei die Shell auf /bin/false gesetzt wird oder /bin/nologin in /etc/passwd Datei. Dies bedeutet, dass das Konto berechtigt ist, einen Dienst auszuführen, aber keinen Shell-Zugriff hat. Ich war fest davon überzeugt (korrigieren Sie mich, wenn mein Verständnis im Kommentarbereich falsch ist), dass diese Einstellung die Sicherheit verbessern wird. Wurde dem MySQL-Benutzer der Shell-Zugriff bereitgestellt, ist dies beabsichtigt (oder hat er einen echten Zweck)? Finden wir es heraus.

Laut dem in Redhat eingereichten Fehlerbericht scheint das mysql-Vorinstallationsskript einen Benutzer mit useradd zu erstellen Befehl und hat ‘-s verwendet ‘ Option auf /bin/bash gesetzt .

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

Das Problem wurde von Mike Rubel@Redhat gemeldet , der mysql sagt Benutzer sollte nologin sein Benutzer standardmäßig.

Aber es scheint, als ob Tom Lane (wahrscheinlich einer der MySQL-Entwickler) sich weigert, den Fehlerbericht anzunehmen. Er sagt mysql Das Konto wird ohne Passwort erstellt und beschränkt letztendlich den Anmeldezugriff.

Mike antwortete – das Verhalten ist immer noch ungewöhnlich, weil ein verwundbares mysqld würde es einem Angreifer ermöglichen, einen SSH-Schlüssel in /var/lib/mysql/.ssh/authorized_keys zu installieren (das Home-Verzeichnis von mysql), um Remote-Shell-Zugriff zu ermöglichen (wodurch ein Konto ohne Passwort weniger Bedeutung hat).

Obwohl es viel Unterstützung für Mike gab, rechtfertigte Tom weiterhin den Grund für mysql Konto mit Shell-Zugriff. Er sagt, es gibt Dienstprogramme wie mysqlhotcopy , mysqluc Shell-Zugriff erfordern. Außerdem möchte der MySQL-Administrator möglicherweise zu mysql wechseln Benutzer zum Durchführen von Sicherungsvorgängen.

Denying-shell-access-to-mysql-user-will-affect-the-service">Wird der Shell-Zugriff für MySQL-Benutzer den Dienst beeinträchtigen?

Nun, ich stimme zu, dass einige Befehle möglicherweise Shell-Zugriff erfordern. Aber der beliebteste MySQL-Sicherungsbefehl mysqldump erfordert keine Shell als MySQL-Benutzer  nicht? Der MySQL-Administrator muss nicht zu mysql wechseln Benutzerkonto, um eine Sicherung auszuführen, statt mysqldump kann als jeder Benutzer ausgeführt werden, indem ein gültiger MySQL-Benutzername, ein Kennwort und eine Datenbank angegeben werden. Ich mache ein Backup meiner Website über cron die mysqldump verwendet . Ich wechsle nicht zu mysql Benutzer, dies zu tun.

Laut Tom, wenn das der einzige Grund ist, warum mysql Benutzer Shell-Zugriff hat, dann bin ich strikt dagegen.

Also habe ich mysql geändert Benutzer-Shell nach /bin/false in /etc/passwd . Ich habe bis jetzt kein Problem gesehen (hoffentlich nicht in der Zukunft). Falls ich ein Problem sehe, werde ich auf diesen Artikel zurückkommen und ihn aktualisieren.

Haftungsausschluss:

Ich bin weder ein MySQL-Entwickler noch ein Experte in der Verwendung. Aber ich verstehe nur, dass MySQL-Benutzer keinen Shell-Zugriff benötigen. Ich könnte mich irren, aber mysql als nologin funktioniert ohne Probleme auf meinem Server.

Werden Sie MySQL-Benutzern Shell-Zugriff gewähren? Ich schätze Ihre Gedanken.

Information:

Vielleicht möchten Sie den Unterschied zwischen /bin/false und /sbin/nologin wissen.


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

  2. Warum zeigt /bin/sh auf /bin/dash und nicht auf /bin/bash?

  3. Wie wird /etc/motd aktualisiert?

  4. CentOS / RHEL:So stellen Sie eine gelöschte /etc/passwd-Datei wieder her

  5. So deaktivieren Sie die automatische Vervollständigung (Tab-Vervollständigung) in der Bash-Shell

Verstehen der /etc/passwd-Datei

Der richtige Weg zum Bearbeiten von /etc/passwd- und /etc/group-Dateien unter Linux

Was ist die Datei /etc/passwd unter Linux?

Warum haben die Verzeichnisse /home, /usr, /var usw. alle dieselbe Inode-Nummer (2)?

BASH:Überprüfen Sie in /etc/shadow, ob das Benutzerkennwort gesperrt ist

Unterschied zwischen /etc/hosts und /etc/resolv.conf