मुझे /etc/shadowवर्चुअल मशीन छवि के अंदर रूट पासवर्ड बदलने के लिए मैन्युअल रूप से संपादित करने की आवश्यकता है ।
क्या कोई कमांड-लाइन टूल है जो पासवर्ड लेता है और /etc/shadowमानक आउट पर संगत पासवर्ड हैश उत्पन्न करता है?
मुझे /etc/shadowवर्चुअल मशीन छवि के अंदर रूट पासवर्ड बदलने के लिए मैन्युअल रूप से संपादित करने की आवश्यकता है ।
क्या कोई कमांड-लाइन टूल है जो पासवर्ड लेता है और /etc/shadowमानक आउट पर संगत पासवर्ड हैश उत्पन्न करता है?
जवाबों:
आप निम्न आदेशों का उपयोग उसी के लिए कर सकते हैं:
openssl passwd -6 -salt xyz yourpass
नोट: पासिंग -1एक MD5 पासवर्ड, -5एक SHA256 और -6SHA512 (अनुशंसित) उत्पन्न करेगा
mkpasswd --method=SHA-512 --stdin
तरीके स्वीकार करता है md5, sha-256औरsha-512
जैसा कि @tink ने सुझाव दिया है, हम पासवर्ड का chpasswdउपयोग करके अपडेट कर सकते हैं :
echo "username:password" | chpasswd
या आप के साथ एन्क्रिप्टेड पासवर्ड का उपयोग कर सकते हैं chpasswd। पहले इसका उपयोग करके इसे उत्पन्न करें:
perl -e 'print crypt("YourPasswd", "salt", "sha512"),"\n"'
फिर बाद में आप अपडेट किए गए पासवर्ड का उपयोग कर सकते हैं:
echo "username:encryptedPassWd" | chpasswd -e
इस एन्क्रिप्टेड पासवर्ड का उपयोग हम पासवर्ड के साथ एक नया उपयोगकर्ता बनाने के लिए कर सकते हैं, उदाहरण के लिए:
useradd -p 'encryptedPassWd' username
openssl passwd -1जो 1) वहां समाप्त नहीं होता है और 2) आपके लिए एक यादृच्छिक नमक उत्पन्न करता है (जो शेल इतिहास में समाप्त नहीं होता है, न ही)।
openssl passwdDocumenation यह पता लगाने का प्रयास कर रहे किसी के लिए भी -1विकल्प है।
python3 -c 'import crypt; print(crypt.crypt("test", crypt.mksalt(crypt.METHOD_SHA512)))'- संबंधित
उबंटू 12.04 पर, mkpasswd (व्हिसिस पैकेज से): ओवरफ्रीचर्ड फ्रंट एंड टू क्रिप्ट (3)
mkpasswd -m sha-512 -S saltsalt -s <<< YourPass
कहाँ पे:
-m= टाइप विधि का उपयोग कर पासवर्ड की गणना। यदि TYPE मदद करता है तो उपलब्ध विधियां मुद्रित की जाती हैं।-S = नमक का उपयोग किया।उदाहरण के लिए
$ mkpasswd -m help
-s = Read password from stdin
इस समाधान के निम्नलिखित लाभ हैं:
गलतियों से बचने के लिए पासवर्ड के लिए पुन: संकेत देता है।
$ python3 -c "from getpass import getpass; from crypt import *; \
p=getpass(); print('\n'+crypt(p, METHOD_SHA512)) \
if p==getpass('Please repeat: ') else print('\nFailed repeating.')"
डेबियन आधारित प्रणालियों के बिना उन लोगों के लिए। Python3 वैसे ही काम करता है।
python3 -c 'import crypt; print(crypt.crypt("test"))'
नोट: स्ट्रिंग "परीक्षण" वह पासवर्ड है जो हम क्रिप्टेड स्ट्रिंग के रूप में उत्पन्न कर रहे हैं।
crypt.mksaltपासवर्ड बनाते समय उपयोग करना काम नहीं करता है /etc/shadow। लेकिन @ Alex131089 की विधि काम करती है!
opensslएक सुंदर सार्वभौमिक उपकरण है।
वर्तमान तरीकों में से कोई भी मुझे स्वीकार्य नहीं है - वे या तो कमांड लाइन पर पासवर्ड पास करते हैं (जो मेरे शेल के इतिहास में समाप्त होता है), अतिरिक्त उपयोगिताओं ( python3, makepasswd) की स्थापना की आवश्यकता होती है , हार्ड-कोडित लवण का उपयोग करें या पुरानी हैशिंग तकनीकों का उपयोग करें।
यह विधि पासवर्ड के लिए संकेत देने के बाद SHA-512 हैश उत्पन्न करेगी और एक यादृच्छिक नमक का उपयोग करेगी।
बिना किसी मानक पुस्तकालयों के पायथन 2 का उपयोग करने की एक विधि:
python2 -c 'import crypt, getpass,os,base64; print crypt.crypt(getpass.getpass(), "$6$"+base64.b64encode(os.urandom(16))+"$")'
इसे बिना किसी संकेत के करने के लिए: (यह कमांड इतिहास में आपका पासवर्ड छोड़ देगा)
python2 -c 'import crypt, os,base64; print crypt.crypt("MyPassword", "$6$"+base64.b64encode(os.urandom(16))+"$")'
psआउटपुट में सेकंड के कुछ भाग में होगा जो कमांड चल रहा है। (सबसे सुरक्षित संस्करण है कि पासवर्ड के लिए संकेत देता है का उपयोग करने के लिए रहता है)
opensslऔर chpasswd -eजोड़ी RHEL6 में मेरे मामले में काम नहीं किया। कंबाइन openssl passwdऔर usermod -pकमांड ने काम किया।
नमक के मान के साथ पासवर्ड का हैश मान उत्पन्न करें:
$ openssl passwd -1 -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.
फिर, एन्क्रिप्टेड स्ट्रिंग को usermod पर कॉपी करें। इसे एक उद्धरण के साथ लपेटना सुनिश्चित करें।
$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root
छाया फ़ाइल में इसे देखें।
$ grep root /etc/shadow
root:$1$5RPVAd$vgsoSANybLDepv2ETcUH7.:17774:0:99999:7:::
पासवर्ड जनरेट करने का एक और तरीका, opensslटूल का उपयोग कर रहा है।
MD5 पासवर्ड जनरेट करें
openssl passwd -1 -salt SaltSalt SecretPassword
# output: $1$SaltSalt$FSYmvnuDuSP883uWgYBXW/
DES पासवर्ड जनरेट करें
openssl passwd -crypt -salt XR SuprScrt
# output: XR1dOp2EVMph2
U150825 की आलोचनाओं पर थोड़ा विस्तार करते हुए और गर्ट वैन डेन बर्ग, मैंने पाया कि विभिन्न स्वचालन प्रणालियों के साथ विभिन्न स्थितियों के लिए मुझे अपेक्षाकृत कुछ लचीला चाहिए। मैंने फैसला किया कि मैं उपयोगी स्क्रिप्ट के अपने छोटे पुस्तकालय में जोड़ूंगा और इसे लिखूंगा। यह अजगर 2.7+ से केवल देशी पुस्तकालयों का उपयोग करता है, और सिर्फ पायथन 3 पर भी काम करता है।
आप चाहें तो इसे यहां उठा सकते हैं। अपने परिवेश में इसे गिराना उतना ही आसान है, अगर आपको इसे बहुत उपयोग करने की आवश्यकता है, http होस्ट या जो भी हो, और आप इसे किसी भी प्लेटफ़ॉर्म पर चला सकते हैं, जो भी आपके लिए उपलब्ध डिफ़ॉल्ट डिफ़ॉल्ट इंटरप्रेटर का उपयोग करके, बहुत सुंदर है मज़बूती से इस पर काम करना।
यह stderr पर संकेत के साथ getpass का उपयोग करने के लिए संकेत देने में चूक करता है (स्टडआउट पर आसान कब्जा करने की अनुमति देता है), लेकिन अगर आप इसे एक स्ट्रिंग पाइप करते हैं तो यह स्टड से बस वापस आ जाएगा। आप इसके बारे में कैसे जा रहे हैं, इस पर निर्भर करते हुए, यह कमांड इतिहास में दिखाई नहीं दे रहा है, या तो, बस आप इसके साथ काम कर रहे हैं, इसका संज्ञान लें। मैं एक लचीला उपकरण रखना पसंद करता हूं जो कि एक अलग तरीके से व्यवहार करेगा, बजाय कि पैकेजों पर भरोसा करने के लिए या 10 अलग-अलग तरीकों से जीतने के लिए अपने तरीके से एक-लाइनिंग करना।
chpasswd?
chpasswd -e, आपके द्वारा स्ट्रिंग पर एकल उद्धरण का उपयोग करना सुनिश्चित करेंecho; अन्यथा, अगर वहाँ$या अन्य विशेष वर्ण हैं, तो उनका शाब्दिक उपचार नहीं होगा।