У моєму /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/InstallingTomcat.html
Хоча ці повідомлення одностайно погоджуються, що не давати користувачам системи реальних оболонок для входу в систему, це добре для безпеки, але жодна з них не виправдовує це твердження, і я не можу знайти його пояснення ніде.
Від якої атаки ми намагаємося захистити себе, не надаючи цим користувачам реальні оболонки для входу?