Хао.
Помогите глупенькому понять где проблема.
Есть веб-система. Пользователи грузят в неё файлы.
Файлы "как есть" пишутся с определённым пользователем и правами 0644
И есть доступ по FTP. Другой пользователь.
И надо, чтобы пользователь по FTP мог удалять файлы, созданные php-шным скриптом, который загружаемые файлы обрабатывает.
Что надо сделать?
В начале была мысль, после загрузки файла cmod'ом выставлять права 0666.
Из логики, что если есть права на запись, то можно удалить.
Нифига, 502 Permission denied (FileZilla).
Окей, чисто для эксперимента (ибо понимаю, что нельзя так) выставил 0777.
Отлично, файлик загрузился, FileZilla радостно сообщает, что у него 0777 права... но удалить не даёт.
Соответственно вопрос - что нужно делать с файлом после загрузки, чтобы потом можно было по ftp его удалять спокойно?
А то я чего-то туплю уже и/или вообще не въезжаю в механизм.
upd: Пришла мысль, что дело в правах папки, куда грузятся файлы. Окааай, выставил на неё 0666 скриптом.
То бишь, вроде как Чтение + Запись.
В итоге получил странный момент - FileZilla теперь вообще в эту папку войти не может.
Что вызывает у меня ещё большее непонимание. Если есть права на Чтение, почему нельзя прочитать папку и получить список её содержимого, что ftp-клиент сделать пытается?
Решено: Дело было всё же в правах на папки.
Не знаю, насколько это правильное решение, но пока оставился на следующем.
Т.к. после загрузки файла его нужно положить в определённое место, в зависимости от ряда параметров, путь к файлу "собирается" по кусочкам.
Исходя из этого, решение следующее - на каждом шаге сборки итогового адреса файла, очередному "звену" цепочки присваиваются права 0777.
Когда адрес собран целиком (то бишь, в конце собсно само имя файла) - файлу присваивается 0666.
В итоге, можно по ftp спокойно удалять всё что необходимо, файл доступен по прямой ссылке в браузере, но не является исполняемым.
Пока так. Если что можно/нужно сделать иначе, буду рад консультации.)