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
@ जोर्ज कास्त्रो मेरा सवाल है, कि पोस्टग्रेक्यूएल के उपयोगकर्ता के लिए एक शेल क्यों है, न कि पोस्टग्रेक्यूएल के लिए एक उपयोगकर्ता क्यों है .. क्योंकि मैंने अन्य उपयोगकर्ताओं को देखा है जैसे कि MySQL ने इसकी आवश्यकता नहीं थी।
स्माइल.उंटर

जवाबों:


4

एक शेल है क्योंकि हम PostgreSQL उपयोगकर्ता के रूप में कमांड लाइन से PostgreSQL का उपयोग करते हैं।


फिर, हमने MySQL उपयोगकर्ता के रूप में MySQL का उपयोग सही नहीं किया? मुझे लगता है कि उपयोगकर्ता आंतरिक रूप से सिस्टम के लिए उपयोग किया गया था, इसका मतलब है कि मुझे /bin/bashअपने PostgreSQL को सही ढंग से चलाने के लिए नहीं निकालना चाहिए .. धन्यवाद वैसे भी!
स्माइल.उंटर

2

पोस्टग्रेज सुरक्षा कारणों से एक विशेष ऑपरेटिंग सिस्टम उपयोगकर्ता खाते के तहत चलता है। इंस्टॉलर के चलने पर यह खाता आपकी मशीन पर बनाया जाता है, और जब तक कि कमांड लाइन पर ओवरराइड नहीं किया जाता है, इसे "पोस्टग्रेज" कहा जाएगा।

लिनक्स और मैक ओएस एक्स जैसे यूनिक्स जैसे ऑपरेटिंग सिस्टम पर, खाता पासवर्ड के बिना सेटअप है और उपयोगकर्ताओं को आमतौर पर इसके बारे में फिर से चिंता करने की आवश्यकता नहीं है। स्रोत

इसके अलावा पासवार्ड फ़ाइल को मैन्युअल रूप से संपादित करना एक अच्छा अभ्यास नहीं है। आपको कमांड का उपयोग करना चाहिए:

sudo passwd postgres

2
धन्यवाद, लेकिन मैं यह जानना चाहता हूं कि PostgreSQL के लिए एक उपयोगकर्ता के लिए "बैश शेल" क्यों है, मैंने सीखा है कि अनुमति किसी ने पोस्टग्रैसेक्एल को लॉग इन किया और फिर किसी तरह एक बैश शेल मिला जो किसी सेवा उपयोगकर्ता के लिए कोई मतलब नहीं है जो मुझे चाहिए कभी लॉग इन नहीं किया। (मैं अन्य सेवाओं के लिए देख रहा हूँ जैसे कि Apache2, mysql, उन्हें अपने उपयोगकर्ताओं के लिए बैश शेल की आवश्यकता नहीं थी)
Smile.Hunter

2

यदि कोई सर्वर व्यवस्थापक उपयोग करता है sudoऔर इस बारे में सावधान नहीं है कि यह किस वातावरण और umask का परिणाम है, तो डेटाबेस पर काम करना अनपेक्षित स्थानों में या अनपेक्षित अनुमतियों के साथ फ़ाइलों का निर्माण करना हो सकता है।

उपयोगकर्ता को एक शेल असाइन करने से प्रवेश को पोस्टग्रेज के रूप में लॉगिन करने और उस उपयोगकर्ता शेल पर कार्य करने में सक्षम बनाता है। असुरक्षित sudoसर्वर त्रुटि संदेशों के स्रोत के रूप में पता लगाना बहुत अधिक सिरदर्द होगा।

यदि आपको इसकी आवश्यकता नहीं है, और यह निश्चित है कि आप कभी भी पोस्ट बायनेरिज़ को ऐसे त्रुटि-प्रवण तरीके से नहीं कहेंगे, तो आप शेल को सुरक्षित रूप से हटा सकते हैं:

usermod --shell /bin/false postgres

ध्यान रखें कि, मूल बनने में सक्षम होने के बावजूद, आप अभी भी वैध शेल के बिना उपयोगकर्ताओं सहित किसी के भी बन सकते हैं:

su --shell /bin/bash postgres

आधिकारिक स्रोत:

कभी-कभी आप उस उपयोगकर्ता के रूप में लॉग इन करना चाहते हैं जो कुछ विशेष प्रकार के प्रशासन या सुधार करने में सक्षम हो। उदाहरण के लिए, यदि आपको कभी pg_resetxlog चलाने की आवश्यकता होती है, तो आप संभवतः पोस्टग्रेज के रूप में लॉग इन करना चाहते हैं, जब तक कि आप बहुत आश्वस्त न हों कि आपका su या sudo इनवोकेशन सही है और अजीब तरीके से डेटाबेस निर्देशिका की अनुमतियों को गड़बड़ाना नहीं है। - पीटर आइसेनट्राट, पोस्टग्रेक्यूएल देव


यह उत्तर स्वीकृत उत्तर से बेहतर है। एक निश्चित उपयोगकर्ता के रूप में कमांड चलाने में सक्षम होने के लिए लॉगिन शेल की आवश्यकता नहीं है (इसके लिए sudo करेगा)। कई उबंटू उप-प्रणालियों में उनके लॉगिन शेल के रूप में / बिन / गलत या / usr / sbin / nologin हैं और वे ठीक काम करते हैं, जबकि सिस्टम को दूरस्थ रूप से एक्सेस करने के नए तरीके नहीं खोलते हैं।
arielf
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.