GNU/Linux >> Linux Esercitazione >  >> Linux

Perché l'utente mysql ha la shell bash in /etc/passwd?

Se installi MySQL su Linux, un nuovo account utente chiamato "mysql ' verrà creato per l'esecuzione di mysqld servizio. Ma perché l'utente mysql ha la shell bash in /etc/passwd ? In genere, i servizi vengono eseguiti come utente nologin, dove la shell sarà impostata su /bin/false o /bin/nologin in /etc/passwd file. Significa che l'account è idoneo per l'esecuzione di un servizio, ma non ha un accesso alla shell. Ho creduto fermamente (correggimi, se la mia comprensione è sbagliata nella sezione dei commenti) che questa impostazione migliorerà la sicurezza. L'accesso alla shell fornito all'utente mysql è intenzionale (o ha uno scopo reale)? Scopriamolo.

Secondo la segnalazione di bug inviata in Redhat, lo script di preinstallazione di mysql sembra creare un utente utilizzando useradd comando e ha usato '-s ' opzione impostata su /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 || :

Il problema è stato segnalato da Mike Rubel@Redhat , che dice mysql l'utente deve essere nologin utente per impostazione predefinita.

Ma sembra che Tom Lane (probabilmente uno degli sviluppatori MySQL) si rifiuti di accettare la segnalazione di bug. Dice mysql l'account viene creato senza password e alla fine limiterà l'accesso all'accesso.

Mike ha risposto:il comportamento è ancora insolito, perché un mysqld vulnerabile consentirebbe a un utente malintenzionato di installare una chiave SSH in /var/lib/mysql/.ssh/authorized_keys (la directory home di mysql), per consentire l'accesso remoto alla shell (che rende un account senza password meno significativo).

Sebbene ci fosse un sacco di supporto per Mike, Tom ha continuato a giustificare il motivo di mysql account con accesso alla shell. Dice che ci sono utilità come mysqlhotcopy , mysqluc richiedono l'accesso alla shell. Anche l'amministratore MySQL potrebbe voler passare a mysql utente per eseguire operazioni di backup.

Negare l'accesso alla shell all'utente MySQL influirà sul servizio?

Bene, sono d'accordo che alcuni comandi potrebbero richiedere l'accesso alla shell. Ma il comando di backup MySQL più popolare mysqldump non richiede shell come utente mysql  no? L'amministratore MySQL non deve passare a mysql account utente per eseguire un backup, invece mysqldump può essere eseguito come qualsiasi utente fornendo nome utente, password e database mysql validi. Eseguo un backup del mio sito Web tramite cron che utilizza mysqldump . Non passo a mysql utente per farlo.

Secondo Tom, se questo è l'unico motivo per cui mysql l'utente ha accesso alla shell, quindi sono fortemente contrario.

Quindi ho cambiato mysql shell utente su /bin/false in /etc/passwd . Non ho riscontrato alcun problema fino ad ora (si spera non in futuro). Nel caso, se vedo qualche problema, tornerò a questo articolo e lo aggiornerò.

Disclaimer:

Non sono uno sviluppatore MySQL né un esperto nell'utilizzo. Ma capisco solo che l'utente MySQL non richiede l'accesso alla shell. Potrei sbagliarmi, ma mysql as nologin funziona senza alcun problema sul mio server.

Permetterai all'utente mysql di avere accesso alla shell? Apprezzo i tuoi pensieri.

Informazione:

Potresti voler conoscere la differenza tra /bin/false e /sbin/nologin.


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Perché /bin/sh punta a /bin/dash e non a /bin/bash??

  3. Come recuperare dalla voce di root eliminata nei file /etc/shadow e/o /etc/passwd in CentOS / RHEL 6

  4. Bypassare il comando/script specificato in /etc/passwd

  5. Modifica la home directory per un utente LDAP in Linux

Comprendere il file /etc/passwd

Il modo giusto per modificare i file /etc/passwd e /etc/group in Linux

Bash =~ Regex e HTTPS://regex101.com/?

Come viene aggiornato /etc/motd?

Che cos'è il file /etc/passwd in Linux?

#!/bin/sh vs #!/bin/bash per la massima portabilità