Разрешение SFTP запрещено в файлах, принадлежащих www-data

У меня довольно стандартный сервер, настроенный на работу с 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, пока я, наконец, не попробовал его. Спасибо!

Обзор

Файлы и каталоги в /var/www должны принадлежать root:webmasters. Все разработчики должны быть членами группы webmasters. Все каталоги в /var/www должны установите значение 2775 или u=rwx,g=rwxs,o=rx (rwxrwx-rx). Все файлы в /var/www должны быть установлены на: 0664 или ug=rw,o=r (rw-rw-r--)

Следующее должно принадлежать www-data:webmasters (т.е. это каталоги, которые Apache должен иметь возможность записать):

Файлы и каталоги в /var/www должны принадлежать root:webmasters application / logs Все разработчики должны быть членами группы webmasters client_helpers / upload

HOWTO

Чтобы установить разрешения на , где ваши файлы обслуживаются по умолчанию:

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 {} \;

1
задан 13 April 2017 в 15:24

1 ответ

Я заметил, что вы не использовали 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

6
ответ дан 25 May 2018 в 05:53
  • 1
    Привет, спасибо, что нашли время ответить, это очень ценится. Однако это действительно не помогает. Выделение файлов делает ВСЕ их неизменяемыми при использовании SFTP (так что это противоположность тому, что мне нужно!). Я не могу использовать обходное решение chmod, потому что a) у меня нет прав на chmod в SFTP; б) Я действительно не хочу входить в систему через SSH, изменять разрешения, выполнять SFTPing, менять обратно и т. д .; и в) некоторые файлы имеют разные разрешения по соображениям безопасности, поэтому я все равно не могу chmod en masse. – Charles Roper 4 October 2012 в 17:36
  • 2
    Что /var/data? Кроме того, в каком каталоге вы указываете, что он использует команду chown -R www-data:www-data? Надеюсь, не /var/www. – Marty Fried 6 October 2012 в 05:47

Другие вопросы по тегам:

Похожие вопросы: