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.
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.