Приветствую. Встретил (второй ответ тут) что есть документация к ОС которая говорит: Some web servers run as www-data. Web content should not be owned by this user, or a compromised web server would be able to rewrite a web site. Data written out by web servers will be owned by www-data.Web сервер работает под пользователем www-data, но этот пользователь не должен иметь доступ к "веб контенту". Как это понимать? А в первом ответе той темы наоборот говорится что каким пользователем запускаешь такой и должен владеть всеми теми файлами сайта.
Сервер должен иметь доступ к скриптам только на чтение, чтобы хакер через PHP не мог ничего вписать в index.php или куда-то ещё. Исключение – только папки для логов, кеша или uploads, в которые он специально пишет сам.
Глянул на виртуальном хостинге своих сайтов у таймвеб и рег.ру владельцем всех файлов и пользователем апача(выполняю из браузера скрипт в котором echo exec('whoami')) является один пользователь. Не знаете, это у них так специально сделано? Например чтобы упростить клиентам администрирование?
@Дюран Тебе нужно разобраться с правами пользователей. Теми самыми приславутыми 777. Каждый сервис запускается от имени какого то пользователя. Припустим это apache а файлы у тебя залиты под пользователем duran с правами 644 в итоге смотреть файлы могут все а вот редактировать может только duran. Зато apache может создать свой файл если на директории 777 и вот тогда он уже сможет и читать и писать или 755 если пользователи в одной группе и т.д
Я понимаю про права, ищу правильный вариант для lamp, что пока не пробовал, имеет недостатки. Вот пример проблем. Имею Убунту, все собрано руками, имею своего пользователя duran В var/www создаю директорию для своего сайта var/www/mysite.com и делаю ему владельца/группу www-data:www-data как говорят много где в т.ч. в прикрепленной теме этого раздела. Но получится что duran не может туда файлы свои кидать, а надо же, мне там разработку вести. Ну ладно добавляю duran в группу www-data. Теперь duran может создавать там свои объекты ФС. Но 1) разрабатывая на YII, генерируя конфиги и код через GII, апач создает свои файлы по умолчанию с доступом 644 и duran не может их редактировать. т.е. надо umask апачу изменить чтобы создавал с 664 2) Насчет директорий созданных duran-ом. Вот создал я директорию models, хочу чтобы gii туда модели создавал, но апач не имеет доступа к директориям дюрана на запись (у нее 775). Так что теперь www-data добавить в группу duran? А не проще уже тогда апач запускать под duran-ом? Или создал duran директорию свою и должен менять ей владельца на www-data (777 не хочу назначать) 3) Тоже касается и файлов, созданных duran-ом, если апачу нужен доступ к ним, владельца им менять? Т.е. с 2-умя пользователями в одной папке как то все не сильно просто получается. Еще видел советы где директориям ставят владельца/групу duran:www-data и флаги s проставляют чтобы переносилось на новое, но также на практике это все не для всех сценариев работает и очень запутывает.
На продакшене так и делают chown duran:www-data, не добавляя duran в группу www-data, и дают права 750 на папки и 640 на файлы. А на локальном девелоперском компьютере можете спокойно ставить 777 для gii и после генерации сделать обратно вручную chown. Шаред-хостинги для своего удобства запускают все процессы от каждого пользователя, чтобы никто по сайтам соседей от имени общего www-data не лазил.
А вот эти пользователь/группа duran:www-data проставляются там всем каталогам и файлам? Просто думаю как это автоматизируется, не запоминать же что залил туда. Например гитом подтянул туда новое, у нового будет походу duran:duran и можно с корня_сайта вот этот рекурсивный chown -R корень_сайта. И останется следить что за пути надо открыть на запись группе www-data. Да? В смысле что тоже надо всем делать владельца/группу duran:www-data и на нее перенастраивать то что сгенерирует gii? А всякие git и composer из консоли работают, они будут duran:duran проставлять, это все фиксится вот этим рекурсивным chown от корня?