Tại sao có một vỏ được trao cho người dùng cho 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

Tôi có thể thay thế /bin/bashbằng /bin/false?


1
@Jorge Castro câu hỏi của tôi là, tại sao lại có vỏ cho người dùng PostgreQuery chứ không phải tại sao lại có người dùng cho PostgreQuery .. bởi vì tôi đã thấy những người dùng khác như MySQL không yêu cầu.
Smile.Hunter

Câu trả lời:


4

Có một shell bởi vì chúng tôi sử dụng PostgreSQL từ dòng lệnh với tư cách là người dùng PostgreSQL.


Sau đó, chúng tôi đã không sử dụng MySQL là người dùng MySQL phải không? Tôi đoán có thể người dùng đó đã được sử dụng cho hệ thống nội bộ, Điều này có nghĩa là tôi không nên xóa nó /bin/bashđể giữ cho PostgreQuery của tôi chạy chính xác .. Dù sao cũng cảm ơn bạn!
Smile.Hunter

2

Postgres chạy dưới tài khoản người dùng hệ điều hành đặc biệt vì lý do bảo mật. Tài khoản này được tạo trên máy của bạn khi trình cài đặt chạy và trừ khi bị ghi đè trên dòng lệnh, nó sẽ được gọi là "postgres".

Trên các hệ điều hành giống Unix như Linux và Mac OS X, tài khoản được thiết lập mà không cần mật khẩu và người dùng thường không bao giờ phải lo lắng về điều đó nữa. Nguồn .

Ngoài ra, đó không phải là một cách thực hành tốt để chỉnh sửa tệp passwd bằng tay. Bạn nên sử dụng lệnh:

sudo passwd postgres

2
Cảm ơn nhưng tôi muốn biết lý do tại sao có "bash shell" cho người dùng cho PostgreQuery, tôi đã biết rằng quyền đó khiến ai đó đăng nhập vào postgresql và sau đó bằng cách nào đó có một bash shell không có ý nghĩa đối với người dùng dịch vụ mà tôi sẽ không bao giờ đăng nhập vào. (Tôi thấy người dùng khác cho các dịch vụ khác như apache2, mysql, họ không yêu cầu bash shell cho người dùng của họ)
Smile.Hunter

1

Nếu quản trị viên máy chủ sử dụng sudovà không cẩn thận về môi trường và kết quả của việc này, làm việc trên cơ sở dữ liệu có thể sẽ tạo các tệp ở các vị trí ngoài ý muốn hoặc với các quyền không mong muốn.

Việc gán shell cho người dùng cho phép quản trị viên đăng nhập dưới dạng postgres và thực hiện công việc trên shell người dùng đó. Tìm ra sudonguồn gốc của các thông báo lỗi máy chủ không đặc hiệu sẽ là quá đau đầu.

Nếu bạn không cần điều này, và chắc chắn rằng bạn sẽ không bao giờ gọi các nhị phân postgres theo cách dễ bị lỗi như vậy, bạn có thể gỡ bỏ vỏ một cách an toàn:

usermod --shell /bin/false postgres

Hãy nhớ rằng, để có thể trở thành root, bạn vẫn có thể trở thành bất kỳ ai, kể cả người dùng không có shell hợp lệ:

su --shell /bin/bash postgres

Nguồn có thẩm quyền:

Đôi khi bạn muốn đăng nhập với tư cách là người dùng đó để có thể thực hiện một số loại quản trị hoặc sửa lỗi đặc biệt. Ví dụ: nếu bạn cần chạy pg_resetxlog, bạn có thể muốn đăng nhập dưới dạng postgres, trừ khi bạn rất tự tin rằng các yêu cầu su hoặc sudo của mình là chính xác và không làm rối các quyền của thư mục cơ sở dữ liệu theo những cách lạ. - Peter Eisentraut, nhà phát triển PostgreSQL


Câu trả lời này tốt hơn câu trả lời được chấp nhận. Không cần shell đăng nhập để có thể chạy các lệnh như một người dùng nhất định (đối với sudo đó sẽ làm). Nhiều hệ thống con Ubuntu có / bin / false hoặc / usr / sbin / nologin làm vỏ đăng nhập của chúng và chúng hoạt động tốt, trong khi không mở ra các cách mới để truy cập hệ thống từ xa.
thân
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.