Форум русскоязычного сообщества Ubuntu


Автор Тема: При загрузке файла на сервер права выставляются в 600  (Прочитано 2278 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн flint2000

  • Автор темы
  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
Значит есть сервер в датацентре. На серваке сайт с возможностью пользователей загружать свои файлы.
ПО:
Ubuntu server 8.04.2 +вебмин и виртуалмин.
Проблема вот в чем:
На домашнюю директорию сайта стоят права как положено созданого юзера виртуалхоста т.е. user = мой_сайт. При загрузке файлов пользователями сайта посредством формы загрузки, в самого файла ставятся права 600 и юзер файла становится www-data т.е. апач. Что нужно сделать чтобы права по умолчанию ставились 644, т.к. каждый раз заходить под рутом и менять права, чтобы проверить файл это как-то неправильно. Помогите пожалуйста.


Пользователь решил продолжить мысль: 24 Март 2009, 12:51:29
Что никто не знает???
« Последнее редактирование: 24 Март 2009, 12:51:29 от flint2000 »

Оффлайн Nomadian

  • Участник
  • *
  • Сообщений: 232
    • Просмотр профиля
Из описания не слишком понятно  :-\.

На директорию стоят владельцы user:www-data и права 644 ? Т.е. более наглядно -rw- -r-- -r--.

Так как при загрузке через форму владельцем файла становится www-data == apache, добавление идёт от имени процесса apache, а не user-а ???.

Возможное решение - sticky bit в правах директории. При этом кто бы не создавал файлы, они будут наследовать владельца, группу и права, определённые для каталога. Кому давать sticky bit, необходимо проверить на практике...
- Предполагая, что через форму добавление идёт от имени www-data, т.е. apache, я бы, во-первых, дал sticky bit группе
- Во-вторых, чтобы user, например, по ftp не создал бы файл с пользователем:группой - user:user, т.е. недоступный apache, я бы добавил sticky bit ещё и пользователю.

sudo chmod -R ug+s [директоррия]
- получится -rwS -r-S -r--

Должно работать, но... "практика - критерий истины"  :)

Оффлайн flint2000

  • Автор темы
  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
Из описания не слишком понятно  :-\.

На директорию стоят владельцы user:www-data и права 644 ? Т.е. более наглядно -rw- -r-- -r--.
На директорию стоят владельцы user:user и права 775, а на файлі которые загружаются туда при помощи php получают владельца www-data:www-data и права 600
Цитировать
Так как при загрузке через форму владельцем файла становится www-data == apache, добавление идёт от имени процесса apache, а не user-а ???.
Так и есть, но это не критично.
Цитировать
- Во-вторых, чтобы user, например, по ftp не создал бы файл с пользователем:группой - user:user, т.е. недоступный apache, я бы добавил sticky bit ещё и пользователю.
Апач с suexec так что www-data имеет право работать с файлами user.
Что интересно заметил. У меня стоит скрипт кеширующий конфиг и новости, так вот там апач файлы кеша создает с правильными правами т.е. 644

Оффлайн Nomadian

  • Участник
  • *
  • Сообщений: 232
    • Просмотр профиля
Цитировать
На директорию стоят владельцы user:user и права 775, а на файлі которые загружаются туда при помощи php получают владельца www-data:www-data и права 600
775 - логичнее.

Сам с аналогичной проблемой не сталкивался, но вот, что нашёл...

Именно про Ubuntu 8.04 и php в Инете пишут http://www.mail-archive.com/suphp@lists.marsching.biz/msg00698.html, что подобная проблема бывает, если версия php < 5.2.8 и каталог для временных файлов php ("upload_tmp_dir") находится в той же файловой системе, что и целевая директория.

Предлагают либо обновить php до 5.2.8+, либо вынести "upload_tmp_dir" на другой / отдельный partition.

Оффлайн flint2000

  • Автор темы
  • Активист
  • *
  • Сообщений: 268
    • Просмотр профиля
Цитировать
На директорию стоят владельцы user:user и права 775, а на файлі которые загружаются туда при помощи php получают владельца www-data:www-data и права 600
775 - логичнее.

Сам с аналогичной проблемой не сталкивался, но вот, что нашёл...

Именно про Ubuntu 8.04 и php в Инете пишут http://www.mail-archive.com/suphp@lists.marsching.biz/msg00698.html, что подобная проблема бывает, если версия php < 5.2.8 и каталог для временных файлов php ("upload_tmp_dir") находится в той же файловой системе, что и целевая директория.

Предлагают либо обновить php до 5.2.8+, либо вынести "upload_tmp_dir" на другой / отдельный partition.
Спасибо за ссылку

 

Страница сгенерирована за 0.096 секунд. Запросов: 22.