PostgreSQL 용으로 사용자에게 쉘이 제공되는 이유는 무엇입니까? optional Section: database Installed-Size: 65 Maintainer: Ubuntu

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?



답변

명령 행의 PostgreSQL을 PostgreSQL 사용자로 사용하기 때문에 쉘이 있습니다.


답변

Postgres는 보안상의 이유로 특수 운영 체제 사용자 계정으로 실행됩니다. 이 계정은 설치 관리자가 실행될 때 컴퓨터에서 생성되며 명령 줄에서 재정의하지 않으면 “postgres”라고합니다.

Linux 및 Mac OS X와 ​​같은 Unix와 유사한 운영 체제에서 계정은 비밀번호없이 설정되며 사용자는 일반적으로 다시 걱정할 필요가 없습니다. 소스 .

또한 passwd 파일을 수동으로 편집하는 것은 좋지 않습니다. 다음 명령을 사용해야합니다.

sudo passwd postgres

답변

서버 관리자가 sudo이로 인해 어떤 환경 및 umask를 사용하는지주의하지 않으면 데이터베이스 작업으로 인해 의도하지 않은 위치 또는 의도하지 않은 권한으로 파일이 생성 될 수 있습니다.

사용자에게 쉘을 할당하면 관리자가 postgres로 로그인하여 해당 사용자 쉘에 대한 작업을 수행 할 수 있습니다. sudo비 특정 서버 오류 메시지의 원인으로 파악 하면 너무 골치 아픈 일입니다.

이것이 필요하지 않고, 오류가 발생하기 쉬운 postgres 바이너리를 호출하지 않을 것이라고 확신한다면, 쉘을 안전하게 제거 할 수 있습니다 :

usermod --shell /bin/false postgres

루트가 될 수 있다고 생각하면 유효한 쉘이없는 사용자를 포함하여 여전히 누구나 될 수 있습니다.

su --shell /bin/bash postgres

권위있는 출처 :

때로는 특정 유형의 특수 관리 또는 수정을 수행 할 수 있도록 해당 사용자로 로그인하려고합니다. 예를 들어, pg_resetxlog를 실행해야하는 경우 su 또는 sudo 호출이 올 바르고 데이터베이스 디렉토리의 권한을 이상한 방식으로 엉망으로 만들지 않는 한 postgres로 로그인하려고합니다. – 피터 Eisentraut, PostgreSQL을 DEV