Все мои загруженные файлы имеют непригодные для использования разрешения.

Все мои загруженные файлы имеют непригодные для использования разрешения.

Я только что переехал на новый сервер и столкнулся со странными проблемами с правами доступа.

Каждый загруженный мной файл имеет разрешение 600, принадлежит учетной записи пользователя и также находится в той же группе. С этим разрешением сервер не может вносить изменения в эти файлы.

Папка, в которую я загружаю данные (через обычный sftp), имеет права доступа 755.

Почему все новые файлы, которые я сюда загружаю, получают это разрешение 600? И как мне изменить его, чтобы добавленные файлы получали разрешения, позволяющие веб-серверу изменять их?

Примечание: Я установил vsftpd, в котором есть настройка для определения umask по умолчанию. Вход через этофтпработает как и ожидалось. Однако это не решает проблему при входе черезsftp.

решение1

Мое основное решение этой проблемы — создать скрипт, который находится между SSH и SFTP и изменяет umask при входе пользователя в систему:

> vim /opt/sftp-server.sh

#!/bin/bash
umask 022
/usr/libexec/openssh/sftp-server

Затем отредактируйте файл конфигурации ssh_d (/etc/ssh/sshd_config) и отредактируйте строку sftp SubSystem так, чтобы она указывала на ваш скрипт:

Subsystem       sftp    /opt/sftp-server.sh

Убедитесь, что вы правильно установили разрешения для нового скрипта:

> chmod 755 /opt/sftp-server.sh

Теперь файлы, загружаемые через SFTP, должны иметь права 755!

http://blog.mrmason.net/2009/05/27/changing-default-file-permissions-for-sftp/

решение2

sftp-сервер — это подсистема sftp, обычно используемая с openssh.

При более внимательном рассмотрении команды:

$ /usr/lib/openssh/sftp-server -h
usage: sftp-server [-ehR] [-f log_facility] [-l log_level] [-u umask]

Поэтому мы можем установить umask по умолчанию для соединений, передав ключ -u при инициализации. В /etc/ssh/sshd_configтом месте, где определена подсистема sftp, найдите строку.

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

и измените его так, чтобы он выглядел так:

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

Чтобы разрешить созданным файлам иметь umask по умолчанию 644, а файлам 755

Помните, что этот параметр является глобальным и повлияет на все файлы, передаваемые по SFTP, поэтому перед его реализацией примите меры безопасности.

Связанный контент