Mengapa ada shell yang diberikan kepada pengguna untuk 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

Bisakah saya menggantinya /bin/bashdengan /bin/false?

Senyum. Pemburu
sumber
1
@Jorge Castro pertanyaan saya adalah, mengapa ada shell untuk pengguna PostgreSQL, bukan mengapa ada pengguna untuk PostgreSQL .. karena saya telah melihat pengguna lain seperti MySQL tidak memerlukannya.
Smile.Hunter

Jawaban:

4

Ada sebuah shell karena kami menggunakan PostgreSQL dari baris perintah sebagai pengguna PostgreSQL.


sumber
Lalu, Kami tidak menggunakan MySQL sebagai pengguna MySQL, kan? Saya kira mungkin pengguna itu digunakan untuk sistem internal, Ini berarti saya tidak boleh menghapusnya /bin/bashagar PostgreSQL saya tetap berjalan dengan benar .. Terima kasih!
Smile.Hunter
2

Postgres berjalan di bawah akun pengguna sistem operasi khusus untuk alasan keamanan. Akun ini dibuat di mesin Anda ketika penginstal berjalan, dan kecuali ditimpa pada baris perintah, itu akan disebut "postgres".

Pada sistem operasi mirip Unix seperti Linux dan Mac OS X, akun tersebut diatur tanpa kata sandi dan pengguna umumnya tidak perlu khawatir lagi. Sumber .

Juga bukan praktik yang baik untuk mengedit file passwd secara manual. Anda harus menggunakan perintah:

sudo passwd postgres
ThiagoPonte
sumber
2
Terima kasih tetapi saya ingin tahu mengapa ada "bash shell" untuk pengguna PostgreSQL, saya telah belajar bahwa izin menyebabkan seseorang masuk ke postgresql dan kemudian entah bagaimana mendapat bash shell yang tidak masuk akal bagi pengguna layanan yang saya inginkan tidak pernah masuk ke. (Saya melihat pengguna lain untuk layanan lain seperti apache2, mysql, mereka tidak memerlukan bash shell untuk penggunanya)
Smile.Hunter
1

Jika admin server menggunakan sudodan tidak berhati-hati tentang lingkungan apa dan dan umask hasil ini, bekerja pada database dapat membuat file di lokasi yang tidak diinginkan atau dengan izin yang tidak diinginkan.

Menetapkan shell untuk pengguna memungkinkan admin untuk login sebagai postgres dan melakukan pekerjaan pada shell pengguna tersebut. Mencari tahu sudosebagai sumber pesan kesalahan server tidak spesifik akan terlalu merepotkan.

Jika Anda tidak membutuhkan ini, dan yakin bahwa Anda tidak akan pernah memanggil binari postgres dengan cara yang rawan kesalahan, Anda dapat menghapus shell dengan aman:

usermod --shell /bin/false postgres

Ingatlah bahwa, beign dapat menjadi root, Anda masih bisa menjadi siapa saja, termasuk pengguna tanpa cangkang yang valid:

su --shell /bin/bash postgres

Sumber resmi:

Terkadang Anda ingin masuk sebagai pengguna untuk dapat melakukan jenis administrasi atau perbaikan tertentu. Misalnya, jika Anda perlu menjalankan pg_resetxlog, Anda mungkin ingin masuk sebagai postgres, kecuali jika Anda sangat yakin bahwa permintaan su atau sudo Anda benar dan jangan mengacaukan izin direktori database dengan cara yang aneh. - Peter Eisentraut, PostgreSQL dev

anx
sumber
Jawaban ini lebih baik daripada jawaban yang diterima. Tidak perlu shell login untuk dapat menjalankan perintah sebagai pengguna tertentu (untuk itu sudo akan melakukannya). Banyak subsistem Ubuntu memiliki / bin / false atau / usr / sbin / nologin sebagai shell login mereka dan mereka berfungsi dengan baik, sementara tidak membuka cara baru untuk mengakses sistem dari jarak jauh.
arielf