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