Чому для PostgreSQL користувачеві надається оболонка?


11

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?


1
@Jorge Castro моє запитання полягає в тому, чому існує оболонка для користувача PostgreSQL, а не чому є користувач для PostgreSQL .. тому що я бачив, що інші користувачі, такі як MySQL, не вимагали цього.
Посмішка. Мисливець

Відповіді:


4

Оболонка є, оскільки ми використовуємо PostgreSQL з командного рядка як користувач PostgreSQL.


Тоді, ми не використовували MySQL як користувача MySQL прав? Я думаю, що, можливо, цей користувач використовувався для внутрішньої системи. Це означає, що я не повинен видаляти це /bin/bashдля того, щоб мій PostgreSQL працював правильно. Дякую вам все одно!
Посмішка. Мисливець

2

Postgres працює з спеціального облікового запису користувача операційної системи з міркувань безпеки. Цей обліковий запис створюється на вашій машині під час запуску програми інсталятора, і якщо вона не буде перекрито в командному рядку, вона буде називатися "postgres".

У подібних Unix операційних системах, таких як Linux та Mac OS X, обліковий запис налаштовано без пароля, і користувачі, як правило, ніколи більше не повинні про це турбуватися. Джерело .

Крім того, це не є хорошою практикою редагувати файл passwd вручну. Ви повинні використовувати команду:

sudo passwd postgres

2
Дякую, але я хочу знати, чому існує "bash shell" для користувача для PostgreSQL, я дізнався, що дозвіл викликає те, що хтось увійшов до postgresql, а потім якось отримав bash shell, який не має сенсу для користувача сервісу, що я б ніколи не входив у систему. (Я бачу іншого користувача для інших служб, таких як apache2, mysql, вони не потребували bash shell для своїх користувачів)
Smile.Hunter

2

Якщо адміністратор сервера використовує sudoі не дбає про те, в якому середовищі та умасках це призводить, робота над базою даних може закінчитися створенням файлів у ненавмисних місцях або з ненавмисними дозволами.

Призначення оболонки користувачеві дозволяє адміністраторам увійти в систему як поштові адреси та виконати роботу над оболонкою користувачів. Виявити, sudoщо джерело неспецифічних повідомлень про помилки сервера було б занадто сильним головним болем.

Якщо вам цього не потрібно, і ви впевнені, що ви ніколи не будете називати бінарні файли postgres таким способом, схильним до помилок, ви можете безпечно видалити оболонку:

usermod --shell /bin/false postgres

Майте на увазі, що, маючи змогу стати root, ви все одно можете стати ким завгодно, включаючи користувачів без дійсних оболонок:

su --shell /bin/bash postgres

Авторитетне джерело:

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


Ця відповідь краще, ніж прийнята відповідь. Немає потреби в оболонці для входу, щоб мати змогу виконувати команди як певний користувач (для цього судо це зробить). Багато підсистем Ubuntu мають / bin / false або / usr / sbin / nologin в якості оболонки для входу, і вони працюють прекрасно, не відкриваючи нових способів віддаленого доступу до системи.
аріельф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.