Задать вопрос

Удалить файл, созданный www-data?

Есть пользователь user на сервере, и директория www в его домашней папке. В ней находится PHP-скрипт, который позволяет загружать файлы на сервер.


Владельцем всех файлов, загруженных скриптом становится www-data.

Проблема в том, что удалить, зайдя по ssh эти файлы нельзя (Permission denied) ибо user не имеет прав на операции с файлами www-data.


Так как удалить эти файлы?


ОС- Ubuntu Server 10.04.
  • Вопрос задан
  • 5891 просмотр
Подписаться 5 Оценить Комментировать
Решения вопроса 1
bigdogsru
@bigdogsru
Просто поставить Apache с MPM, тогда скрипты будут выполняться с правами пользователя, а не апача.
Ответ написан
Пригласить эксперта
Ответы на вопрос 8
barmaley_exe
@barmaley_exe
Так может с группами поиграться? Скажем, принудительно менять группу всем файлам в каталоге юзера или объединить www-data и юзера в одной группе.
Ответ написан
holyorb2
@holyorb2
если у вас есть root доступ, тогда удаляйте
sudo rm file

Как я понимаю что у вас нет такого доступа. тогда выход есть в суппорте или удаление через панель предоставляемую хостером. Например, в cpanel есть файловый менеджер, он должен удалять файлы.

Хотя я в таких случаях ОБЯЗАТЕЛЬНО говорю хостеру что бы мой акккаунт мог удалять файлы которые делают мои сайты и считаю это правильным выходом
Ответ написан
MiXei4
@MiXei4
Можно удалить файлы php-скриптом, либо подправить права на папки/файлы php-скриптом если хватит прав.
Ответ написан
Комментировать
darkslesh
@darkslesh
<? unlink('/path/filename.ext');?>
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
А нефиг пользовать ненастроенный mod_php.
Или в CGI переключайте режим php или нужных пользователей в группу www-data закиньте. Только от упоротых скриптов всё равно не спасёт в группу перекидывание.
Ответ написан
Комментировать
seriyPS
@seriyPS
Думаю надо сделать так:

1) загруженным файлам даем права rwx rwx r-- группа и пользователь соответственно www-data.
2) добавляем юзера в группу www-data.

Ну или правда что-то с ACL мутить. Можно на каждого юзера отдельный процесс апача запущенного от юзера, но это накладно и настраивать долго…
Ответ написан
Комментировать
Когда-то настраивал веб-сервер для нескольких пользователей под FreeBSD. Каждый пользователь имел свою папку. Всё, что находилось в папке и сама папка принадлежали этому пользователю, группа была www (от неё работал Apache). Для того, чтобы файлы создаваемые веб-сервером принадлежали пользователю была использована SUIDDIR (chmod 4770). Т.е. ко всем создаваемым файлам от имени www происходила подмена пользователя на того, которому принадлежала папка.
Практически всё работало, кроме одного — не загружались файлы через php. Проблема возникала из-за того, что файл грузился во временную папку и получал права 600. В результате только что загруженный файл php перенести не мог на место назначения.
Ответ написан
LoneCat
@LoneCat
Сделайте chmod загруженных файлов 666 (не сочтите за злое колдунство :)), и удаляйте как хотите, первая цифра — права владельца на файл, вторая — права группы на файл, третья — права любого пользователя, 6 — право на чтение/запись.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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