क्या कोई लिनक्स उपयोगकर्ता वर्तमान पासवर्ड को जाने बिना अपना पासवर्ड बदल सकता है?


25

मैं कुछ ubuntuबॉक्स सेट कर रहा हूं , और ऑप्सकोड chefको एक कॉन्फ़िगरेशन टूल के रूप में उपयोग कर रहा हूं । इनमें से प्रत्येक सर्वर पर प्रत्येक उपयोगकर्ता के लिए सार्वजनिक कुंजी स्थापित करना और पासवर्ड प्रमाणीकरण अक्षम करना काफी आसान होगा।

हालाँकि, उपयोगकर्ताओं को भी sudoविशेषाधिकार होना चाहिए , जो डिफ़ॉल्ट रूप से एक पासवर्ड की आवश्यकता होती है।

मैं पहुँच प्रबंधन के एक तरीके के रूप में उपयोगकर्ताओं की सार्वजनिक कुंजी का उपयोग करना चाहते हैं और उन की अनुमति देते हैं sudoविशेषाधिकार, मतलब मैं भी ऊपर उपयोगकर्ताओं के साथ स्थापित करना चाहिए करता है NOPASSWD: ALLमें visduo, या वहाँ एक रास्ता है कि एक उपयोगकर्ता यदि अपने स्वयं के पासवर्ड बदल सकते हैं वे केवल सार्वजनिक कुंजी प्रमाणीकरण है?



@ एसआरआर - ऐसा नहीं लगता है कि यह करने का एक मुख्य तरीका है ...
cwd

आप अपने उपयोगकर्ताओं को सूडो प्रिव्यूल्स क्यों चाहते हैं? मुझे आशा है कि आप इस बात से अवगत होंगे कि आप इसके द्वारा एक रूट एक्सेस देना चाहते हैं। कुछ समय निवेश करने और सूडो के संबंध में केवल आदेशों के एक सबसेट का उपयोग करने की अनुमति देने के लिए यहां एक मौका हो सकता है (जो शायद कम असुरक्षित होगा)। गो man sudoersनिश्चित रूप से उपयोगकर्ता के पासवर्ड के बिना सूडो के साथ चलने में सक्षम होने के बारे में जानकारी देगा। आप एक शेलस्क्रिप्ट को / etc / sudoers में भी जोड़ सकते हैं, जो प्रति उपयोगकर्ता "सेल्फ-पासवर्ड" सेटिंग को पूर्व पासवर्ड की आवश्यकता के बिना अनुमति देगा।
मानवतावादपीस '

@humanityandpeace - मुझे इसका एहसास है। हमारी टीम के सदस्यों को हमारे द्वारा बनाए जाने वाले क्लाउड सर्वर तक रूट एक्सेस की आवश्यकता होती है। हम अब उपयोगकर्ताओं की सार्वजनिक कुंजियों को प्रबंधित करने के लिए शेफ का उपयोग कर रहे हैं और हमारे पास एक sysadmin समूह है जिसके साथ NOPASSWD: ALLटीम के सदस्य हिस्सा हैं। यदि आप एक बेहतर समाधान सुझा सकते हैं तो कृपया इसे उत्तर के रूप में पोस्ट करें।
cwd

जवाबों:


21

सूडो, इसके सबसे आम विन्यास में, उपयोगकर्ता को अपना पासवर्ड टाइप करने की आवश्यकता होती है। आमतौर पर, उपयोगकर्ता ने पहले से ही खाते में प्रमाणित करने के लिए अपने पासवर्ड का उपयोग किया था, और पासवर्ड को फिर से टाइप करना यह पुष्टि करने का एक तरीका है कि वैध उपयोगकर्ता ने अपने कंसोल को नहीं छोड़ा है और अपहृत किया गया है।

आपके सेटअप में, उपयोगकर्ता का पासवर्ड केवल sudo के प्रमाणीकरण के लिए उपयोग किया जाएगा। विशेष रूप से, यदि उपयोगकर्ता की SSH कुंजी से छेड़छाड़ की जाती है, तो हमलावर सर्वर पर रूट विशेषाधिकार को नहीं बढ़ा सकेगा। हमलावर खाते में एक कुंजी लकड़हारा लगा सकता है, लेकिन यह कुंजी लकड़हारा अन्य उपयोगकर्ताओं द्वारा पता लगाने योग्य होगा, और यहां तक ​​कि स्वचालित रूप से भी देखा जा सकता है।

एक उपयोगकर्ता को आम तौर पर इसे एक अलग पासवर्ड में बदलने के लिए अपने वर्तमान पासवर्ड को जानने की आवश्यकता होती है। passwdकार्यक्रम यह पुष्टि करता है (यह नहीं करने के लिए विन्यस्त किया जा सकता है, लेकिन यह उपयोगी या अपने परिदृश्य में सभी वांछनीय पर नहीं है)। हालाँकि, रूट पुराने को जाने बिना किसी भी उपयोगकर्ता का पासवर्ड बदल सकता है; इसलिए, sudo शक्तियों वाला उपयोगकर्ता अपना पासवर्ड बदलकर बिना उसे passwdचलाए प्रॉम्प्ट पर चला सकता है sudo passwd $USER। यदि sudoउपयोगकर्ता के पासवर्ड की आवश्यकता के लिए कॉन्फ़िगर किया गया है, तो उपयोगकर्ता को पासवर्ड को sudoवैसे भी टाइप करना होगा ।

आप पासवर्ड प्रमाणीकरण को चुनिंदा रूप से अक्षम कर सकते हैं। आपकी स्थिति में, आप ssh, और संभवतः अन्य सेवाओं में पासवर्ड प्रमाणीकरण को अक्षम कर देंगे। अधिकांश आधुनिक यूनियनों (उबंटू सहित) की अधिकांश सेवाएँ प्रमाणीकरण विधियों को कॉन्फ़िगर करने के लिए PAM का उपयोग करती हैं। उबंटू में, पीएएम विन्यास फाइल में रहते हैं /etc/pam.d। पासवर्ड प्रमाणीकरण अक्षम करने के लिए, auth … pam_unix.soलाइन में टिप्पणी करें /etc/pam.d/common-auth। इसके अलावा, सुनिश्चित करें कि आपके PasswordAuthentication noमें /etc/ssh/sshd_configअक्षम sshd के अंतर्निहित पासवर्ड प्रमाणीकरण करने के लिए।

आप कुछ प्रशासनिक उपयोगकर्ताओं को पासवर्ड के साथ लॉग इन करने की अनुमति दे सकते हैं, या कंसोल पर पासवर्ड प्रमाणीकरण की अनुमति दे सकते हैं। PAM के साथ यह संभव है (यह बहुत लचीला है), लेकिन मैं आपको यह नहीं बता सकता कि मेरे सिर के ऊपर से कैसे निकला; यदि आपको सहायता की आवश्यकता हो तो एक अलग प्रश्न पूछें।


SSH कुंजी प्रमाणीकरण के साथ संयोजन में PAM का उपयोग करने का एक सुविधाजनक तरीका pam_ssh_agent_auth के माध्यम से है , जिसे पासवर्ड प्रांप्ट को (सैद्धांतिक रूप से और भी सुरक्षित) कुंजी प्रमाणीकरण की जगह लेने का लाभ है, SSH वैसे भी उपयोग कर सकता है
Tobin Kienzler

तो आप कह रहे हैं कि sudo passwdवर्तमान उपयोगकर्ता के लिए पासवर्ड बदल जाएगा, sudo उपयोगकर्ता के लिए नहीं?
still_dreaming_1

1
@ still_dreaming_1 नहीं, मैं कह रहा हूं कि एक उपयोगकर्ता जो कमांड चला सकता है, वह sudoअपना पासवर्ड बदल सकता है। सटीक कमांड वास्तव में मायने नहीं रखती है, लेकिन अधिक विस्तार में जाने के लिए, यह वही होगा sudo passwd bobजहां bobउपयोगकर्ता का नाम, या कुछ समतुल्य है। बिना किसी तर्क के, sudo passwdवास्तव में रूट के लिए पासवर्ड बदल जाएगा।
गाइल्स का SO- बुराई का होना बंद '

7

आप pam_ssh_agent_auth मॉड्यूल का उपयोग कर सकते हैं । यह संकलन करने के लिए बहुत सरल है, और फिर बस प्रविष्टि जोड़ें

auth       sufficient pam_ssh_agent_auth.so file=~/.ssh/authorized_keys

इससे पहले कि अन्य auth(या include) में प्रविष्टियों/etc/pam.d/sudo

तथा

Defaults    env_keep += "SSH_AUTH_SOCK"

को /etc/sudoers(के माध्यम से visudo)।

अब हर उपयोगकर्ता या तो sudo(अग्रेषित या स्थानीय) एसएसएच एजेंट या उनके पासवर्ड के माध्यम से प्रमाणित कर सकता है । अपने उपयोगकर्ताओं को ssh-add -cइस तरह का उपयोग करने के लिए कहना बुद्धिमानी हो सकती है कि प्रत्येक sudoकॉल के लिए कम से कम कुछ पुष्टि की आवश्यकता होगी।


संबंधित मामले पर, pam_ssh है , जो लॉगिन के लिए यूनिक्स एक के बजाय अपने SSH पासफ़्रेज़ का उपयोग करने की अनुमति देता है, स्वचालित रूप से एक एजेंट शुरू करने और कुंजी जोड़ने - इस प्रकार आपको एकल साइन-ऑन संभावना प्रदान करता है।
टोबियास किंजलर

1

हां, यह अविश्वसनीय रूप से असुरक्षित है और यह भी एक उपयोगकर्ता को अन्य उपयोगकर्ताओं के पासवर्ड का उपयोग करने की अनुमति देता है, लेकिन चूंकि उनके पास sudo है, इसलिए बहुत कुछ नहीं जो आप कर सकते हैं।

मूल रूप से, आप निम्न कार्य करते हैं:

$ sudo -i

अब, हम जड़ हैं। हमारी हर चीज तक पहुंच है।

# passwd $username

$ उपयोगकर्ता नाम किसी का भी उपयोगकर्ता नाम हो सकता है।

नया UNIX पासवर्ड डालें:

नया UNIX पासवर्ड टाइप करें: पासवार्ड: पासवर्ड सफलतापूर्वक अपडेट किया गया

बूम, पासवर्ड बदल गया। फिर से, अविश्वसनीय रूप से असुरक्षित क्योंकि आप किसी को भी बदल सकते हैं, लेकिन यह काम करता है, लेकिन यह काम करता है। मैं इसकी अनुशंसा नहीं करता, बल्कि इस उत्तर को एक उदाहरण के रूप में प्रस्तुत करता हूं कि क्या नहीं करना है।


अच्छा लग रहा है, लेकिन आप यहाँ क्या चल रहा है पर विस्तार से बता सकते हैं?
cwd

4
sudo -iवर्तमान उपयोगकर्ता पासवर्ड के बिना ऐसा करना संभव नहीं है ।
१२:१२ पर क्रैविमीर

@Miro। आप जैसा कहते हैं, वैसा ही होता है। फिर भी पासवर्डहीन sudo bashहो सकता है कि /etc/sudoersफाइल में ऐसा सेटअप दिया जाए । मुझे लगता है कि @Grg यहाँ सुडोल के साथ असुरक्षा के मुद्दे पर अधिक ध्यान केंद्रित करने के लिए कहा गया है
मानवतावादपीस

1
ईमानदारी से, आपको करने की ज़रूरत नहीं है sudo -i, आप सीधे sudo passwd $username@Miro पर कूद सकते हैं , आपको वर्तमान उपयोगकर्ता पासवर्ड जानने की आवश्यकता नहीं है। आपको केवल sudo
Antony

0

पासवर्ड का मतलब यह सुनिश्चित करना है कि हैकर्स जो उपयोगकर्ता की कुंजी प्राप्त करते हैं, या एक अप्राप्य टर्मिनल ढूंढते हैं, रूट एक्सेस प्राप्त नहीं कर सकते हैं। इस कारण से मैं ऐसे किसी भी समाधान की अनुशंसा नहीं करूंगा जिसमें पासवर्ड रहित सूडो शामिल हो।

शायद एक उपयोगकर्ता सख्त निर्देश के साथ डिफ़ॉल्ट पासवर्ड ईमेल इसे ASAP को बदलने के लिए, या फिर उनके में एक स्क्रिप्ट दर्ज: मैं आप इसे सरल रखने का सुझाव .profileया .loginया कुछ ऐसी है कि वह अपनी पहली बार प्रवेश करने पर एक नया पासवर्ड मांग करती है। पूर्ण होने पर यह स्वयं को अक्षम कर सकता है, और आप expectमौजूदा पासवर्ड दर्ज करने के लिए उपयोग कर सकते हैं ताकि उन्हें कभी भी यह पता न चले।


0
#% useradd -g somegroup someuser
#% usermod -p "" someuser
#% chage -d 0 someuser
#% sed -i "s/^.*PasswordAuthentication .*/PasswordAuthentication no/" /etc/sshd/sshd_config
#% /sbin/service sshd restart
#% cp -r ~/.ssh `echo ~someuser`
#% chown -R someuser `echo ~someuser`/.ssh
#% chgrp -R somegroup `echo ~someuser`/.ssh
#% echo "%somegroup  ALL=(ALL)   ALL" >> /etc/sudoers

> इससे आपको ऐसे उपयोगकर्ता मिल सकते हैं जो केवल सार्वजनिक कुंजी का उपयोग करके लॉगिन कर सकते हैं और लॉगिन के लिए पासवर्ड का उपयोग नहीं कर सकते। हालाँकि, वह पहली बार लॉग इन करने पर पासवर्ड बदलने के लिए मजबूर हो जाएगा ... लेकिन किसी दिन उसे बिना किसी पासवर्ड के सामने बताने के लिए ... उपयोगकर्ताओं से बस पासवर्ड रीसेट करने के लिए कहा जाएगा और बाद में वे इसे केवल sudo के लिए उपयोग कर सकते हैं। लेकिन उस पासवर्ड का उपयोग करके लॉगिन (ssh) नहीं कर पाएंगे। ध्यान दें कि यहाँ ट्रिक उपयोगकर्ताओं को कुछ डमी पासवर्ड नहीं बताने के लिए है जो उन्हें लॉगिन के समय इनपुट करने के लिए आवश्यक होगा एक बार उन्हें अपना पासवर्ड बदलने के लिए आवश्यक है ... नट शेल में व्यवस्थापक (रूट) से कोई संचार नहीं है वास्तविक उपयोगकर्ता के लिए आवश्यक है।

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