Perché viene fornita una shell all'utente per PostgreSQL?


10

cat /etc/passwd |grep postgre

postgres:x:115:127:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

apt-cache show postgresql

Package: postgresql
Priority: optional
Section: database
Installed-Size: 65
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian PostgreSQL Maintainers <pkg-postgresql-public@lists.alioth.debian.org>
Architecture: all
Source: postgresql-common (136)
Version: 9.1+136
Depends: postgresql-9.1
Filename: pool/main/p/postgresql-common/postgresql_9.1+136_all.deb
Size: 5468
MD5sum: 34f5a1373ad5cd0b6f5aa3e7af06c9e7
SHA1: 6f271758bd51c23614b12fd63fb711ecfa43e9e5
SHA256: e8921a22b560e81f57a2a00001e31ba1036f67a8e7f151bf8f977b4919fc559a

Posso sostituirlo /bin/bashcon /bin/false?


1
@Jorge Castro la mia domanda è: perché c'è una shell per l'utente di PostgreSQL, non perché c'è un utente per PostgreSQL .. perché ho visto altri utenti come MySQL non averlo richiesto.
Sorriso

Risposte:


4

C'è una shell perché usiamo PostgreSQL dalla riga di comando come utente PostgreSQL.


Quindi, non abbiamo usato MySQL come utente MySQL giusto? Immagino che quell'utente sia stato utilizzato per il sistema interno, ciò significa che non dovrei rimuoverlo /bin/bashper far funzionare correttamente PostgreSQL. Grazie comunque!
Sorriso

2

Postgres viene eseguito con un account utente del sistema operativo speciale per motivi di sicurezza. Questo account viene creato sul tuo computer quando viene eseguito il programma di installazione e, a meno che non venga sovrascritto dalla riga di comando, verrà chiamato "postgres".

Su sistemi operativi simili a Unix come Linux e Mac OS X, l'account è configurato senza password e gli utenti generalmente non devono più preoccuparsene. Fonte .

Inoltre, non è consigliabile modificare manualmente il file passwd. Dovresti usare il comando:

sudo passwd postgres

2
Grazie, ma voglio sapere perché esiste una "shell bash" per un utente per PostgreSQL, ho imparato che l'autorizzazione fa sì che qualcuno acceda a postgresql e quindi in qualche modo ottenga una shell bash che non ha senso per un utente del servizio che vorrei mai effettuato l'accesso. (Vedo un altro utente per altri servizi come apache2, mysql, non hanno richiesto la shell bash per i loro utenti)
Smile.Hunter

1

Se un amministratore del server utilizza sudoe non è attento all'ambiente e al risultato che ne deriva, lavorare sul database potrebbe finire per creare file in posizioni non intenzionali o con autorizzazioni non intenzionali.

L'assegnazione di una shell all'utente consente agli amministratori di accedere come postgres e svolgere il lavoro sulla shell di tale utente. Capire sudocome la fonte di messaggi di errore del server non specifici sarebbe troppo mal di testa.

Se non ti serve, e sei certo che non chiamerai mai i binari di postgres in un modo così soggetto a errori che puoi rimuovere in sicurezza la shell:

usermod --shell /bin/false postgres

Tieni presente che, per essere in grado di diventare root, puoi comunque diventare chiunque, inclusi gli utenti senza shell valide:

su --shell /bin/bash postgres

Fonte autorevole:

A volte si desidera accedere come tale utente per poter eseguire determinati tipi di amministrazione o correzioni speciali. Ad esempio, se mai avessi bisogno di eseguire pg_resetxlog, probabilmente vorrai accedere come postgres, a meno che tu non sia molto sicuro che le tue invocazioni su o sudo siano corrette e non incasino le autorizzazioni della directory del database in modi strani. - Peter Eisentraut, sviluppatore PostgreSQL


Questa risposta è migliore della risposta accettata. Non è necessario che una shell di login sia in grado di eseguire comandi come un certo utente (per quel che farebbe sudo). Molti sottosistemi Ubuntu hanno / bin / false o / usr / sbin / nologin come shell di login e funzionano bene, senza aprire nuovi modi per accedere in remoto a un sistema.
arielf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.