लॉगिन पासवर्ड से अलग पासवर्ड सेट करें


30

एक विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में मैं sudoदूसरे को पासवर्ड सेट करने की कोशिश कर रहा हूं, फिर लॉगिन पर उपयोग किया गया।

मैंने कुछ शोध किए हैं, लेकिन जवाब नहीं मिला है। sudoउस तरह के विन्यास का समर्थन करता है?

यदि आप कभी भी अपना पासवर्ड खो देते हैं, तो आप अपना सब कुछ खो देते हैं। कोई व्यक्ति लॉग इन कर सकता है और rootउसी पासवर्ड से अपना प्रचार कर सकता है ।

sudorootइनवॉइस किए गए उपयोगकर्ता पासवर्ड ( rootpw) के बजाय पासवर्ड पूछने का विकल्प है , लेकिन rootपासवर्ड साझा करना निश्चित रूप से एक विकल्प नहीं है, यही कारण है कि हमने सेट किया है sudo

मैंने config 2FAअतीत में किया था , इसने बहुत अच्छा काम किया, लेकिन स्वचालन के उद्देश्य को भी हराया। उदाहरण के लिए यदि आप एक expectस्क्रिप्ट के साथ दर्जनों सर्वरों पर विशेषाधिकार प्राप्त कमांड निष्पादित करना चाहते हैं , तो जोड़ना 2FAआपको ऐसा करने की अनुमति नहीं देता है।

निकटतम समाधान जो मैंने पाया है वह केवल एसएसएच निजी कुंजी और सेटअप पास-वाक्यांश को कुंजी के साथ अनुमति देता है जो कि sudo(लॉगिन) पासवर्ड से भिन्न होता है । फिर भी, यह कम्फ़र्टेबल नहीं है, क्योंकि किसी आपातकालीन स्थिति में आप एक पीसी के साथ लॉगिन नहीं कर सकते, जहाँ यह कुंजी नहीं है।


1
आपको इसकी बिल्कुल आवश्यकता क्यों है? शायद समस्या कहीं और है। बेहतर होगा कि विशेषाधिकार प्राप्त खाते के साथ सिस्टम में लॉग इन करने के लिए दोहरे कारक का प्रमाणीकरण न हो और फिर 'NOPASSWD' हो, ताकि सूडो पासवर्ड न मांगे? तब आपके पास एक अलग आपातकालीन स्थानीय खाता होना चाहिए जिसमें मजबूत पासवर्ड हो, जब नेटवर्क डाउन हो (कोई ssh एक्सेस न हो) लॉगिन करने में सक्षम हो।
जिरिब

जवाबों:


30

यदि आप रूट पासवर्ड पूछना चाहते हैं, तो उपयोगकर्ता के पासवर्ड के विपरीत, ऐसे विकल्प हैं जिन्हें आप डाल सकते हैं /etc/sudoersrootpwविशेष रूप से यह रूट पासवर्ड मांगेगा। वहाँ है runaspwऔर targetpwसाथ ही; विवरण के लिए sudoers (5) मैनपेज देखें।

इसके अलावा, sudo PAM के माध्यम से अपना प्रमाणीकरण (हर चीज की तरह) करता है। PAM प्रति-एप्लिकेशन कॉन्फ़िगरेशन का समर्थन करता है। सूडो का विन्यास (कम से कम मेरे डेबियन सिस्टम पर) है /etc/pam.d/sudo, और ऐसा दिखता है:

$ cat sudo 
#%PAM-1.0

@include common-auth
@include common-account
@include common-session-noninteractive

दूसरे शब्दों में, डिफ़ॉल्ट रूप से, यह सिस्टम पर बाकी सब चीजों की तरह प्रमाणित करता है। आप उस @include common-authलाइन को बदल सकते हैं , और PAM (और इस प्रकार sudo) एक वैकल्पिक पासवर्ड स्रोत का उपयोग कर सकते हैं। सामान्य टिप्पणी में गैर-टिप्पणी वाली लाइनें कुछ इस तरह दिखती हैं (डिफ़ॉल्ट रूप से, यदि आप उदाहरण के लिए, LDAP का उपयोग कर रहे हैं तो यह अलग होगा):

auth    [success=1 default=ignore]      pam_unix.so nullok_secure
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so

आप pam_userdb.soइसके बजाय का उपयोग कर सकते हैं pam_unix.so, और अपने वैकल्पिक पासवर्ड को बर्कले डीबी डेटाबेस में संग्रहीत कर सकते हैं।

उदाहरण

मैंने निर्देशिका /var/local/sudopass, स्वामी / समूह root:shadow, मोड बनाया 2750। इसके अंदर, मैं आगे गया और एक पासवर्ड डेटाबेस फ़ाइल का उपयोग करके बनाया db5.1_load(जो कि डेबियन व्हीज़ी पर उपयोग में बर्कले डीबी का संस्करण है:

# umask 0027
# db5.1_load -h / var / local / sudopass -t hash -T passwd.db
एंथोनी
WMaEFvCFEFplI
^D

उस हैश को mkpasswd -m des"पासवर्ड" पासवर्ड का उपयोग करके उत्पन्न किया गया था । बहुत सुरक्षित! (दुर्भाग्य से, pam_userdb प्राचीन crypt(3)हैशिंग से बेहतर कुछ भी समर्थन नहीं करता है )।

अब, लाइन को संपादित करें /etc/pam.d/sudoऔर निकालें @include common-auth, और इसके स्थान पर रखें:

auth    [success=1 default=ignore]      pam_userdb.so crypt=crypt db=/var/local/sudopass/passwd
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so

ध्यान दें कि pam_userdb .dbपारित डेटाबेस में एक्सटेंशन जोड़ता है , इसलिए आपको इसे छोड़ना होगा .db

एक टिप्पणी में dannysauer के अनुसार , आपको समान रूप से संपादित करने की आवश्यकता हो सकती है ।/etc/pam.d/sudo-i

अब, sudo के लिए, मुझे passwordअपने वास्तविक लॉगिन पासवर्ड के बजाय उपयोग करना होगा :

एंथोनी @ सुडोटेस्ट: ~ $ सुडो -के
एंथोनी @ सूडोटेस्ट: ~ $ सूडो गूंज -''नट काम '
[sudo] एन्थोनी के लिए पासवर्ड: passwordRETURN

इसने काम कर दिया

"Sudo-i" को भी कॉन्फ़िगर करना सुनिश्चित करें, जो sudo के नए संस्करण अक्सर "sudo -i" के लिए उपयोग करते हैं (यदि विक्रेता ने कुछ नहीं बदला है)।
dannysauer

क्या आप PAM config pls पर विस्तार से बता सकते हैं?
Shuu Sh Octc

@ ShuuShắc मैंने एक उदाहरण जोड़ा है, जिसमें PAM कॉन्फिगर बदलाव शामिल हैं।
व्युत्पन्न

धन्यवाद। लेकिन मुझे रेडबट / सेंटो या स्रोतों में कहीं भी db51- बर्तन नहीं मिले, क्या यह केवल डेबियन वेरिएंट में उपलब्ध है?
शाऊ Shcc

3
crypt(3)Glibc के आधुनिक संस्करणों पर " प्राचीन हैशिंग" को sha-512, उदा। mkpasswd -m sha-512। pam_userdb.so इन्हें ठीक-ठाक संभाल सकते हैं।
एंड्रयू डोमस्ज़ेक

6

Redhat / Centos के लिए, निम्नलिखित चरणों के साथ आवश्यकता प्राप्त की जा सकती है:

कस्टम उपयोगकर्ता बनाएं और पास करें:

# db_load -t hash -T /usr/local/etc/passwd.db
user
pass
^d

Sudo pam.d फ़ाइल को संपादित करें ताकि ऐसा लगे:

$ cat /etc/pam.d/sudo

auth            required        pam_userdb.so db=/usr/local/etc/passwd
account         required        pam_userdb.so db=/usr/local/etc/passwd
password        include         system-auth

session         optional        pam_keyinit.so revoke
session         required        pam_limits.so

Im अभी भी कॉन्फ़िगर करने के तरीके की तलाश कर रहा है, ताकि इस कस्टम विधि द्वारा केवल एक निश्चित उपयोगकर्ता / समूह को ही होना चाहिए, अन्य को अभी भी सामान्य सिस्टम-ऑर्गेनिक विधि द्वारा वर्गीकृत किया जा सकता है। क्या कोई मुझे कुछ सलाह दे सकता है?


आपको PAM में पूर्ण क्रिया सिंटैक्स के साथ ऐसा करने में सक्षम होना चाहिए। जैसे, [user_unknown=ignore,success=ok,default=bad]... लेकिन आप उस के साथ खेलने के लिए होगा (और PAM डॉक्स पढ़ें) सही इसे पाने के लिए
derobert

pam_succeed_ifयदि उपयोगकर्ता समूहों की सूची में से एक में है, या नहीं तो दो मॉड्यूल को छोड़ने के लिए एक मॉड्यूल का उपयोग करके यह भी पूरा किया जा सकता है ।
dannysauer

अतः, आम तौर पर कुछ इस तरह से: /// परिस्थिति [सफलता = नजरअंदाज करना = 1] danny में pam_succeed_if.so उपयोगकर्ता: frank /// पर्याप्त पर्याप्त danny_frank_module.so /// व्यावसायिक विवरण_danny_frank.so
dannysauer

3

मुझे नहीं लगता कि sudo इस तरह के सेटअप का समर्थन करता है। Sudo पासवर्ड प्रॉम्प्ट का उद्देश्य यह सुनिश्चित करना है कि sudo कमांड जारी करने वाला व्यक्ति वही व्यक्ति है जो लॉग इन है, और ऐसा करने का सबसे आसान तरीका है कि वर्तमान में लॉग-इन करने के लिए उपयोगकर्ता से स्वयं को पुनः प्रमाणित करने के लिए कहें।

दूसरे शब्दों में, sudo पासवर्ड प्रॉम्प्ट का उद्देश्य प्राधिकरण स्थापित करना नहीं है , यह पहचान स्थापित करना है । स्थापित पहचान और sudo कॉन्फ़िगरेशन के आधार पर, एक निर्णय लिया जा सकता है कि प्रश्न में उपयोगकर्ता के पास आवश्यक अधिकार या एक्सेस अधिकार हैं या नहीं।


3
सूदो (उस मामले को छोड़कर जो आप रूट पासवर्ड, या किसी विशेष उपयोगकर्ता या लक्ष्य उपयोगकर्ता के पासवर्ड से पूछना चाहते हैं) को छोड़कर नहीं करता है, लेकिन डैम करता है। और sudo PAM का उपयोग करता है।
derobert

1

आपकी चिंता यह है कि आपके खाते के पासवर्ड का खुलासा किया जा सकता है। समाधान यह है कि लॉगिन पासवर्ड का उपयोग इस तरह से न किया जाए कि इसका खुलासा हो सके। Ssh के साथ, पासवर्ड तार पर एन्क्रिप्ट किया गया है, इसलिए यह ठीक है। लोग पासवर्ड अनुमानों के हमलों को रोकने के लिए ssh के साथ पासवर्ड ऑउट ऑफ को बंद कर देते हैं, पासवर्ड की गोपनीयता की सुरक्षा के लिए नहीं। यदि आप किसी अन्य चीज़ के लिए एक ही अकाउंट पासवर्ड का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप पासवर्ड प्रदान करने के लिए सुरक्षित, एन्क्रिप्टेड चैनल का उपयोग कर रहे हैं। यदि आप एक keylogger या जो कुछ भी चिंतित हैं, तो लॉग इन करने के लिए अविश्वसनीय मशीनों का उपयोग करना बंद करें।

यदि कोई आपका ssh पासवर्ड प्राप्त कर सकता है, तो वे संभवतः वैकल्पिक sudo पासवर्ड भी प्राप्त कर सकते हैं, इसलिए आप समय बिताने की तुलना में अपने कनेक्शनों को अधिक सुरक्षित बनाने में निवेश करने से बेहतर हैं बस चीजों को अधिक सुरक्षा के भ्रम के लिए और अधिक जटिल बना दें।


0

मेरे पास ऐसी प्रणाली तक तत्काल पहुंच नहीं है जहां मैं इसका परीक्षण कर सकता हूं और विवरण का काम कर सकता हूं, लेकिन मेरे पास एक विचार है:

  • (मान लें कि आपका सामान्य लॉगिन खाता है shau।)
  • दूसरा खाता बनाएँ shau2:। (मुझे यकीन नहीं है कि आप इसे यूआईडी के समान चाहते हैं shau।)
  • shau2NOPASSWD के साथ sudo विशेषाधिकार होने के लिए कॉन्फ़िगर करें।
  • करने के लिए एक उपनाम या एक शेल स्क्रिप्ट सेट करें su shau2 -c sudo "$@"। यह shau2पासवर्ड के लिए पूछना चाहिए । यदि वह सही तरीके से दर्ज किया गया है, तो यह उसी के sudoरूप में चलेगा shau2 (जिसे पासवर्ड नहीं पूछना चाहिए)।
  • निकालें shausudo विशेषाधिकार।

दुर्भाग्य से, आपको इसे हर उस उपयोगकर्ता के लिए दोहराना होगा जिसके पास sudo विशेषाधिकार है।


0

उत्तर के लिए धन्यवाद @ Shâu Shuc ! यह समाधान LinuxMint 17.1 Cinnamon 32bit के लिए भी काम करता है (मैंने चलाने के लिए केवल पैकेज स्थापित किया है )।db-utildb_load

लेकिन मैं परिणामी passwd.dbफ़ाइल के साथ बहुत भ्रमित हूं । मैंने आपके उत्तर के समान ही किया है (लेकिन दाविद और जोनों का इस्तेमाल किया है , वे अधिक आंखें मारते हैं):

# db_load -t hash -T /usr/local/etc/passwd.db
david
jones
^d

लेकिन दर्ज किए गए क्रेडेंशियल सादे पाठ के रूप में हैश फ़ाइल के अंदर संग्रहीत किए जाते हैं:

# grep 'jones.*david'  /usr/local/etc/passwd.db
Binary file /usr/local/etc/passwd.db matches

आप यह भी देख सकते हैं डेविड और जोन्स के माध्यम से mcedit :

यहाँ छवि विवरण दर्ज करें

हां, इसकी अनुमति प्रतिबंधित करना संभव है /usr/local/etc/passwd.db। लेकिन फिर भी, सादे पाठ के रूप में संग्रहीत उपयोगकर्ता नाम और पासवर्ड खराब हैं।


यहां तक ​​कि अलग-अलग sudo पासवर्ड के साथ कुछ संभावित सुरक्षा छेद (डिफ़ॉल्ट डिस्ट्रो सेटअप द्वारा) हैं। इस प्रकार, su के लिए अलग पासवर्ड लागू नहीं है (इसलिए suपासवर्ड का उपयोग करके और लॉगिन करके रूट सत्र शुरू करना संभव है )। इसके अलावा पॉलिसी किट द्वारा अलग पासवर्ड का सम्मान नहीं किया जाता है (यह पासवर्ड का उपयोग करके सिनैप्टिक शुरू करना संभव है synaptic-pkexec। फिर संकुल हटाएं ...)। कॉन्फ़िगरेशन फ़ाइलों की अतिरिक्त ट्यूनिंग द्वारा इन समस्याओं को समाप्त किया जा सकता है।

सामान्य तौर पर ऐसा लगता है कि सुरक्षित अलग-अलग sudo पासवर्ड केवल कस्टम PAM मॉड्यूल की सहायता से प्राप्त किया जा सकता है (शायद, ऐसा मॉड्यूल पासवर्ड की तुलना करेगा और SHA-512 हैश फाइल से पढ़ा जाएगा) या SELinux कार्यक्षमता।

पुनश्च: क्षमा करें, यह एक टिप्पणी होनी चाहिए। लेकिन यह पाठ प्रारूप के कारण उत्तर के रूप में जाता है। समझने के लिए धन्यवाद।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.