Посоветуйте как правильно рсставить права доступа на папки и каталоги

Аватар пользователя Turbid Turbid 11 августа 2008 в 17:23

Хостинг на valuehost, система freebsd, apache запущен от User/Group: nobody(65534)/8080

На данный момент права выставлены так:

$ ls -l
total 10
d--x--x--x 2 aghk37 apache 512 6 авг 13:30 bin
drwsrwx--- 2 aghk37 apache 512 6 авг 13:30 cgi-bin
drwsr-x--- 3 aghk37 apache 512 7 авг 11:18 htdocs
drwsrwx--- 2 aghk37 apache 512 6 авг 13:30 logs
drwsrwxrwx 2 aghk37 apache 512 11 авг 12:50 tmp

ls -l htdocs/sites/default/
total 22
-rw-r--r-- 1 aghk37 apache 8945 8 авг 13:57 default.settings.php
drwsrwxrwx 2 aghk37 apache 512 11 авг 12:49 files
-rw-r--r-- 1 aghk37 apache 8955 8 авг 15:38 settings.php

Спрашиваю потому, что сам запутался. Все началось с того, появились проблемы после установки движка - не хотел импортироваться файл перевода - отпралял на 502 Bad Gateway (nginx/0.5.35). Сами файлы модулей откладываются в каталоге tmp. Помучавшись я решил на всякий случай переустановить и движок и столкнулся со следующим - не смог удалить папку sites. Впоследствии выяснилось что это было по причине того, что у каталога files оказался владелец nobody, а не aghk37. Пришлось обращаться в теххподдержку за помощью - они потерли. При повторной установке полуилась таже ситуация. Техподдержка мне вот что посоветовала:
"Проблема изначально в неправильно выставленных правах на каталог, для того что бы не создавались файлы с владельцем nobody необходимо что бы на каталогах был выставлен s-бит, делается это командой вида chmod 4***. Что касается владельцев - поправили и сейчас на всех файлах стоит правильный владелец - вы. Поправьте права на директории."

Как всеже правильно расставить права на папки\файлы. В частности интересует папка tmp, files и в общем случае для htdocs и остальных файлов-каталогов движка?

0 Thanks

Комментарии

Аватар пользователя Turbid Turbid 12 августа 2008 в 17:01

Значит сделал так: на все папки поставил права 4770, на все файлы - 660. Только а папку files поставил chmod o+w.

При попытке импортировать файл руссификации получаю 502 Bad Gateway (nginx/0.5.35), причем файл откладывается в папке tmp. При создании страницы вверху страницы висит строчка: "warning: chmod() [function.chmod]: Operation not permitted in /pub/home/aghk37/htdocs/ughk/includes/file.inc on line 131". При попытке приатачить к этой же странице файл получаю мессагу: An HTTP error 0 occurred.
/upload/js.

Аватар пользователя Nikit Nikit 13 августа 2008 в 5:52

файл .htaccess записал в папку, но не смог поставить 0664 на него. проверь на files и tmp

Аватар пользователя Turbid Turbid 13 августа 2008 в 8:10

>файл .htaccess записал в папку, но не смог поставить 0664 на него.

почему так произошло?

>проверь на files и tmp
drwsrwx-w- files
drwsrwx--- tmp

Аватар пользователя Hades Hades 1 марта 2015 в 11:42

Очень не плохой скрипт был дан в комментарии... https://www.drupal.org/node/244924#comment-6600078
Изменил и доработал его под себя:

# Script made by Alex Belyj, admin@azfest.ru
echo "Начинаю изменение прав..."
echo "Устанавливаю владельца www-data для всех папок и файлов"
chown -R www-data:www-data './'
echo "Выставляю права 755 для всех папок"
find './' -type d -exec chmod 755 {} \;
echo "Выставляю права 644 для всех файлов"
find './' -type f -exec chmod 644 {} \;
echo "Выставляю права 440 для .htaccess"
chmod 440 './.htaccess'
echo "Выставляю права 775 для tmp"
chmod 775 './tmp'
echo "Выставляю права 440 для tmp/.htaccess"
chmod 440 './tmp/.htaccess'
echo "Выставляю права 775 для sites"
chmod 775 './sites'
echo "Выставляю права 775 для sites/default"
chmod 755 './sites/default'
echo "Выставляю права 775 для sites/default/files"
chmod 775 './sites/default/files'
echo "Корректирую права g+w для поддеррикторий sites/default/files"
chmod g+w -R './sites/default/files'
echo "Выставляю права 440 для sites/default/files/.htaccess"
chmod 440 './sites/default/files/.htaccess'
echo "Выставляю права 440 для sites/default/settings.php"
chmod 440 './sites/default/settings.php'
echo "Выставляю права 440 для sites/default/default.settings.php"
chmod 440 './sites/default/default.settings.php'
echo "Выставляю права 775 для sites/all/themes"
chmod 755 -R './sites/all/themes'
echo "Выставляю права 775 для sites/all/modules"
chmod 755 -R './sites/all/modules'
echo "Выставляю права 775 для sites/all/libraries"
chmod 755 -R './sites/all/libraries'
echo "Изменение прав закончил! Убедись, что всё верно..."

1. Скопируйте код скрипта и сохраните под названием "permissions.sh". Соблюдайте кодировку UTF-8 (для нормального отображения кириллических символов в комментариях echo командной строки) и UNIX формат окончания строк (иначе получите /R в конце каждой строки):

nano /var/www/permissions.sh

2. Скопируйте файл permissions.sh в корень вашего сайта Drupal 7:

cp /var/www/permissions.sh /ваш_сайт

3. Перейдите в корень вашего сайта:

cd /ваш_сайт

4. Выполните команду:

bash permissions.sh

PS: Если у вас "чистый" Drupal, то некоторые папки, например libraries или files, ещё могут быть не созданы. Так же если вы используете папку tmp вашей ОС, то в вашем Drupal её не будет. В этом случае выведется ошибка, что файла или папки не существует - это нормально. Рекомендую пользоваться скриптом на финальных этапах разработки или при переносе на хостинг, когда вся структура файлов и папок уже создана.
PSS: Работа скрипта многократно проверена на Drupal 7 сайтах в ОС Debian 7 Wheezy.

Аватар пользователя Egmont Egmont 21 августа 2017 в 12:59

Работает Ваш скрипт и в Друпал 8 OS Debian 8.9 (на последней версии drupal-8.36) у меня. Так что пригодилось. Спасибо.
На локалхост. Но, если Друпал 7 без вопросов, то в Друпал 8 старая побочка. Не войти в меню. То есть известная тема.
The request URL /login was not found on this server. Обхожу это через domen/index.php/update.php . И остается в пути URL index.php Навсегда. Я чайник, но я прочитал всё по - этому. Но не лечится. (Впрочем, это же и в VDS там тоже на Debian ось.) А в windows такого не было и с друпал 7 и с друпал 8. Так просто пишу. Скрипт ценный. Из readme, что написано не срабатывает, а Ваш скрипт четко.