Pass - Unix पासवर्ड मैनेजर
(passwordstore.org)- Pass एक सरल पासवर्ड प्रबंधन टूल है जो Unix दर्शन का पालन करता है, और हर पासवर्ड को GPG से एन्क्रिप्ट करके फ़ाइल में संग्रहीत करता है
- पासवर्ड को फ़ोल्डर संरचना में व्यवस्थित रूप से प्रबंधित किया जा सकता है, और command-line टूल से जोड़ना, संपादित करना, बनाना, देखना, हटाना आदि काम आसानी से किए जा सकते हैं
- Git एकीकरण के ज़रिए पासवर्ड बदलाव का इतिहास ट्रैक करना और सिंक करना संभव है, इसलिए यह कई कंप्यूटरों और टीम वातावरण में भी उपयोगी है
- इसमें यूज़र की स्वतंत्रता बहुत अधिक है, इसलिए फ़ाइल संरचना या संग्रहीत डेटा फ़ॉर्मेट को अपनी ज़रूरत के अनुसार स्वतंत्र रूप से व्यवस्थित किया जा सकता है
- विस्तारयोग्यता और उच्च संगतता के कारण, विभिन्न extensions और platform-specific clients/GUI सक्रिय रूप से विकसित और वितरित किए जा रहे हैं
Pass परिचय
- पासवर्ड प्रबंधन सरल होना चाहिए और Unix दर्शन का पालन करना चाहिए
- Pass हर पासवर्ड को GPG से एन्क्रिप्ट की गई फ़ाइल के रूप में रखता है, और फ़ाइल नाम के रूप में उस वेबसाइट या resource का नाम इस्तेमाल करता है जहाँ वह पासवर्ड चाहिए
- इन एन्क्रिप्टेड फ़ाइलों को इच्छित फ़ोल्डर संरचना में व्यवस्थित किया जा सकता है। सामान्य फ़ाइल प्रबंधन कमांड्स के ज़रिए कंप्यूटरों के बीच कॉपी, मूव, डिलीट आदि भी आसानी से किए जा सकते हैं
- Pass हर पासवर्ड फ़ाइल के जोड़ने, संपादित करने, बनाने, देखने के लिए विशेष कमांड्स देता है, और पासवर्ड डिफ़ॉल्ट रूप से
~/.password-storeके अंतर्गत संग्रहीत होते हैं - यह केवल एक सरल shell script के रूप में लागू किया गया है
- पासवर्ड कॉपी (clipboard copy) और पासवर्ड बदलाव इतिहास रिकॉर्ड करने के लिए Git का उपयोग करता है
- इसे बुनियादी shell commands से भी संपादित किया जा सकता है, और Zsh, Fish, Bash जैसी विभिन्न shells में auto-completion का समर्थन है
- विभिन्न extensions और अन्य platforms के clients/GUI समुदाय द्वारा सक्रिय रूप से विकसित किए जा रहे हैं
पासवर्ड स्टोर उपयोग का तरीका
- संग्रहीत सभी पासवर्डों की पूरी सूची देखी जा सकती है
- किसी विशेष पासवर्ड को देखना और clipboard पर कॉपी करना समर्थित है (ऑटो-क्लियर के साथ)
gpg-agentके माध्यम से सुविधाजनक पासवर्ड इनपुट और authentication प्रोसेसिंग संभव है- नया पासवर्ड जोड़ना, मौजूदा फ़ाइल में multi-line स्टोर करना (
-mविकल्प), और डिफ़ॉल्ट text editor के माध्यम से फ़ाइल को सीधे संपादित करना संभव है /dev/urandomका उपयोग करके random password generation सुविधा मिलती है (विकल्पों के अनुसार symbols शामिल/बहिष्कृत, clipboard पर सीधे कॉपी करने का समर्थन)- पासवर्ड हटाने पर फ़ाइल सिस्टम से एन्क्रिप्टेड फ़ाइल भी हटा दी जाती है
- Git repository के रूप में initialize करने के बाद, हर पासवर्ड बदलाव पर commit बनता है और
pass git push/pullसे sync किया जा सकता है - अतिरिक्त सुविधाओं और विस्तृत उपयोग विधि के लिए man page देखें
बुनियादी सेटअप तरीका
- पासवर्ड स्टोर initialize करते समय, केवल GPG key दर्ज करके आसानी से शुरुआत की जा सकती है (एक से अधिक GPG keys निर्दिष्ट करने पर टीम वातावरण के लिए उपयुक्त)
- अलग-अलग फ़ोल्डरों के लिए अलग GPG key असाइन की जा सकती है (
-pविकल्प) - इसे Git repository के रूप में भी initialize किया जा सकता है (अलग से remote भी निर्दिष्ट किया जा सकता है)
- सभी पासवर्ड जोड़ने, हटाने, और संपादित करने के काम Git commits द्वारा प्रबंधित होते हैं
- man page में initialization के और विस्तृत उदाहरण देखे जा सकते हैं
इंस्टॉलेशन तरीका
- Debian/Ubuntu: apt-get install pass
- Fedora/RHEL: yum install pass
- openSUSE/Gentoo/Arch/Macintosh/FreeBSD सहित विभिन्न platforms का समर्थन
- Tarball या Git repository को सीधे clone किया जा सकता है (सभी releases signed tags के साथ उपलब्ध हैं)
डेटा संगठन और लचीलापन
- Pass में यूज़र अपनी ज़रूरत के अनुसार डेटा को स्वतंत्र रूप से व्यवस्थित कर सकता है (schema या format की कोई बाध्यता नहीं)
- multi-line storage, फ़ाइल नाम से डेटा अलग करना, फ़ोल्डर संरचना आदि कई तरीके चुने जा सकते हैं
- उदाहरण: Amazon/bookreader के मामले में, पहली पंक्ति में पासवर्ड और उसके बाद URL, username, secret question जैसी अतिरिक्त जानकारी संग्रहीत की जा सकती है
- आवश्यकता होने पर हर जानकारी को अलग फ़ाइल (जैसे: password, secretquestion1 आदि) के रूप में प्रबंधित करने का तरीका भी चुना जा सकता है
- clipboard copy विकल्प केवल पहली पंक्ति कॉपी करता है, इसलिए वास्तविक उपयोग और अतिरिक्त जानकारी संग्रह दोनों को कुशलता से साथ में संभाला जा सकता है
extensions
- विस्तार सुविधाएँ (extensions) विभिन्न यूज़र आवश्यकताओं को पूरा करने के लिए समर्थित हैं
- इन्हें system folder या user folder में इंस्टॉल किया जाता है, और environment variables से इनके सक्रिय होने का निर्धारण किया जाता है
- समुदाय में विभिन्न extensions सक्रिय रूप से विकसित और उपलब्ध कराए जा रहे हैं
संगत clients
- कई platforms के लिए clients/GUI समुदाय द्वारा विकसित और वितरित किए जा रहे हैं
- यूज़र अपने operating system या उपयोग वातावरण के अनुसार उपयुक्त client चुन सकते हैं
अन्य पासवर्ड मैनेजर से migration
- अन्य पासवर्ड मैनेजर से डेटा स्थानांतरण के लिए विभिन्न conversion scripts और तरीके उपलब्ध हैं
- यूज़र अपने लिए उपयुक्त तरीके से सर्वोत्तम डेटा संगठन चुन सकते हैं
निर्माता और लाइसेंस
- Jason A. Donenfeld (zx2c4.com) द्वारा विकसित
- GPLv2+ लाइसेंस के तहत स्वतंत्र रूप से उपयोग और संशोधन संभव है
2 टिप्पणियां
असल में सिर्फ़ स्टोर करने वाले टूल तो बहुत हैं, लेकिन असली अहमियत auto-fill जैसे integration की है।
Hacker News राय
यहाँ pass के बारे में कई सकारात्मक राय हैं, लेकिन कुछ बड़े नुकसान भी साफ़ हैं
यह unstructured data है, इसलिए आम तौर पर इसके साथ काम करना असुविधाजनक है
उदाहरण के लिए, जब भी username और password को किसी script में इस्तेमाल करना हो, parsing का code खुद लिखना पड़ता है
pass generateसे नया password बनाने पर पहले के सभी value overwrite हो जाते हैंयानी, अगर password और secret question का जवाब साथ में हो, और सिर्फ password नया बनाया जाए, तो जवाब गायब हो जाता है
history देखना बहुत मुश्किल है
सब कुछ encrypted होता है, इसलिए
git diffसे भी उपयोगी जानकारी नहीं मिलती, और command line tools से history या गलती recover करना भी असुविधाजनक हैनाम बहुत सामान्य है, इसलिए search करना मुश्किल है
हाल में passworth नाम का एक मिलता-जुलता tool बना रहा हूँ (container/sandbox usage पर भी विचार है) https://github.com/andrewbaxter/passworth
history देखना मुश्किल है वाली बात पर, वास्तव में pass
.gitattributesफ़ाइल सेट करके git को gpg फ़ाइलों को text में convert कर diff दिखाने की सुविधा देता है~/.password-store/.gitattributesमें*.gpg diff=gpgजोड़ें[diff "gpg"]सेटिंग के साथtextconv = gpg2 -d ...देंpass इस्तेमाल करते समय आई कुछ अतिरिक्त समस्याएँ भी साझा की गईं
data structuring की समस्या को folder structure से हल किया गया
मेरे लिए तो data का unstructured होना ही एक बड़ा फ़ायदा है
Username: xxxजैसे format में लिखने पर browserpass जैसे browser plugin इसे पहचानकर auto-fill कर देते हैंdata structuring और history issue पर feature-wise राय भी दी गई
pass generateसे सब कुछ overwrite हो जाए, तब भीsite/pass,site/secret-questionजैसी अलग फ़ाइलों में manage किया जा सकता हैgit diffसे generated password track करना मुश्किल हो सकता है, लेकिन असली मायने आख़िरी बदलाव के समय के हैं, जोgit logसे दिख जाता है; ज़रूरत हो तोgit checkout -dसे restore किया जा सकता है$ passटाइप करने पर संबंधित package दिख जाता है, इसलिए search की समस्या उतनी गंभीर नहीं हैbrowser password manager + passkey कहीं ज़्यादा सुविधाजनक है, लेकिन pass vault recovery code और API key स्टोर करने के लिए काम आ सकता है
pass इस्तेमाल करते समय सबसे अस्पष्ट बात इसकी threat model थी
अगर GPG agent cached रहे, तो कोई भी script (
npm postinstallवगैरह)pass lsसे सभी credentials देख सकती हैऐसी स्थिति में यह बस
~/passwords.txtजैसी single file में सब कुछ रखने जैसा हो जाता हैलेकिन cache न इस्तेमाल करें तो हर बार लंबा GPG passphrase डालने की परेशानी होती है
YubiKey से on-demand unlock भी करके देखा, लेकिन integration कमज़ोर है, और जब password बार-बार डालना पड़े तो यह काफी असुविधाजनक हो जाता है
इसलिए Bitwarden पर चला गया
मेरे मामले में yubi बस हमेशा लगा रहता है
सभी password managers में मूल समस्या यह है कि जब storage unlock हो, तो master password RAM या cache में रह सकता है और सारे password उजागर हो सकते हैं
अगर USB port खाली हो, तो Nano key को बस लगा रहने दिया जा सकता है
मैं encrypted file partition के sqlite DB में password रखता हूँ
yubikey में PIN या touch सेट करके GPG key usage के लिए approval अनिवार्य बनाया जा सकता है
मुझे यह सच में बहुत पसंद है और मैं इसे रोज़ इस्तेमाल करता हूँ
CLI पसंद करने वालों के लिए pass दिलचस्प है, लेकिन सामान्य users (“normie”) के लिए Desktop पर KeepassXC, Android पर KeepassDX, और Wireguard के साथ remote access वाला तरीका ज़्यादा उपयुक्त लगता है
keepass की कम चर्चा होने वाली उपयोगी features में से एक यह है कि कई vaults एक साथ खोले और search किए जा सकते हैं
“normie” का मानदंड अपने-आप में सापेक्ष है
keepassxc.cli को भी याद रखें
मेरे एक use case में keepass काम नहीं करता: दो अलग-अलग computers पर अलग-अलग password बनाना और बाद में उन्हें merge करना
KeepassXC भी इस्तेमाल करना चाहूँगा, लेकिन spouse के साथ credentials share करना आसान नहीं है
अकेले इस्तेमाल में pass मज़ेदार solution है, लेकिन कई लोगों के साथ share करते समय सावधानी चाहिए
अगर company password management के लिए इस्तेमाल करें, तो किसने कौन-सा secret कब देखा, यह जानने का कोई तरीका नहीं; इसलिए हर employee change पर सारे passwords बदलने पड़ सकते हैं
अगर किसी नए व्यक्ति को access देना हो, तो selected files को दोबारा encrypt करने का कोई standard तरीका नहीं है; यह खुद बनाना पड़ता है
store करने के लिए git इस्तेमाल होता है, लेकिन commit messages auto-generated होते हैं, इसलिए व्यवहार में फ़ायदा बस Dropbox जितना ही लगता है
अगर गलती से गलत content push हो जाए और rollback करना हो, तो git history फिर से लिखनी पड़ती है, जिससे दूसरे users के devices पर समस्या आ सकती है
सादगी और direct control फ़ायदा है, लेकिन यही सादगी जाल भी बन सकती है
hash(site_name+main_password)जैसे तरीके सुंदर लगते हैं, लेकिन व्यवहार में कई समस्याएँ आती हैंbusiness environment में end-to-end encryption, users के बीच fingerprint verification जैसी features चाहिए; Bitwarden काफ़ी ठीक लगता है, लेकिन अगर इससे बेहतर उदाहरण हों तो जानना चाहूँगा
pass में directory के हिसाब से अलग keys (या multiple keys) लगाकर group-wise और person-wise access को बारीकी से बाँटा जा सकता है
मेरी company में 1Password इस्तेमाल होता है
.envफ़ाइलों के साथop runcommand, CI integration जैसी कई सुविधाएँ देता हैकेवल evaluation किया है, असली अनुभव नहीं है, लेकिन team password sharing tool के रूप में passbolt भी अच्छा विकल्प लगा https://www.passbolt.com
हमारी company में "pa" नाम का कम-ज्ञात tool अच्छे से इस्तेमाल हो रहा है https://git.j3s.sh/pa
FOKS के आधार पर भी अच्छा solution बनाया जा सकता है https://foks.pub
हाल में pass से Bitwarden और Vaultwarden पर शिफ्ट किया
flatpak-आधारित GUI apps वाले environment में Firefox browser extension और pass integration काम नहीं कर रही थी, इसलिए असुविधा हुई
workaround के तौर पर run window में
pass -c <path>चलाकर password copy करके browser में paste करता था, लेकिन अनुभव आदर्श नहीं थाAndroid official app का archive होना भी एक कारण था, और fork तो है, लेकिन वह कितने समय तक maintain होगा, पता नहीं https://github.com/android-password-store/Android-Password-Store/discussions/3260
अभी vaultwarden self-host करके कई bitwarden clients के साथ इस्तेमाल कर रहा हूँ
pass से KeePassXC पर जाने का अनुभव भी साझा किया
passmenu नाम का tool भी है
मुझे पता नहीं था कि pass का Android app बंद हो चुका है
pass -cचलाकर manually copy करना पसंद करता हूँvaultwarden के offline usage experience के बारे में जिज्ञासा है
pass-otpextension भी है https://github.com/tadfisher/pass-otppass के लिए Android app भी काफ़ी अच्छा है https://play.google.com/store/apps/details?id=dev.msfjarvis.aps
termux में भी चलता है
Android Password Store app पिछले साल archive हुआ था, और agrahn ने fork करके उसमें काफ़ी सुधार किए
मेरा अपना विकल्प यह है कि
~/binमें एक छोटा script रखता हूँ और OTP generate करने के लिए pass और oathtool इस्तेमाल करता हूँpass के कुछ पुराने Android apps अब मेरे device पर install ही नहीं होते
GPG की जगह age इस्तेमाल करने पर
passagetool मददगार है https://github.com/FiloSottile/passageआजकल मैं लगभग 10 साल से एक अलग तरीका इस्तेमाल कर रहा हूँ
सभी password metadata plaintext JSON में store होते हैं; हर item में user, version, password rules (length, character types आदि) दर्ज रहते हैं
असली password store नहीं करता, बल्कि passphrase + metadata hash से password को deterministically generate करता हूँ
सिर्फ version number बदलने से बिल्कुल नया password बन जाता है, और सिर्फ “version” बदलकर history भी आसानी से देखी जा सकती है
कमी यह है कि share करना लगभग असंभव है (दूसरे व्यक्ति को मेरा passphrase पता होना चाहिए)
share की ज़रूरत हो तो password generator से ciphertext बनाकर अलग metadata की तरह store करने वाला mode भी सोचा था, लेकिन व्यवहार में उसकी खास ज़रूरत नहीं पड़ी
password generator वाला तरीका अच्छा इसलिए है कि vault खो जाने की चिंता कम हो जाती है
हाल में SECUSO password generator के ज़रिए इस तरीके के बारे में जाना https://secuso.aifb.kit.edu/english/105.php
passphrase share करने से exposure surface बढ़ जाती है, इसलिए एक बार leak होने पर कई credentials एक साथ जोखिम में आ जाते हैं
मैं 8 साल से अधिक समय से pass इस्तेमाल कर रहा हूँ, और 1300 passwords store करता हूँ
devices के बीच git से sync करता हूँ और इससे बहुत संतुष्ट हूँ
"1300 passwords इतने ज़्यादा कैसे हो गए?"