Почему пользователю предоставляется оболочка для PostgreSQL?

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?

3 ответа

Решение

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

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

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

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

usermod --shell /bin/false postgres

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

su --shell /bin/bash postgres

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

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

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

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

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

sudo passwd postgres
Другие вопросы по тегам