GNU/Linux >> Znalost Linux >  >> Linux

Proč má uživatel mysql bash shell v /etc/passwd?

Pokud nainstalujete MySQL na Linux, pak nový uživatelský účet s názvem ‚mysql ‘ bude vytvořen pro spuštění mysqld servis. Ale proč má uživatel mysql bash shell v /etc/passwd ? Obecně jsou služby spouštěny jako uživatel nologin, kde bude shell nastaven na /bin/false nebo /bin/nologin v /etc/passwd soubor. To znamená, že účet je způsobilý pro provozování služby, ale nemá přístup k shellu. Pevně ​​jsem věřil (opravte mě, pokud je mé chápání v sekci komentářů špatné), že toto nastavení zlepší zabezpečení. Byl přístup k shellu poskytnutý uživateli mysql záměrný (nebo má nějaký skutečný účel)? Pojďme to zjistit.

Podle zprávy o chybě odeslané na Redhat se zdá, že předinstalační skript mysql vytváří uživatele pomocí useradd a použil „-s ‘ možnost nastavena na /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 || :

Problém nahlásil Mike Rubel@Redhat , který říká mysql uživatel by měl být nologin uživatel ve výchozím nastavení.

Ale zdá se, že Tom Lane (pravděpodobně jeden z vývojářů MySQL) odmítá přijmout hlášení o chybě. Říká mysql účet je vytvořen bez hesla a v konečném důsledku omezí přístup k přihlášení.

Mike odpověděl – chování je stále neobvyklé, protože je zranitelný mysqld by umožnilo útočníkovi nainstalovat klíč SSH do /var/lib/mysql/.ssh/authorized_keys (domovský adresář mysql), abyste umožnili vzdálený přístup k shellu (což znamená, že účet bez hesla znamená méně).

Přestože Mike měl spoustu podpory, Tom nadále zdůvodňoval důvod mysql účet s shellovým přístupem. Říká, že existují nástroje jako mysqlhotcopy , mysqluc vyžadují přístup k shellu. Také správce MySQL může chtít přejít na mysql uživatel k provádění operací zálohování.

Odepření přístupu k shellu uživateli MySQL bude mít vliv na službu?

Souhlasím, některé příkazy mohou vyžadovat přístup k shellu. Ale nejoblíbenější zálohovací příkaz MySQL mysqldump nevyžaduje shell jako uživatel mysql  není? Správce MySQL se nemusí přepínat na mysql uživatelský účet pro spuštění zálohy, místo toho mysqldump lze spustit jako jakýkoli uživatel poskytnutím platného uživatelského jména, hesla a databáze mysql. Spouštím zálohu svého webu přes cron který používá mysqldump . Nepřecházím na mysql aby to udělal uživatel.

Podle Toma, pokud je to jediný důvod, proč mysql uživatel má přístup k shellu, pak jsem silně proti.

Tak jsem změnil mysql uživatelský shell na /bin/false v /etc/passwd . Zatím jsem žádný problém neviděl (doufám, že ne v budoucnu). V případě, že zaznamenám nějaký problém, vrátím se k tomuto článku a aktualizuji jej.

Vyloučení odpovědnosti:

Nejsem vývojář MySQL ani odborník na jeho používání. Ale chápu, že uživatel mysql nevyžaduje přístup k shellu. Možná se mýlím, ale mysql jako nologin na mém serveru funguje bez problémů.

Povolíte uživateli mysql mít přístup k shellu? Oceňuji vaše myšlenky.

Informace:

Možná budete chtít znát rozdíl mezi /bin/false a /sbin/nologin.


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

  2. Jak se obnovit ze smazaného kořenového záznamu v souborech /etc/shadow a/nebo /etc/passwd v CentOS / RHEL 6

  3. CentOS / RHEL :Jak obnovit ze smazaného souboru /etc/passwd

  1. Jak zakázat automatické dokončování (dokončování karet) v bash shell

  2. BASH:Zkontrolujte v /etc/shadow, pokud je heslo uživatele uzamčeno

  3. #!/bin/sh vs #!/bin/bash pro maximální přenositelnost

  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Proč /bin/sh ukazuje na /bin/dash a ne /bin/bash?

  3. Jak se aktualizuje /etc/motd?