पासवर्ड्स को छिपाने के लिए ps कैसे जानता है?


22

गवाह:

$ ps f
  PID TTY      STAT   TIME COMMAND
31509 pts/3    Ss     0:01 -bash
27266 pts/3    S+     0:00  \_ mysql -uroot -p
25210 pts/10   Ss+    0:00 /bin/bash
24444 pts/4    Ss     0:00 -bash
29111 pts/4    S+     0:00  \_ tmux attach
 4833 pts/5    Ss+    0:00 -bash
 9046 pts/6    Ss     0:00 -bash
17749 pts/6    R+     0:00  \_ ps f
 4748 pts/0    Ss     0:00 -bash
14635 pts/0    T      0:02  \_ mysql -uroot -px xxxxxxxxxxxxxxxx
16210 pts/0    S+     0:01  \_ mysql -uroot -px xxxxxxxxxxxxxxxx

mysqlपासवर्ड्स को छिपाने के लिए ps को कैसे पता चला ? क्या मैं विशेष सीएलआई विशेषताओं को छिपाने के लिए इसे अपनी स्वयं की लिपियों में शामिल कर सकता हूं?


6
यह शायद दूसरी तरह है और mysqlजादू, नहीं है ps"MySQL ग्राहकों आम तौर पर उनके प्रारंभ अनुक्रम के दौरान शून्य से कमांड लाइन पासवर्ड तर्क के ऊपर लिख।" -: पासवर्ड सुरक्षा के लिए अंतिम-उपयोगकर्ता दिशानिर्देश
manatwork

धन्यवाद, यह एक सूचनात्मक दस्तावेज है। मैं देखता हूँ कि मैं अपनी लिपियों में cli तर्कों को कैसे अधिलेखित कर सकता हूँ।
dotancohen

1
@manatwork मैं इसे एक जवाब के रूप में रखूंगा, क्योंकि यह वही है जो हो रहा है - और यह myqql के बारे में सुरक्षा मुद्दों के लिए एक उपयोगी लिंक है। :)
द्रविण स्लोअन

ध्यान दें कि जब कमांड लाइन तर्क छीना जा सकता है, तो पर्यावरण चर सुरक्षित हैं
गिलेस एसओ- बुराई को रोकना '

इस बारे में अधिक जानकारी के लिए, unix.stackexchange.com/q/385339/135943
Wildcard

जवाबों:


23

psपासवर्ड छिपा नहीं है। Mysql जैसे एप्लिकेशन तर्क सूची को अधिलेखित कर देते हैं जो उन्हें मिली थीं। कृपया ध्यान दें, एक छोटी समय सीमा है (उच्च सिस्टम लोड द्वारा संभव है), जहां तर्क अन्य अनुप्रयोगों को दिखाई देते हैं जब तक कि वे ओवरराइट नहीं किए जाते हैं। अन्य उपयोगकर्ताओं के लिए प्रक्रिया को छिपाने से मदद मिल सकती है। सामान्य तौर पर, कमांड लाइन की तुलना में फ़ाइलों के माध्यम से पासवर्ड पारित करना बेहतर होता है।

में इस लेख में यह सी के लिए वर्णन किया गया है, कैसे यह करने के लिए। निम्न उदाहरण सभी कमांड लाइन तर्कों को छिपाता / हटाता है:

#include <string.h>

int main(int argc, char **argv)
{
    // process command line arguments....

    // hide command line arguments
    if (argc > 1) {
        char *arg_end;    
        arg_end = argv[argc-1] + strlen (argv[argc-1]);
        *arg_end = ' ';
    }

    // ...
}

Https://stackoverflow.com/questions/724582/hide-arguments-from-ps और /programming/3830823/hiding-secret-from-command-line-parameter-on-unix पर भी देखें


बहुत अच्छा धन्यवाद। मुझे इस बात का एहसास नहीं था कि दलीलें इस तरह परस्पर जुड़ी होती हैं।
dotancohen

यह भी ध्यान दें कि सभी प्रोग्राम पासवर्ड के साथ ऐसा नहीं करेंगे।
राख

इस लेख का लिंक टूट गया है। कोई भी मेरे लिए कोड की व्याख्या करने के लिए? (क्यों कोड काम, बस \0अंतरिक्ष के लिए सेट ?) किसी भी लिंक करने के लिए setproctitle()?
स्कीमाक्स

या उत्तर यहाँ झूठ है ?
स्कीमाक्स

7

Mysql कार्यक्रम के साथ कमांड लाइन से पासवर्ड की जगह xमें कोड की इस पंक्ति :

while (*argument) *argument++= 'x';     // Destroy argument

3
दुर्भाग्य से, यह उतना सुरक्षित नहीं है जितना यह हो सकता है। आप बता सकते हैं कि पासवर्ड कितना लंबा है। इसे बदलने के लिए बेहतर है \0ताकि आपको पासवर्ड की लंबाई (UB / SEGFAULT के बिना) खोजने के लिए अतिरिक्त जानकारी की आवश्यकता हो।
wizzwizz4
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.