SFTP - дать доступ на запись/удаление www-data и мне

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

cutecode
Сообщения: 9
ОС: Debian 9

SFTP - дать доступ на запись/удаление www-data и мне

Сообщение cutecode »

У меня есть папка /var/www/html
она принадлежит мне и группе www-data

Код: Выделить всё

drwxrwxrwx 3 alexander www-data 4096 окт 19 20:17 html
если скрипт PHP создает файлы, то они автоматом принадлежат пользователю и группе www-data

Код: Выделить всё

drwxr-xr-x 3 www-data  www-data 4096 окт 20 14:14 10782
и как следствие я не могу удалить эти файлы через SFTP

И наоборот, если я копирую файлы через SFTP, то www-data не может удалить мои файлы.


Как сделать чтоб мы оба могли удалять эти папки от своего имени?




Использую apache2.
В файле sshd_conf имею такое

Код: Выделить всё

Subsystem      sftp    internal-sftp

Match User alexander
        X11Forwarding no
        AllowTcpForwarding no
        AllowAgentForwarding no
        ForceCommand internal-sftp
        ChrootDirectory /var/www/html
спасибо
Последний раз редактировалось cutecode 20.10.2018 14:51, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: SFTP - дать доступ на запись/удаление www-data и мне

Сообщение serzh-z »

cutecode писал:
20.10.2018 14:36
Как сделать чтоб я мог удалять эти папки от своего имени?
Добавить пользователя alexander в группу www-data.
Спасибо сказали:
cutecode
Сообщения: 9
ОС: Debian 9

Re: SFTP - дать доступ на запись/удаление www-data и мне

Сообщение cutecode »

не помогло
я создал нового пользователя с группой dsupdates, и добавл пользователя ww-data в эту же группу.
они оба при создании файлов делают права для группы только для чтения, и как следсвие другой пользователь тойже группы может читать, но не удалять файлы
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: SFTP - дать доступ на запись/удаление www-data и мне

Сообщение serzh-z »

У internal-sftp есть опция `-u`. Можно установить нужную маску, типа: `Subsystem sftp internal-sftp -u 002`. Ну и скрипт PHP должен выставлять соответствующую маску при работе с файлами.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21246
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: SFTP - дать доступ на запись/удаление www-data и мне

Сообщение Bizdelnick »

Начнём с того, что PHP-скрипт вообще не должен иметь доступа на запись ко всему каталогу html. Он должен иметь право записывать файлы только в какой-нибудь отдельный подкаталог (или подкаталоги), для которого (которых) надо отключить интерпретацию php-скриптов. Иначе этой выставленной в интернет голой задницей может кто-нибудь соблазниться. Допустим, что этот подкаталог называется files, тогда на /var/www/html нужны права 755 alexander root, на /var/www/html/files — 775 alexander www-data.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
cutecode
Сообщения: 9
ОС: Debian 9

Re: SFTP - дать доступ на запись/удаление www-data и мне

Сообщение cutecode »

попробовал я сделать ключ -u 002 и действительно файлы стали копироваться на SFTP с правом на запись как для пользователя так и для группы.
Но www-data почемуто не может все равно удалять файлы. Хотя эти два пользователя принадлежат одной группе dsupdates

Код: Выделить всё

alexander@super:~$ id www-data
uid=33(www-data) gid=33(www-data) группы=33(www-data),1004(dsupdates)
alexander@super:~$ id dsupdates
uid=1002(dsupdates) gid=1004(dsupdates) группы=1004(dsupdates),33(www-data)
Я попробовал установить ключ -u 000, тогда www-data стал удалять файлы. Пока работаю так и вроде как бы устривает пока.

теперь для чего все это:
У меня в папке html две подпаки "input" и "updates"
1. в папку "input" пользователь dsupdates копирует файлы моей программы для обновлений через интернет
2. затем я запускаю php-скрипт через браузер и он "хамает" файлы из папки "input' создает подпапку в папке "updates" с номером следующей версии программы и перемещает туда только измененные файлы, сравнивая подпаки для предыдущих версий. Остальные файлы удаляет.
Моя програама при обновлении уже скачивает эти файлы из папки созданной php-скриптом.

пока вроде бы все работает как надо. Будут благодарен если поможете разобраться почему www-data не может удалять файлы с ключом -u 002
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: SFTP - дать доступ на запись/удаление www-data и мне

Сообщение serzh-z »

cutecode писал:
20.10.2018 22:13
Но www-data почемуто не может все равно удалять файлы. Хотя эти два пользователя принадлежат одной группе dsupdates
Потому что каталогом /var/www/html и файлами в нем владеет группа www-data, а не dsupdates. Маска 000 всего лишь задает полный доступ к файлу любому пользователю. С таким же успехом эти файлы сможет прочитать и nobody, а не только dsupdates.

Еще раз:

- Нужно добавить пользователя, который ходит по SFTP, в группу www-data
- Убрать из маски internal-sftp биты (002 вполне достаточно), маскирующие запись для группы
- В PHP-скрипте, который создает файлы, также нужно выставлять маску 002

Либо нужно пересмотреть модель безопасности для упомянутых файлов.
Последний раз редактировалось serzh-z 21.10.2018 18:51, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: SFTP - дать доступ на запись/удаление www-data и мне

Сообщение s.xbatob »

Ну, у вас, вероятно ext2..4 и поддержка acl. Так что разрешите себе запись в каталог через setfacl. Насчёт созданных файлов не уверен, но, по крайней мере, вы их сможете переименовать или удалить.
Спасибо сказали:
cutecode22
Сообщения: 31

Re: SFTP - дать доступ на запись/удаление www-data и мне

Сообщение cutecode22 »

serzh-z писал:
20.10.2018 23:15
Еще раз:

- Нужно ...
поигрался с правами доступа для группы, теперь -u 002 тоже заработало

спасибо большое
Спасибо сказали: