अपनी /etc/passwd
फ़ाइल में, मैं देख सकता हूं कि www-data
Apache द्वारा उपयोग किए गए उपयोगकर्ता, साथ ही साथ सभी प्रकार के सिस्टम उपयोगकर्ता, उनके लॉगिन शेल में /usr/sbin/nologin
या तो हैं /bin/false
। उदाहरण के लिए, यहां लाइनों का चयन है:
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash
नतीजतन, अगर मैं इनमें से किसी भी उपयोगकर्ता को स्वैप करने की कोशिश करता हूं (जो मैं कभी-कभी उनकी अनुमतियों के बारे में मेरी समझ की जांच करना चाहता हूं, और जिसके लिए शायद अन्य कम से कम आधे रास्ते के कारण हैं), तो मैं असफल हूं:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
बेशक, यह बहुत असुविधा नहीं है, क्योंकि मैं अभी भी इस तरह से एक विधि के माध्यम से उनके लिए एक खोल लॉन्च कर सकता हूं:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
लेकिन यह सिर्फ मुझे आश्चर्य होता है कि इन उपयोगकर्ताओं को एक लॉगिन शेल से इनकार करने से क्या उद्देश्य पूरा होता है। स्पष्टीकरण के लिए इंटरनेट के आसपास देखते हुए, कई लोग दावा करते हैं कि सुरक्षा के साथ कुछ करना है, और हर कोई इस बात से सहमत है कि यह किसी तरह से इन उपयोगकर्ताओं के लॉगिन गोले को बदलने के लिए एक बुरा विचार होगा। यहाँ उद्धरण का एक संग्रह है:
अपाचे उपयोगकर्ता के शेल को कुछ गैर-संवादात्मक पर सेट करना आम तौर पर अच्छा सुरक्षा अभ्यास है (वास्तव में सभी सेवा उपयोगकर्ताओं को जो अंतःक्रियात्मक रूप से लॉग इन करने की आवश्यकता नहीं है, उन्हें अपने शेल को कुछ गैर-संवादात्मक होना चाहिए)।
- https://serverfault.com/a/559315/147556
उपयोगकर्ता www-data के लिए शेल / usr / sbin / nologin पर सेट है, और यह एक बहुत अच्छे कारण के लिए सेट है।
- https://askubuntu.com/a/486661/119754
[सिस्टम खाते] सुरक्षा छेद हो सकते हैं , खासकर यदि उनके पास एक शेल सक्षम है:
खराब
bin:x:1:1:bin:/bin:/bin/sh
अच्छा
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
सुरक्षा कारणों से मैंने टॉमकैट सर्वर चलाने के लिए कोई लॉगिन शेल नहीं बनाया है:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
हालांकि ये पोस्ट सर्वसम्मत समझौते में हैं कि सिस्टम उपयोगकर्ताओं को वास्तविक लॉगिन गोले नहीं देना सुरक्षा के लिए अच्छा है, उनमें से एक भी इस दावे को सही नहीं ठहराता है, और मैं कहीं भी इसका स्पष्टीकरण नहीं पा सकता हूं।
इन उपयोगकर्ताओं को वास्तविक लॉगिन गोले न देकर हम खुद को बचाने के लिए क्या हमला कर रहे हैं?