?

Log in

No account? Create an account

Previous Entry Share Next Entry
ACL + nginx + static files
Linux
sanmai
Предположим, мы хотим раздавать статику пользователя example с помощью nginx.
При этом nginx должен получить необходимый минимум прав, то есть права только на чтение.

( Раздача статики разных пользователей с помощью nginx )


Зная, что nginx исполняется с правами пользователя www-data:
setfacl -m user:www-data:--x /home/example /home/example/www
setfacl -R -m d:u:www-data:rX /home/example/www/htdocs
Так, nginx получил право заходить в ~example/www/htdocs, читать все файлы уровнем ниже и только (например, nginx не сможет посмотреть содержимое директорий /home/example/ и /home/example/www/).

Если пользователь создаст новую поддиректорию в htdocs, то на нее по-умолчанию распространятся те же самые правила. То есть, вся эта схема будет работать прозрачно для пользователя.

Рекомендую так же:


Если нужно получить это же, но без acl, можно добавить www-data в группу пользователя:
useradd --create-home --user-group test.example.com
gpasswd -a www-data test.example.com

Или то же, кратко:
useradd -m -U test.example.com
gpasswd -a www-data test.example.com

Или в виде скрипта:
#!/bin/sh
set -o nounset -o errexit
USER="$1" 
shift
useradd -m -U "$@" "$USER"
gpasswd -a www-data "$USER"
Сам я пользуюсь способом без ACL: он много проще в поддержке.

  • 1
  • 1