เหตุใดจึงมีเชลล์ให้ผู้ใช้งาน 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/bashPostgreSQL ของฉันเพื่อให้ทำงานได้อย่างถูกต้อง .. ขอขอบคุณ!
Smile.Hunter

2

Postgres ทำงานภายใต้บัญชีผู้ใช้ระบบปฏิบัติการพิเศษด้วยเหตุผลด้านความปลอดภัย บัญชีนี้ถูกสร้างขึ้นบนเครื่องของคุณเมื่อตัวติดตั้งทำงานและหากไม่ได้เขียนทับบรรทัดคำสั่งมันจะถูกเรียกว่า "postgres"

บนระบบปฏิบัติการ Unix เช่น Linux และ Mac OS X บัญชีจะถูกตั้งค่าโดยไม่ต้องใช้รหัสผ่านและโดยทั่วไปผู้ใช้ไม่ต้องกังวลอีกต่อไป แหล่ง

นอกจากนี้ยังไม่ใช่วิธีที่ดีในการแก้ไขไฟล์ passwd ด้วยตนเอง คุณควรใช้คำสั่ง:

sudo passwd postgres

2
ขอบคุณ แต่ฉันต้องการทราบว่าทำไมมี "bash shell" สำหรับผู้ใช้สำหรับ PostgreSQL ฉันได้เรียนรู้ว่าการอนุญาตทำให้บางคนลงชื่อเข้าใช้ postgresql จากนั้นก็มี bash shell ซึ่งไม่สมเหตุสมผลสำหรับผู้ใช้บริการที่ฉันต้องการ ไม่เคยเข้าสู่ระบบ (ฉันเห็นผู้ใช้รายอื่นสำหรับบริการอื่น ๆ เช่น apache2, mysql, พวกเขาไม่ต้องการ bash shell สำหรับผู้ใช้ของพวกเขา)
Smile.Hunter

2

หากผู้ดูแลระบบเซิร์ฟเวอร์ใช้งานsudoและไม่ระมัดระวังเกี่ยวกับสภาพแวดล้อมใดและและให้ผลลัพท์นี้การทำงานกับฐานข้อมูลอาจสิ้นสุดการสร้างไฟล์ในตำแหน่งที่ไม่ได้ตั้งใจหรือด้วยสิทธิ์ที่ไม่ได้ตั้งใจ

การกำหนดเชลล์ให้กับผู้ใช้ทำให้ผู้ดูแลระบบสามารถล็อกอินเป็น postgres และทำงานกับเชลล์ผู้ใช้นั้น การหาsudoว่าเป็นแหล่งที่มาของข้อความผิดพลาดเซิร์ฟเวอร์ที่ไม่เจาะจงจะทำให้เกิดอาการปวดหัวมากเกินไป

หากคุณไม่ต้องการสิ่งนี้และมั่นใจว่าคุณจะไม่เรียกไบนารี postgres ด้วยวิธีที่ผิดพลาดเช่นนี้คุณสามารถลบเชลล์ได้อย่างปลอดภัย:

usermod --shell /bin/false postgres

โปรดทราบว่า beign สามารถกลายเป็น root คุณยังสามารถเป็นใครก็ได้รวมถึงผู้ใช้ที่ไม่มีเชลล์ที่ถูกต้อง:

su --shell /bin/bash postgres

แหล่งข้อมูลที่เชื่อถือได้:

บางครั้งคุณต้องการเข้าสู่ระบบในฐานะผู้ใช้รายนั้นเพื่อให้สามารถจัดการหรือแก้ไขแบบพิเศษบางประเภทได้ ตัวอย่างเช่นหากคุณจำเป็นต้องเรียกใช้ pg_resetxlog คุณอาจต้องลงชื่อเข้าใช้ในฐานะ postgres เว้นแต่คุณจะมั่นใจว่าการร้องขอ su หรือ sudo ของคุณถูกต้องและไม่รบกวนสิทธิ์ของไดเรกทอรีฐานข้อมูลด้วยวิธีแปลก ๆ - Peter Eisentraut, PostgreSQL dev


คำตอบนี้ดีกว่าคำตอบที่ยอมรับ ไม่จำเป็นสำหรับเชลล์การเข้าสู่ระบบเพื่อให้สามารถเรียกใช้คำสั่งในฐานะผู้ใช้บางคน (สำหรับ sudo นั้นจะทำ) ระบบย่อยอูบุนตูหลายแห่งมี / bin / false หรือ / usr / sbin / nologin เป็นเชลล์ล็อกอินและทำงานได้ดีในขณะที่ไม่เปิดวิธีใหม่ในการเข้าถึงระบบจากระยะไกล
arielf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.