In meiner /etc/passwd
Datei kann ich sehen, dass der www-data
von Apache verwendete Benutzer sowie alle Arten von Systembenutzern entweder /usr/sbin/nologin
oder /bin/false
als Anmeldeshell haben. Hier zum Beispiel eine Auswahl von Zeilen:
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
Wenn ich versuche, zu einem dieser Benutzer zu wechseln (was ich manchmal tun möchte, um mein Verständnis ihrer Berechtigungen zu überprüfen, und wofür es wahrscheinlich andere, zumindest halbwegs vernünftige Gründe gibt), scheitere ich:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
Das ist natürlich kein großer Nachteil, da ich mit einer Methode wie der folgenden immer noch eine Shell für sie starten kann:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
Ich frage mich jedoch, welchen Zweck es hat, diesen Benutzern eine Anmeldeshell zu verweigern. Wenn man sich im Internet nach Erklärungen umsieht, behaupten viele, dass dies etwas mit Sicherheit zu tun hat, und alle sind sich einig, dass es in irgendeiner Weise eine schlechte Idee wäre, die Login-Shells dieser Benutzer zu ändern. Hier ist eine Sammlung von Zitaten:
Das Einstellen der Apache-Benutzer-Shell auf etwas Nicht-Interaktives ist im Allgemeinen eine gute Sicherheitspraxis (wirklich sollten alle Dienstbenutzer, die sich nicht interaktiv anmelden müssen, ihre Shell auf etwas setzen, das nicht interaktiv ist).
- https://serverfault.com/a/559315/147556
Die Shell für den Benutzer www-data ist auf / usr / sbin / nologin gesetzt, und dies hat einen sehr guten Grund.
- https://askubuntu.com/a/486661/119754
[Systemkonten] können Sicherheitslücken sein , insbesondere wenn eine Shell aktiviert ist:
Schlecht
bin:x:1:1:bin:/bin:/bin/sh
Gut
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
Aus Sicherheitsgründen habe ich ein Benutzerkonto ohne Anmeldeshell zum Ausführen des Tomcat-Servers erstellt:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
Obwohl diese Posts einstimmig der Meinung sind, dass es der Sicherheit zuträglich ist, Systembenutzern keine echten Login-Shells zu geben, rechtfertigt keiner von ihnen diese Behauptung, und ich kann nirgendwo eine Erklärung dafür finden.
Gegen welche Angriffe versuchen wir uns zu schützen, indem wir diesen Benutzern keine echten Login-Shells geben?