В моем /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:~$
Но это только заставляет меня задуматься о том, какой цели служит запрет доступа этих пользователей к оболочке входа. Просматривая объяснение в Интернете, многие люди утверждают, что это как-то связано с безопасностью, и все, похоже, согласны с тем, что было бы в некотором роде плохой идеей изменить оболочки входа этих пользователей. Вот коллекция цитат:
Установка оболочки пользователя Apache на что-то неинтерактивное обычно является хорошей практикой безопасности (на самом деле всем пользователям сервисов, которым не нужно входить в систему в интерактивном режиме, должна быть установлена неинтерактивная оболочка).
- https://serverfault.com/a/559315/147556
оболочка для пользовательских www-данных установлена в / 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
В целях безопасности я создал учетную запись пользователя без оболочки входа для запуска сервера Tomcat:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallTomcat.html
Хотя эти посты единодушно согласны с тем, что не предоставление пользователям системы реальных оболочек для входа хорошо для безопасности, ни один из них не оправдывает это утверждение, и я нигде не могу найти объяснения этому.
От какой атаки мы пытаемся защитить себя, не предоставляя этим пользователям настоящие логины?