¿Por qué hay un shell dado al usuario para 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

¿Puedo reemplazar eso /bin/bashcon /bin/false?

Sonrisa cazador
fuente
1
@Jorge Castro mi pregunta es, ¿por qué hay un shell para el usuario de PostgreSQL, no por qué hay un usuario para PostgreSQL ... porque he visto que otros usuarios como MySQL no lo necesitaban?
Smile.Hunter

Respuestas:

4

Hay un shell porque usamos PostgreSQL desde la línea de comandos como usuario de PostgreSQL.


fuente
Entonces, no usamos MySQL como el usuario de MySQL ¿verdad? Supongo que ese usuario se usó para el sistema interno. Esto significa que no debería eliminarlo /bin/bashpara mantener mi PostgreSQL funcionando correctamente. ¡Gracias de todos modos!
Smile.Hunter
2

Postgres se ejecuta bajo una cuenta de usuario especial del sistema operativo por razones de seguridad. Esta cuenta se crea en su máquina cuando se ejecuta el instalador y, a menos que se anule en la línea de comando, se llamará "postgres".

En los sistemas operativos similares a Unix, como Linux y Mac OS X, la cuenta se configura sin una contraseña y los usuarios generalmente no necesitan preocuparse por ella nuevamente. Fuente .

Tampoco es una buena práctica editar el archivo passwd manualmente. Deberías usar el comando:

sudo passwd postgres
ThiagoPonte
fuente
2
Gracias pero quiero saber por qué hay un "bash shell" para un usuario para PostgreSQL, he aprendido que el permiso hace que alguien inicie sesión en postgresql y luego de alguna manera obtuve un bash shell que no tiene sentido para un usuario del servicio nunca ha iniciado sesión en (Veo a otros usuarios para otros servicios como apache2, mysql, no requerían bash shell para sus usuarios)
Smile.Hunter
1

Si un administrador del servidor usa sudoy no tiene cuidado con el entorno y la máscara que produce, trabajar en la base de datos puede terminar creando archivos en ubicaciones no deseadas o con permisos no deseados.

Asignar un shell al usuario permite a los administradores iniciar sesión como postgres y hacer el trabajo en ese shell de usuarios. Descubrir sudocomo la fuente de mensajes de error inespecíficos del servidor sería un gran dolor de cabeza.

Si no necesita esto, y está seguro de que nunca llamará a los binarios de postgres de una manera tan propensa a errores, puede eliminar el shell de forma segura:

usermod --shell /bin/false postgres

Tenga en cuenta que, aunque puede convertirse en root, puede convertirse en cualquier persona, incluidos los usuarios sin shells válidos:

su --shell /bin/bash postgres

Fuente autorizada:

A veces, desea iniciar sesión como ese usuario para poder realizar ciertos tipos de administración o arreglos especiales. Por ejemplo, si alguna vez necesita ejecutar pg_resetxlog, es probable que desee iniciar sesión como postgres, a menos que esté muy seguro de que sus invocaciones su o sudo son correctas y no estropee los permisos del directorio de la base de datos de maneras extrañas. - Peter Eisentraut, desarrollador de PostgreSQL

ansioso
fuente
Esta respuesta es mejor que la respuesta aceptada. No es necesario que un shell de inicio de sesión pueda ejecutar comandos como un determinado usuario (para eso sudo lo haría). Muchos subsistemas de Ubuntu tienen / bin / false o / usr / sbin / nologin como su shell de inicio de sesión y funcionan bien, sin abrir nuevas formas de acceder de forma remota a un sistema.
arielf