$ ()
. Echo "$ test"
. ECHO
, используйте printf
. В конце концов:
$ test="$(printf '%s' '[asdf]')"
$ printf "%s\n" "$test"
[asdf]
TL; DR: root: root rwxr-xr-x
, если вам не нужен доступ в записи к каталогу, в этом случае root: www-data rwxrwxr-x
, если только Вам необходимо защитить секреты (например, пароли базы данных) в веб-каталоге, в этом случае root: www-data rwxr-x ---
, если вам не нужен доступ для записи и , вам нужно Для защиты секретов, в этом случае корня: www-data rwxrwx ---
.
Да, в идеале, файлы вашего сайта должны принадлежать корню. Это из-за основного состава минимум привилегии: в отношении разрешений root можно сделать все равно, поэтому, наличие чего-то принадлежащего root, на самом деле не дает никаких дополнительных привилегий на корне - это просто отнимает привилегии с других учетных записей. Это хорошая вещь ™.
Если вы не знаете, какой является основной принцип наименее привилегии, он в основном: дайте обрабатывать голые минимальные разрешения, которые им нужны, и не более, потому что вы хотите ограничить повреждение, если и когда процесс получает PWD и Атакующий получает поиграть с любыми блестящими новыми разрешениями, которые он только что унаследовал от процесса PWD. Это мотивация для SELinux , демоны, имеющие способность привилегии , возможности Linux , Chroot Jails 1 - Все Из этих вещей предназначены для ограничения ущерба, который может сделать процесс, если он должен быть захвачен злоумышленником.
В типичном сценарии вы хотите, чтобы все могли прочитать привилегии и дать только корневые привилегии. В этом сценарии, настроили ли ваш веб-каталог, который будет принадлежать группе www-data
2 , на самом деле не имеет значения, потому что он собирается получить RX
Разрешения в любом случае.
Хотя есть более сложные сценарии, которые требуют, чтобы вы могли дифференцировать, к чему Apache получается доступ, и о том, к чему просто люди покидают дерево каталогов. Это где находится -данные WWW-Data
. Это позволяет вам, например, Разрешить разрешение на запись на Apache, но не для регулярных пользователей. Или если вы, например, Необходимо защитить пароли базы данных, то вы можете отрицать все права читать разрешения, но все же оставьте Apache увидеть содержимое.
1 : Это небольшое искажение. Системный вызов ()
был фактически никогда не был спроектирован как функция безопасности, а в тюрьмах Chroot были изобретены после Chroot ()
вызов Chroot ()
. Из-за этого у них есть некоторые ограничения - например, если вы root, Вы можете вырваться из тюрьмы Chroot . То же самое относится то же самое относится к контейнерам (Docker, SystemD-Nspawn
, я смотрю на вас). Такие вещи, такие как BSD Tails и Solaris Zones , в основном приняли концепцию Chroot Jails и на самом деле сделали их , так что запретить уязвимости безопасности ядра, вы например, не может вырваться из тюрьмы BSD, , даже если вы root внутри этого .
2 : имя группы веб-сервера может варьироваться от распространения. Это www-data
на Debian и производных, но я не знаю о том, что делает семья Рол.
Я могу быстро подумать как минимум по двум причинам , у вас есть контент вашего сайта, принадлежащий к корню:
Рассмотреть возможность использования BuildRoot для создания целевой корневой файловой системы. Этот проект использует конфигурацию ядра Linux и построить рабочую силу во всей встроенной системной системе.
-121--111611-Отрицательный логин root - это хорошее решение, root - популярная цель в атаках Brute-Force SSH.
root кажется усужденным выбором для владельца веб-контента, я использую обычную учетную запись пользователя. Там, где работают работа по разработке Webdeveloper
WebDeveloper
Group, имеет смысл, где есть только один разработчик, или учетная запись разработчиков совместно с несколькими разработчиками нет необходимости в специальной группе.
Отказ