Почему пользователю предоставляется оболочка для 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

Могу ли я заменить это /bin/bashна /bin/false?

Smile.Hunter
источник
1
@ Джордж Кастро, мой вопрос: почему существует оболочка для пользователя PostgreSQL, а не почему есть пользователь для PostgreSQL ... потому что я видел, что другие пользователи, такие как MySQL, не требовали этого.
Smile.Hunter

Ответы:

4

Существует оболочка, потому что мы используем PostgreSQL из командной строки в качестве пользователя PostgreSQL.


источник
Тогда мы не использовали MySQL в качестве пользователя MySQL, верно? Я предполагаю, что этот пользователь использовался для внутренней системы. Это означает, что я не должен удалять это, /bin/bashчтобы сохранить мой PostgreSQL корректно работающим .. В любом случае, спасибо!
Smile.Hunter
2

В целях безопасности Postgres работает под специальной учетной записью пользователя операционной системы. Эта учетная запись создается на вашем компьютере при запуске программы установки, и, если она не переопределена в командной строке, она будет называться «postgres».

В Unix-подобных операционных системах, таких как Linux и Mac OS X, учетная запись настраивается без пароля, и пользователям обычно больше не нужно беспокоиться об этом. Источник .

Также не рекомендуется редактировать файл passwd вручную. Вы должны использовать команду:

sudo passwd postgres
ThiagoPonte
источник
2
Спасибо, но я хочу знать, почему для PostgreSQL для пользователя существует «оболочка bash», я узнал, что разрешение заставляет кого-то входить в postgresql, а затем каким-то образом получает оболочку bash, которая не имеет смысла для пользователя службы, которую я хотел бы никогда не входил в. (Я вижу другого пользователя для других сервисов, таких как apache2, mysql, им не требуется bash shell для своих пользователей)
Smile.Hunter
1

Если администратор сервера использует sudoи не заботится о том, в какой среде это происходит, и маскирует это, работа с базой данных может привести к созданию файлов в непредусмотренных местах или с непреднамеренными разрешениями.

Назначение оболочки для пользователя позволяет администраторам входить в систему как postgres и выполнять работу над этой оболочкой пользователя. Выяснение sudoисточника неопределенных сообщений об ошибках сервера было бы слишком большой головной болью.

Если вам это не нужно и вы уверены, что никогда не будете вызывать двоичные файлы postgres таким подверженным ошибкам способом, вы можете безопасно удалить оболочку:

usermod --shell /bin/false postgres

Имейте в виду, что, получив возможность стать пользователем root, вы все равно можете стать кем угодно, включая пользователей без действительных оболочек:

su --shell /bin/bash postgres

Авторитетный источник:

Иногда вы хотите войти в систему под этим пользователем, чтобы иметь возможность выполнять определенные виды специального администрирования или исправления. Например, если вам когда-либо понадобится запустить pg_resetxlog, вы, вероятно, захотите войти в систему как postgres, если только вы не уверены, что ваши вызовы su или sudo верны и не странно портят права доступа к каталогу базы данных. - Питер Eisentraut, PostgreSQL DEV

апх
источник
Этот ответ лучше, чем принятый ответ. Нет необходимости в оболочке входа в систему, чтобы иметь возможность запускать команды от имени определенного пользователя (для этого будет достаточно sudo). Многие подсистемы Ubuntu имеют / bin / false или / usr / sbin / nologin в качестве оболочки входа в систему, и они работают просто отлично, не открывая новых способов удаленного доступа к системе.
Ариэльф