web-dev-qa-db-ja.com

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 <[email protected]>
Original-Maintainer: Debian PostgreSQL Maintainers <[email protected]>
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に置き換えることはできますか?

10
Smile.Hunter

コマンドラインからPostgreSQLをPostgreSQLユーザーとして使用するため、シェルがあります。

4
user8290

Postgresは、セキュリティ上の理由から特別なオペレーティングシステムユーザーアカウントで実行されます。このアカウントは、インストーラーの実行時にマシン上に作成され、コマンドラインで上書きされない限り、「postgres」と呼ばれます。

LinuxやMac OS XなどのUnixライクなオペレーティングシステムでは、アカウントはパスワードなしで設定され、ユーザーは通常、それについて再度心配する必要はありません。 ソース

また、passwdファイルを手動で編集することはお勧めできません。次のコマンドを使用する必要があります。

Sudo passwd postgres
2
ThiagoPonte

サーバー管理者がSudoを使用し、その環境とumaskの結果に注意を払わない場合、データベースでの作業により、意図しない場所または意図しない権限でファイルが作成される可能性があります。

ユーザーにシェルを割り当てると、管理者はpostgresとしてログインし、そのユーザーのシェルで作業を行うことができます。不特定のサーバーエラーメッセージの原因としてSudoを理解するのは頭痛の種です。

これが不要で、エラーが発生しやすい方法でpostgresバイナリを呼び出さないことが確実な場合は、シェルを安全に削除できます。

usermod --Shell /bin/false postgres

Rootになることができても、有効なシェルを持たないユーザーを含め、誰でもなることができることに注意してください。

su --Shell /bin/bash postgres

信頼できるソース:

特定の種類の特別な管理または修正を行えるように、そのユーザーとしてログインしたい場合があります。たとえば、pg_resetxlogを実行する必要がある場合、suまたはSudoの呼び出しが正しく、奇妙な方法でデータベースディレクトリの権限を混乱させないことが非常に確信できない限り、おそらくpostgresとしてログインする必要があります。 - Peter Eisentraut、PostgreSQL開発者

1
anx