Я настроил OpenSSH вот так
Subsystem sftp internal-sftp
Match Group sftp
ForceCommand internal-sftp -u 002
AuthorizedKeysFile /home/sftp/ssh/%u
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
Эта конфигурация работает, но есть одна проблема: файлы или папки, которые копируются с локального диска в sftp, сохраняют свои разрешения (обычно 755
) и никаких других sftp-user
имеет к ним доступ.
Другой sftp-users
иметь полные разрешения только в том случае, если кто-то создает папку или файл или копирует файл с разрешениями 775.
Есть ли способ, чтобы все файлы в sftp-directory
иметь 775
разрешения? На данный момент я использую chmod -R 775 /home/sftp/files/
установить его вручную, но это не то решение, которое я хотел бы иметь ...
Спасибо
При такой настройке это невозможно, потому что umask
недостаточно сильный инструмент для принудительного получения разрешений, если исходное разрешение ниже. Есть несколько решений, как с этим справиться:
Первый из них - ваш упомянутый chmod
, который вам нужно будет запускать периодически, чтобы все пользователи имели доступ ко всем файлам.
Другое решение -m
переключиться на sftp-server
, который решает эту проблему, устанавливая точные разрешения для вновь загруженных файлов. Но эта функция не является апстримом, но она доступна по крайней мере в RHEL / Fedora, особенно для этого варианта использования.