PermitRootLogin UID या उपयोगकर्ता नाम पर आधारित है?


17

वह आदमी पेज बताता है कि PermitRootLogin

निर्दिष्ट करता है कि क्या रूट उपयोग में लॉग इन कर सकता है ssh(1)

हालाँकि, यह स्पष्ट नहीं है कि यह जाँच उपयोगकर्ता नाम ( "root") या UID ( 0) पर आधारित है ।

यदि रूट खाते का नाम बदल दिया जाए तो क्या होगा "admin"? विल "admin"जब में लॉग इन कर सकेंगे PermitRootLogin=no?

अगर वहाँ यूआईडी = 0, यानी वाले दो खाते हैं तो क्या होता है "root"और "admin"? क्या उनमें से कोई भी लॉगिन कर पाएगा?

जवाबों:


16

ऐसा लगता है कि चेक यूआईडी (परीक्षण पर OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016) पर किया गया है :

PermitRootLogin सेट करें:

mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin no

सुनिश्चित करें कि नामित उपयोगकर्ता adminUID 0 के साथ बनाया गया है:

mtak@pdv1:~$ sudo grep admin /etc/passwd
admin:x:0:0:Root User:/root:/bin/bash

सुनिश्चित करें कि उपयोगकर्ता को सिस्टम पर लॉग इन करने के लिए इस्तेमाल किया जा सकता है:

mtak@pdv1:~$ su - admin
Password: 
root@pdv1:~# 

जांचें कि क्या हम SSH का उपयोग कर सिस्टम में लॉग ऑन कर सकते हैं:

mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password: 
Permission denied, please try again.

यदि हम PermitRootLogin को चालू करते हैं:

mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin yes

और लॉग ऑन करने का प्रयास करें:

mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password: 
Linux pdv1 4.4.8-1-pve #1 SMP Tue May 17 16:14:08 CEST 2016 x86_64
Last login: Wed Aug 24 12:05:28 2016 from xxx
root@pdv1:~# 

दिलचस्प है कि भले ही UID 0 का उपयोगकर्ता नाम व्यवस्थापक है, फिर भी यह root@pdv1शेल में जैसा
दिखता है

1
@Dezza संभवतः आदेश लाइनों / / / passwd में सूचीबद्ध हैं (जैसा कि: UID = 0 के साथ पहली प्रविष्टि पाते हैं) पर निर्भर करता है।
ट्रीपाउंड

19

मैं अन्य उत्तर में @mtak के दृष्टिकोण की सराहना करता हूं, लेकिन इस परीक्षण के बिना भी उत्तर स्पष्ट है।

यह ओपनशॉ UIDके सोर्स कोड में जैसा कि आप देख सकते हैं, पर आधारित है :

if (authctxt->pw->pw_uid == 0 &&
            !auth_root_allowed(auth_method))
authenticated = 0;

इसके अलावा हर प्रमाणीकरण विधि कुछ इस तरह दिखाती है

if (pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES)
    ok = 0;

grepकोड में आगे, आप देख सकते हैं, कोई strcmp('root', pw->pw_name)विकल्प या कोई विकल्प नहीं है, अगर यह आपके लिए पर्याप्त होगा।


आप यूआईडी 0 के लिए चेक कैसे जानते हैं sshd ? आप अपने कथन का समर्थन करने के लिए किसी भी तर्क का उपयोग नहीं कर रहे हैं।
mtak

2
यूनिक्स अपने यूआईडी = 0 द्वारा एक सुपरयुसर को परिभाषित करता है। एक और उदाहरण के रूप में एक हो सकता है स्रोत कोड की openssh
जकूजी

कर्नेल करता है, लेकिन आप मान रहे थे कि ओपनएसएसएच ने भी ऐसा किया है। उदाहरण के लिए, अपाचे मूल प्रमाणीकरण रूट लॉगिन की अनुमति नहीं देता है, क्या यह करता है? लिंक के लिए धन्यवाद, मैंने आपके उत्तर को शामिल करने के लिए संशोधित किया है।
एमटी

1
यदि यह इसे किसी अन्य तरीके से करेगा, तो यह एक संभावित सुरक्षा जोखिम होगा।
जकूजी

3
@ बकुरीउ और यह pwकुछ और से संदर्भ का निर्माण क्यों करेगा । opensshकोड खुला स्रोत है और रुचि पाठकों पूरे कोड के माध्यम से जा सकते हैं। इसी तरह के निर्माण हर प्रमाणीकरण विधि के लिए कोड में हैं। यदि आप grepकोड के माध्यम से, आप कभी नहीं पाएंगे strcmp('root', pw->pw_name), अगर यह आपके लिए और अधिक विश्वसनीय बना देगा।
जकूजी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.