LINUX.ORG.RU

Сменить владельца файла на себя


0

1

Есть директория, принадлежащая мне. В директорию производится заливка файлов с помощью nginx+upload_module. Засада в том, что файлы при этом принадлежат пользователю, под которым запущен nginx, а надо, чтобы мне.

При попытке сделать chown чужого файла себе меня посылают нафиг. Это при том, что он лежит в моей директории, я имею права на запись к директории и к самому файлу и могу его нафиг удалить, переименовать и сделать всё, что угодно, кроме того, что, собственно, нужно.

Пробовал:

  1. Поставить suid bit на директорию, оказывается, фиг там, можно только sgid, а suid игнорится. Но факт принадлежности файла группе, в которой я состою, всё равно не даёт мне права забрать его себе.
  2. Сделать хардлинк на файл, удалить оригинал, переместить хардлинк на место оригинала. Фиг там, хардлинк сохраняет права и владельца оригинального файла.

Можно, конечно, тупо скопировать файл и удалить оригинал. Права на директорию (т. к. она моя) это позволяют. Но файл может весить до фига и на нагруженном сервере это лишнее копирование нафиг не надо.

Файл после загрузки должен обрабатываться рельсовым приложением, запущенным через passenger, прикрученный к этому же nginx'у. Пассажир запускает приложение под тем юзером, которому принадлежит конфиг, соответственно, подо мной. Файло перемещается из директории, куда его положил nginx, в директорию приложения, после чего приложение пытается выставить на него правильные права доступа и отправить на дальнейшую обработку. А хрен — права не выставить, т. к. файл чужой.

Пока что вижу такие варианты:

  1. Запустить приложение под юзером nginx'a. Минус — неудобно его щупать при необходимости, придётся париться с sudo.
  2. Повесить смену владельца на закрытие файла в рутовый incrontab. Минус — костыль и надо запускать нафиг не нужный там incron.
  3. Запустить nginx под своим юзером. Минус — костыль, и если возникнет необходимость запустить другое приложение с аплоадами под другим юзером, то опять вылезут все те же траблы.

Есть ли возможность как-то забрать файл без танцев с бубном и без копирования?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 3)

Минус — костыль

Это не костыль, он для такого и создан.

Dron ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.