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
に置き換えることはできますか?
コマンドラインからPostgreSQLをPostgreSQLユーザーとして使用するため、シェルがあります。
Postgresは、セキュリティ上の理由から特別なオペレーティングシステムユーザーアカウントで実行されます。このアカウントは、インストーラーの実行時にマシン上に作成され、コマンドラインで上書きされない限り、「postgres」と呼ばれます。
LinuxやMac OS XなどのUnixライクなオペレーティングシステムでは、アカウントはパスワードなしで設定され、ユーザーは通常、それについて再度心配する必要はありません。 ソース 。
また、passwdファイルを手動で編集することはお勧めできません。次のコマンドを使用する必要があります。
Sudo passwd postgres
サーバー管理者がSudo
を使用し、その環境とumaskの結果に注意を払わない場合、データベースでの作業により、意図しない場所または意図しない権限でファイルが作成される可能性があります。
ユーザーにシェルを割り当てると、管理者はpostgresとしてログインし、そのユーザーのシェルで作業を行うことができます。不特定のサーバーエラーメッセージの原因としてSudo
を理解するのは頭痛の種です。
これが不要で、エラーが発生しやすい方法でpostgresバイナリを呼び出さないことが確実な場合は、シェルを安全に削除できます。
usermod --Shell /bin/false postgres
Rootになることができても、有効なシェルを持たないユーザーを含め、誰でもなることができることに注意してください。
su --Shell /bin/bash postgres
信頼できるソース:
特定の種類の特別な管理または修正を行えるように、そのユーザーとしてログインしたい場合があります。たとえば、pg_resetxlogを実行する必要がある場合、suまたはSudoの呼び出しが正しく、奇妙な方法でデータベースディレクトリの権限を混乱させないことが非常に確信できない限り、おそらくpostgresとしてログインする必要があります。 - Peter Eisentraut、PostgreSQL開発者