कैसे एक उपयोगकर्ता को लॉगिन से रोकने के लिए, लेकिन लिनक्स में "su - उपयोगकर्ता" की अनुमति दें?


93

आप किसी उपयोगकर्ता को " su - उपयोगकर्ता " का उपयोग करने में लॉग इन करने की अनुमति कैसे देते हैं लेकिन उपयोगकर्ता को एसएसएच का उपयोग करने में लॉगिन से रोकते हैं?

मैंने शेल को सेट करने की कोशिश की, /bin/falseलेकिन जब मैं कोशिश suकरता हूं तो यह काम नहीं करता है।

क्या केवल लॉगिन करने की अनुमति देने के कई तरीके हैं su?

क्या SSH जाने का AllowUserरास्ता है? (अगर यह जाने का रास्ता है तो मैं यह कैसे करूंगा)

जवाबों:


113

आप उपयोग कर सकते हैं AllowUsers / AllowGroups यदि आप केवल कुछ ही उपयोगकर्ता / समूह है कि ssh या के माध्यम से प्रवेश करने की अनुमति है DenyUsers / DenyGroups यदि आप केवल कुछ ही उपयोगकर्ता / समूह है कि कर रहे हैं नहीं प्रवेश करने की अनुमति। ध्यान दें कि यह केवल ssh के माध्यम से लॉगिन को प्रतिबंधित करता है, लॉगिन के अन्य तरीके (कंसोल, ftp, ...) अभी भी संभव हैं। आपको अधिकांश ssh स्थापनाओं के लिए इन विकल्पों को अपने / etc / ssh / sshd_config फ़ाइल में जोड़ना होगा ।

यदि आपने लॉगिन शेल को / बिन / झूठे पर सेट किया है तो आप अपनी पसंद के शेल के साथ प्रयोग su -s /bin/bash user(प्रतिस्थापित / बिन / बैश ) कर सकते हैं


सभी को बहुत-बहुत धन्यवाद। मुझे अपने प्रश्न पर 2+ अपवोट मिलने की उम्मीद नहीं थी :) मुझे "su -s ..." बहुत पसंद है और कंसोल / ftp एक अच्छा बिंदु है। मैं वास्तव में "सु-एस" जैसी किसी चीज के बाद था।
NoozNooz42

3
सु-एस चाल सोने की है। मैं इसे सिस्टम खातों के लिए हर समय उपयोग करता हूं, उदाहरण के लिए, मुझे, अपाचे, कोई नहीं, आदि के लिए अनुमतियों का परीक्षण करने की आवश्यकता है। मैं आमतौर पर su - उपयोगकर्ता / बिन / बैश करता हूं। वैकल्पिक तर्क - का उपयोग उस वातावरण को प्रदान करने के लिए किया जा सकता है जैसा कि उपयोगकर्ता को उम्मीद है कि उपयोगकर्ता सीधे लॉग इन करता है।
dmourati

2
अगर आपको लोड होने के लिए पर्यावरण चर (जैसे / / / प्रोफ़ाइल से) की आवश्यकता है, तो एक अतिरिक्त डैश पास करना होगा:su - -s /bin/bash user
लेन्स

13

यदि आप अभी भी काम करना चाहते हैं, तो आप अस्थायी शेल के रूप में उपयोग कर सकते हैं sudo -u [username]या पास कर सकते हैं -s /bin/bash। वे दोनों एक खोल के अभाव में ऐसा ही करते हैं /etc/passwd


7

यदि किसी खाते में कोई पासवर्ड ( पासवार्ड-उपयोगकर्ता नाम ) नहीं है, तो वे अंतःक्रियात्मक रूप से लॉग इन नहीं कर सकते हैं (कंसोल, एसएसएच, आदि)। यदि उनके पास एक वैध शेल है, तो सु अभी भी काम करेगा। "अंतःक्रियात्मक" पर ध्यान दें, हालांकि; अगर कोई खाता के लिए SSH कीपेयर स्थापित करने का निर्णय लेता है, तो यह काम करेगा!


क्या उपयोगकर्ता को su के लिए एक वैध शेल की आवश्यकता है? मुझे पूरा यकीन है कि आप किसी अन्य उपयोगकर्ता के साथ su होने के बाद भी आप उसी मूल शेल में हैं ... आप वास्तव में अन्य उपयोगकर्ता के रूप में लॉग इन नहीं करते हैं ... इसलिए, शेल को केवल / dev / null पर सेट करने से काम हो सकता है भी।
ब्रायन पोस्टो

हां, इसे अभी भी एक वैध शेल की आवश्यकता है: [रूट @ localhost ~] # सु डेमन यह खाता वर्तमान में उपलब्ध नहीं है। [root @ localhost ~] # su - डेमन यह खाता अभी उपलब्ध नहीं है। (आरएचईएल प्रणाली, डेमन का खोल / sbin / nologin है)
एस्ट्रोस्टल

3

Sshd_config में एक पंक्ति जोड़ें DenyUser [username]

ध्यान दें कि यह उस उपयोगकर्ता को कंसोल के माध्यम से लॉग इन करने से नहीं रोकेगा।


1
वह DenyUsersएक 's' के साथ होना चाहिए ।
डेविड जी

2

उपर्युक्त का उल्लेख करने के अलावा (निष्क्रिय और / या उपयोगकर्ता पासवर्ड सेट न करें), pam_access मॉड्यूल (pam_access और access.conf पर मैन पेज देखें) का उपयोग लॉगिन पहुंच को नियंत्रित करने के लिए किया जा सकता है।


1

जैसा कि दूसरों ने कहा है;

DenyUser usernameया DenyGroup groupnameमें sshd_configssh के माध्यम से कुंजीयुग्म / पासवर्ड लॉगिन रोका जा सके।

हालाँकि, मैं आमतौर पर AllowGroup sshउन पंक्तियों के साथ कुछ या ऐसा कुछ करता हूं , और उन लोगों को स्पष्ट रूप से जोड़ता हूं जिन्हें उस समूह तक पहुंच की आवश्यकता होती है।

फिर, आप अन्य के रूप में कर सकते हैं: passwd -d usernameउपयोगकर्ताओं के पासवर्ड को खाली करने के लिए, इसलिए वे कंसोल, या किसी अन्य तरीके से लॉग इन नहीं कर सकते। या passwd -l usernameखाते को 'लॉक' करना बेहतर है । यह संभव है कि ssh एक बंद खाते तक पहुंच से इनकार कर देगा, यहां तक ​​कि चाबियों के साथ भी, लेकिन मैं सकारात्मक नहीं हूं।


1
दरअसल ssh आपको अकाउंट के पासवर्ड लॉक होने पर भी कुंजी प्रमाणीकरण का उपयोग करके लॉग इन करने की अनुमति देगा।
रिचर्ड होलोवे

1

जैसा कि मैंने एक टिप्पणी में उल्लेख किया है, मुझे लगता है कि आप अभी भी अमान्य शेल वाले खाते में मुकदमा कर सकते हैं। इसलिए यदि आप उपयोगकर्ता के शेल को / dev / null या बिन के शेल के रूप में सेट करते हैं, तो आपको अभी भी उस उपयोगकर्ता पर मुकदमा करने में सक्षम होना चाहिए ... लेकिन किसी भी तरह से लॉग इन करने का कोई भी प्रयास आपको वापस छोड़ देगा ...


1

जोड़कर / संपादित करें / छाया! पासवर्ड हैश की शुरुआत में।

username:!<hash>:#####:#:#####:#:::

जब एक नया इंस्टॉल हासिल करना यह पहली चीज है जो मैं sudo को इंस्टॉल करने के बाद करता हूं, तो कोई भी सिस्टम में लॉगिन या ssh के लिए रूट उपयोगकर्ता का उपयोग करने में सक्षम नहीं है, sudo उपयोगकर्ता अभी भी रूट उपयोगकर्ता के रूप में निष्पादित कर सकता है।


0

उपयोगकर्ता को लॉग इन करने या उसे हटाने की अनुमति नहीं देने के लिए एक पासवर्ड निर्दिष्ट न करें।

# passwd -d myuser

0

मान लें कि आप केवल उपयोगकर्ता को रूट के खाते से su करना चाहते हैं, और अन्य सभी एक्सेस को अक्षम करें:

इसका उपयोग करें (रूट के रूप में चलाएँ):

usermod -e 1 -L user

यह पासवर्ड लॉगिन को अक्षम करता है (जैसा कि कई अन्य उत्तरों ने सलाह दी है), लेकिन यह खाता भी समाप्त करता है । आप SSH कुंजियों के साथ एक समाप्त हुए खाते में प्रवेश नहीं कर सकते। आप अभी भी कर सकते हैं su user, हालांकि यह एक सूचना प्रदर्शित करेगा कि खाता समाप्त हो गया है।


0

यह जानना कि कौन सा तंत्र सर्वोत्तम है, आवश्यकताओं पर निर्भर करता है। यदि आप आवश्यकताओं को जानते हैं, तो आप उपयुक्त तंत्र चुन सकते हैं। उपरोक्त सभी उत्तर आवश्यकताओं के कुछ सेट के लिए मान्य हैं।

क्या आप केवल SSH पहुंच को प्रतिबंधित करना चाहते हैं? क्या आपको मेल या ssh विधियों के लिए पहुँच की आवश्यकता है? क्या जड़ से ही पहुँच है?

su - userउपयोगकर्ता के लिए पासवर्ड की आवश्यकता होगी यदि वह चलाया जाता है जो रूट के अलावा अन्य उपयोगकर्ता है। हालांकि, sudo -u user -iउपयोगकर्ता के लिए पासवर्ड की आवश्यकता नहीं है।

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