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과 같은 다른 사용자가 필요하지 않은 것을 보았 기 때문입니다.
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 shell"이있는 이유를 알고 싶습니다. 허가로 인해 누군가 postgresql에 로그인 한 다음 bash 쉘을 얻었습니다. 로그인하지 않았습니다. (apache2, mysql과 같은 다른 서비스를 사용하는 다른 사용자를 보았습니다. 사용자에게는 bash 쉘이 필요하지 않았습니다)
Smile.Hunter

2

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

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

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

usermod --shell /bin/false postgres

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

su --shell /bin/bash postgres

권위있는 출처 :

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


이 답변은 허용되는 답변보다 낫습니다. 로그인 쉘이 특정 사용자로서 명령을 실행할 수 있도록 할 필요는 없습니다 (이 sudo가 할 것입니다). 많은 Ubuntu 하위 시스템에는 로그인 쉘로 / bin / false 또는 / usr / sbin / nologin이 있으며 시스템에 원격으로 액세스하는 새로운 방법을 열지 않으면 서 정상적으로 작동합니다.
arielf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.