एक पासवर्ड और सुरक्षा पाइपिंग


11

मैं कभी-कभी करता हूं echo "secret" | mysql -u root -p ...। अब मैं यहां सुरक्षा के बारे में सहमति दे रहा हूं: क्या सभी प्रक्रियाओं को सूचीबद्ध करने वाला कोई पासवर्ड देख सकता है?

जाँच करने के लिए मैंने कोशिश की echo "test" | sleep 1000और रहस्य के साथ गूंज कमांड "ps aux" के आउटपुट में दिखाई नहीं दे रहा था । इसलिए मुझे लगता है कि यह सुरक्षित है - लेकिन क्या कोई सुरक्षा विशेषज्ञ इसकी पुष्टि कर सकता है? :)


अंतहीन लूप चलाते समय इसे प्रक्रिया सूची में नहीं देख सकते। अच्छा प्रश्न।
टिम

1
इसके अलावा, यह मत भूलो कि आप जो भी सबसे अधिक शेल पर लिखते हैं, वह एक इतिहास फ़ाइल में कहीं संग्रहीत होगा (जैसे .history)।
अलेक्जेंडर बर्ड

जवाबों:


13

इसका उत्तर इस बात पर निर्भर करता है कि आप किस शेल का उपयोग कर रहे हैं। कई गोले echoएक अंतर्निहित कमांड के रूप में होते हैं जिसका अर्थ है कि यह एक अलग प्रक्रिया नहीं करता है और इसलिए प्रक्रिया लिस्टिंग में दिखाई नहीं देगा। हालाँकि, यदि आप टाइप करते हैं /bin/echoया ./echoयदि आप enable -n echoकमांड के साथ अंतर्निहित को अक्षम करते हैं , तो शेल अपने बिलिन कमांड का उपयोग नहीं करेगा और इसके बजाय बाइनरी संस्करण का उपयोग करेगा। यह एक प्रोसेस लिस्टिंग में दिखाई देगा।

यदि आप शेल बिलिन के बजाय बाइनरी का उपयोग कर रहे हैं, तो इको कमांड तब तक दिखाई देगी जब तक कि वह डेटा को अन्य प्रक्रिया के एसटीडीआईएन बफर में स्थानांतरित करने के लिए ले जाता है। इस बफ़र का परिमित आकार है, इसलिए यदि बफ़र में फिट होने से अधिक डेटा है, तो इको कमांड को कुछ समय के लिए इधर-उधर लटकना होगा, जब तक कि दूसरी प्रक्रिया बफ़र के कुछ डेटा को नहीं पढ़ सकती। ज्यादातर मामलों के लिए (जैसे कि ऊपर दिए गए दो उदाहरण) इस समय अवधि को माइक्रोसेकंड किया जाएगा। यदि आप इको का उपयोग करके MySQL में 20MB SQL डंप चिपकाते हैं, तो यह अधिक लंबा हो सकता है। कोई फर्क नहीं पड़ता कि समय कितना कम है, अगर आप शेल बिल्टिन के बजाय बाइनरी का उपयोग कर रहे हैं और किसी को समय सही होने के लिए होता है, तो वे प्रक्रिया सूची में प्रक्रिया को देख पाएंगे।

आप गुप्त डेटा को एक फ़ाइल में डालकर (उपयुक्त अनुमति के साथ) और फ़ाइल को इस तरह STDIN के रूप में उपयोग करने से बच सकते हैं:

mysql -u root -p < file_with_secret.sql

5
ध्यान रखें कि कमांड लाइन पर पासवर्ड टाइप करने से जैसे कि यह आपके शेल के इतिहास फ़ाइल में सबसे अधिक सहेजा जा रहा है, इसलिए यह इतिहास फ़ाइल की अनुमति और सामग्री की जांच करने के लायक है।
एकुलिच

3

Mysql के मामले के लिए ~ / .my.cnf का उपयोग रहस्यों को संग्रहीत करने के लिए किया जा सकता है, अर्थात

[client]
user = DBUSERNAME
password = DBPASSWORD
host = DBSERVER

[mysql]
database = DBNAME

1

महज प्रयोग करें

mysql -uroot -p

और हिट दर्ज करें। फिर आपको पासवर्ड के लिए संकेत दिया जाएगा और यह प्रक्रिया सूची या इतिहास फ़ाइलों में दिखाई नहीं देगा।


MySQL द्वारा STDIN पर स्वीकृत डेटा को लॉग इन करने के बाद कमांड चलाया जाना है। प्रश्न में "गुप्त" पासवर्ड नहीं है।
लादादादा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.