У меня довольно стандартный сервер, настроенный на работу с Apache и PHP. Приложение, которое я запускаю, создает файлы, и они принадлежат пользователю Apache www-data. Файлы, которые я загружаю через SFTP, принадлежат моему собственному пользователю charlesr. Все файлы являются частью группы www-data. Моя проблема в том, что я не могу изменять или перезаписывать любые файлы через SFTP, которые принадлежат www-data, хотя charlesr является частью группы www-data. Я могу изменить файлы без проблем через сеанс SSH.
Поэтому я не уверен, что делать. Как предоставить мои разрешения SFTP-сеанса для изменения файлов www-data?
Для небольшого фона эти заметки я написал для себя при настройке сервера:
И затем я продолжаю объяснять себе, что означает бит CBID (т.е. все файлы, созданные в /var/www, автоматически становятся частью группы www-data).
Как мне разрешить мои разрешения SFTP-сеанса для изменения файлов www-data?
Кажется, что проблема была вызвана самим приложением или, более конкретно, (Kohana), устанавливая определенные файлы, которые он пишет в 0644 (rw-r-r--); т.е. нет возможности записи в группе. Это, в сочетании с тем, что файлы также принадлежат www-data, означало, что я не мог редактировать файлы через SFTP при входе в систему как charlesr. Я не уверен, почему я могу редактировать файлы через SSH. Я предполагаю, что я, должно быть, использовал sudo.
Вот стратегия разрешений, которую я теперь использую благодаря Kohana , который указал на недостатки в моей предыдущей стратегии, а также помог мне маринад в мире разрешений для Linux, пока я, наконец, не попробовал его. Спасибо!
Следующее должно принадлежать www-data:webmasters (т.е. это каталоги, которые Apache должен иметь возможность записать):
Файлы и каталоги в /var/www должны принадлежать root:webmasters application / logs Все разработчики должны быть членами группы webmasters client_helpers / uploadЧтобы установить разрешения на , где ваши файлы обслуживаются по умолчанию:
sudo addgroup webmasters sudo adduser $USER webmasters sudo chown -R root:webmasters /var/www sudo find /var/www -type f -exec chmod 664 {} \; sudo find /var/www -type d -exec chmod 775 {} \; sudo find /var/www -type d -exec chmod g+s {} \; sudo chown -R www-data:webmasters application/cache/ [и т. д.][d34 ] Теперь выйдите из системы и войдите в систему снова, чтобы изменения были удержаны.
Предыдущий набор команд делает следующее:
sudo addgroup webmasters добавляет текущего пользователя ($USER) в группу webmasters. sudo adduser $USER webmasters добавляет 664 разрешения (-rw-rw-r--) ко всем файлам в /var/www. sudo chown -R root:webmasters /var/www устанавливает бит SGID на /var/www и все его каталоги; этот последний пункт содержит некоторые объяснения. Обратите также внимание на то, что вы также можете поставить 2 в передней части восьмеричного xmod (например, 2644), чтобы сделать то же самое. sudo find /var/www -type f -exec chmod 664 {} \;Я заметил, что вы не использовали chown.
Чтобы правильно установить права собственности на файлы / папки, вы можете установить весь каталог следующим образом: chown -R www-data:www-data
Это устанавливает право собственности на группу www-data и пользователя www-data
. Также вы можете сделать это как временное обходное решение:
chmod 777 /var/data/<filename> или chmod 777 /var/data/<foldername>
отредактируйте файл (ы) по мере необходимости, затем
chmod 644 /var/data/<filename> или chmod 755 /var/data/<foldername>
Будьте осторожны с использованием переключателя «-R», так как он изменяет разрешения все файлы и папки.
664 - это стандартные права доступа к файлам Apache и 755 разрешений стандартной папки.
Надеюсь, что это поможет:)
Star