Назад | Перейти на главную страницу

SFTP-сервер загружает файлы с неправильными правами

Я пытался понять, что не так с правами файла. Когда я загружаю файлы с помощью FileZilla, все файлы получают права -rw-r - r--. Я бы хотел, чтобы у них было -rwxr-xr-x. Я пробовал использовать umask для исправления прав, но что-то не так. Я читал, что вы можете изменить права с помощью umask, например:

В / etc / ssh / sshd_config измените следующее:

Subsystem sftp /usr/lib/openssh/sftp-server -u 002

С этим изменением я получаю файлы с -rw-rw-r--. Насколько я знаю 0 должен давать все права? Но я получаю только rw.

В чем дело? Я использую Debian.

Если SFTP-клиент не указывает разрешения для загруженных файлов, SFTP-сервер OpenSSH назначает разрешения 0666 вновь созданным файлам (минус umask 0002 дает 0664).

Это жестко запрограммировано, вы не можете его изменить. Увидеть process_open() функция в sftp-server.c OpenSSH. И даже если это не было указано явно, 0666 по-прежнему является значением * nix по умолчанию для файлов, вы не можете просто изменить это с помощью umask (это верно в целом, а не только для OpenSSH).

Смотрите также Использует ли SFTP-сервер OpenSSH umask или сохраняет ли разрешения на стороне клиента после команды put (chrooted среда)?

Обратите внимание, что ваша маска на самом деле неверна. Если вам нужен 0644, используйте umask 0022, а не 0002.

FileZilla никогда не указывает разрешения для загруженных файлов. Что приводит к тому поведению, которое вы испытываете.


Чтобы получить желаемые разрешения:

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

  • Используйте SFTP-клиент, который позволяет указывать разрешения для загружаемых файлов.

    Например, WinSCP позволяет это.

    Видеть https://winscp.net/eng/docs/ui_transfer_custom

    (Я автор WinSCP)