Dans mon /etc/passwd
dossier, je peux voir que l’ www-data
utilisateur utilisé par Apache, ainsi que toutes sortes d’utilisateurs du système, ont un shell /usr/sbin/nologin
ou /bin/false
un shell de connexion. Par exemple, voici une sélection de lignes:
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
Par conséquent, si j'essaie d'utiliser l'un de ces utilisateurs (ce que j'aimerais parfois faire pour vérifier ma compréhension de leurs autorisations et qu'il existe probablement d'autres raisons au moins à moitié saines), j'échoue:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
Bien sûr, ce n’est pas vraiment un inconvénient, car je peux toujours lancer un shell pour eux via une méthode comme celle-ci:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
Mais cela me laisse simplement à me demander à quoi sert cet objectif en refusant à ces utilisateurs un shell de connexion. En cherchant une explication sur Internet, de nombreuses personnes prétendent que cela a un rapport avec la sécurité, et tout le monde semble convenir qu'il serait en quelque sorte une mauvaise idée de changer les coques de connexion de ces utilisateurs. Voici une collection de citations:
Définir le shell de l'utilisateur Apache sur quelque chose de non-interactif est généralement une bonne pratique de sécurité (en réalité, tous les utilisateurs de services qui ne doivent pas se connecter de manière interactive devraient avoir leur shell configuré sur quelque chose de non-interactif).
- https://serverfault.com/a/559315/147556
Le shell de l'utilisateur www-data est défini sur / usr / sbin / nologin, et il est défini pour une très bonne raison.
- https://askubuntu.com/a/486661/119754
[comptes système] peuvent être des failles de sécurité , surtout s’ils ont un shell activé:
Mauvais
bin:x:1:1:bin:/bin:/bin/sh
Bien
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
Pour des raisons de sécurité, j'ai créé un compte utilisateur sans shell de connexion pour l'exécution du serveur Tomcat:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
Bien que ces publications soient unanimes pour dire que le fait de ne pas donner aux utilisateurs du système de véritables shells de connexion est bon pour la sécurité, aucun d’eux ne justifie cette affirmation, et je ne trouve aucune explication à ce sujet.
À quelle attaque essayons-nous de nous protéger en ne donnant pas à ces utilisateurs de véritables coquilles de connexion?