LINUX.ORG.RU

Права на папки-ссылки Apache2

 


0

1

Раньше за часок получалось настроить права, а сейчас ни в какую не могу целый день побороть проблему.

/var/www или вложенную папку /var/www/site подключаю ссылкой

<VirtualHost *:80>
  ServerAdmin ***
  ServerName ***
  ServerAlias ***
  DocumentRoot /var/www/site
  <Directory />
    # тут пробовал разные комбинации, аналогично пробовал в apache2.conf. Апач перезапускаю каждый раз.
    Options +Indexes +FollowSymLinks +SymLinksIfOwnerMatch 
    AllowOverride None
    Header set Access-Control-Allow-Origin "*"
  </Directory>
  ErrorLog /var/www/site/logs/error.log
  CustomLog /var/www/site/logs/access.log combined
  ServerSignature On
</VirtualHost>

Рекурсивно пробовал на www и site, везде где только можно вешать права

sudo chown -R www-data:www-data www/

www-data добавил в свою группу и наоборот

> grep ^www-data /etc/group
www-data:x:33:banru
> grep ^banru /etc/group
banru:x:1000:www-data

Ничего не помогает. Пишет

Symbolic link not allowed or link target not accessible /var/www

При этом складывает ошибки в указанную папку, то есть логированию эти symbolic link не помеха.

Только если саму папку положить в www, то работает. Или в apache2.conf прописать своего юзера и свою группу, то ссылки тогда работают, независимо от того какой юзер и группа (www-data или мойюзер)


SymLinksIfOwnerMatch добавляет ограничения.

/var/www или вложенную папку /var/www/site подключаю ссылкой

Покажите права (ls -l /var/www/site и ls -l -d /var/www/site/ ) и определитесь что именно у вас будет «подключено ссылкой».

mky ★★★★★ ()
Ответ на: комментарий от mky

SymLinksIfOwnerMatch добавляет ограничения.

Я пробовал по разному и с + и с - и без этой опции

Покажите права

Сейчас пока что прописал своего пользователя

> ls -l 
-rw-rwSr-- 1 banru banru
>ls -l -d
drwxrwsr-x 14 banru banru

Но прописывал и www-data

sudo chown -R www-data:www-data www/
>ls -l
-rw-rwSr-- 1 www-data www-data
>ls -l -d
drwxrwsr-x 14 www-data www-data

и определитесь что именно у вас будет «подключено ссылкой».

Я пробовал всю папку www делать ссылкой (сайты-проекты в другом месте), так и отдельно папку проекта.

BaN ()
Ответ на: комментарий от BaN

sudo chown -R www-data:www-data www/

Это не сменит владельца того каталога, на который указывает ссылка.

Попробуйте прописать в DocumentRoot не /var/www/site, а тот каталог, на который указывает ссылка. Будет понятнее, проблема в символьной ссылке или в правах доступа.

mky ★★★★★ ()

/var/www или вложенную папку /var/www/site подключаю ссылкой

Какой ссылкой? Куда подключаешь?

Рекурсивно пробовал на www и site, везде где только можно вешать права
sudo chown -R www-data:www-data www/
www-data добавил в свою группу и наоборот

Убери ссылки, снеси апач из 90-х, установи нормальный веб-сервер (nginx), пропиши ему настоящий путь до файлов безо всяких ссылок, обеспечь чтобы его юзер мог их прочесть (только chmod 777 не ставь).

firkax ★★ ()
Ответ на: комментарий от mky

Сегодня после перезагрузки компа или может после того, как я права опять пробовал вчера менять опять всё сломалось и моя группа и мой пользователь уже не помог. Перепробовал несколько вариантов, всегда проблем с ссылкой.

Обратил внимание, что права на папках не отображаются через окно дельфина https://imgur.com/mw8waFA.png

Прямой путь на папку работает с правами моего юзера и Require all granted.

Без Require all granted выдаёт client denied by server configuration, а если поставить www-data access to /index.php denied (filesystem path '/media/banru/HOME') because search permissions are missing on a component of the path. Этот путь сейчас ничего общего с /home не имеет, это старая папка home на подключаемом разделе.

Смысл всех этих манипуляций в том, что куча проектов лежит в одной папке, на не системном диске, я её линковал на var/www/ и также линковал от туда site.config в апач. И ничего не перенастраивая, не прописывая заново пути, все проекты цеплялись.

Давно помню мод подключал (не помню название) и прописывал AssignUserId banru banru

@firkax

Какой ссылкой? Куда подключаешь?

Да по разному. Symlink как саму папку www делал, так и внутри отдельно папки с сайтами.

BaN ()
Последнее исправление: BaN (всего исправлений: 1)
Ответ на: комментарий от BaN

Прямой путь на папку работает с правами моего юзера и Require all granted.

Вы всё время пишите расплывчато, лучше приводите вывод комады ″ls -d -l″. И что при этом прописано в apache2.conf?

/var/www указан вне VirtualHost? Там для ″<Directory />″ разрешены симлинки?

Далее, я просил показать вывод ls -l для символической ссылки, чтобы проверить, что её владелец (владелец файла-ссылки), а не каталога, на который она ссылается, совпадает с владельцем каталога. Вы показали:

-rw-rwSr-- 1 banru banru

Это хрень. Для ссылки права доступа всегда lrwxrwxrwx. Куда она ссылается вы тоже показывать не стали. И всё время от вас идёт смена условий — «Да по разному», сложно понять, что у вас там сейчас в данный конкретный момент. Допустим, нет ли в остальных конфигах ещё одного VirtualHost на этот каталог...

Судя по:

Или в apache2.conf прописать своего юзера и свою группу, то ссылки тогда работают, независимо от того какой юзер и группа (www-data или мойюзер)

проблема с правами, а не с символической ссылкой. Апач работает от того пользователя/группы, который прописан в конфиге. Емнип, не читает /etc/group. Раньше вы это решали с помощью mod_itk, может он ещё есть в вашем дистре...

mky ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.