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か?


1
@Jorge Castro私の質問は、なぜPostgreSQLのユーザーにシェルがあるのか​​ではなく、なぜPostgreSQLのユーザーがいるのかということです。
Smile.Hunter

回答:


4

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


では、MySQLをMySQLユーザーとして使用しませんでしたよね?そのユーザーは内部システムに使用されていたのではないかと思い/bin/bashます。つまり、PostgreSQLを正しく実行し続けるために、そのユーザーを削除しないでください。とにかくありがとう!
Smile.Hunter

2

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

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

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

sudo passwd postgres

2
ありがとう、でもPostgreSQLのユーザーに「bashシェル」がある理由を知りたいのですが、許可が原因で誰かがpostgresqlにログインし、どういうわけかサービスユーザーには意味のないbashシェルを取得したことを知りましたログインしたことがない。(apache2、mysqlなどの別のサービスで他のユーザーが表示されます。ユーザーはbashシェルを必要としませんでした)
Smile.Hunter

1

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

ユーザーにシェルを割り当てると、管理者はpostgresとしてログインし、そのユーザーのシェルで作業を行うことができます。考え出すsudo非特異的なサーバー・エラー・メッセージのソースとしては、頭痛のあまりになります。

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

usermod --shell /bin/false postgres

rootになることができるようになっても、有効なシェルを持たないユーザーを含め、誰にでもなることができます。

su --shell /bin/bash postgres

信頼できる情報源:

特定のタイプの特別な管理や修正を行うために、そのユーザーとしてログインしたい場合があります。たとえば、pg_resetxlogを実行する必要がある場合は、suまたはsudoの呼び出しが正しく、データベースディレクトリのアクセス許可を奇妙な方法で台無しにしないと確信している場合を除いて、おそらくpostgresとしてログインする必要があります。- ピーターEisentrautさん、PostgreSQLのDEV


この答えは、受け入れられた答えよりも優れています。ログインシェルが特定のユーザーとしてコマンドを実行できるようにする必要はありません(そのため、sudoが実行します)。多くのUbuntuサブシステムは、ログインシェルとして/ bin / falseまたは/ usr / sbin / nologinを備えており、システムにリモートアクセスするための新しい方法を開かずに問題なく動作します。
arielf 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.