我上传的所有文件都有无法使用的权限

我上传的所有文件都有无法使用的权限

我刚刚搬到一个新服务器并遇到了一些奇怪的权限问题。

我上传的每个文件的权限都是 600,由用户帐户拥有,并且属于同一组。有了这个权限,服务器就无法对这些文件进行更改。

我正在上传到的文件夹(通过常规 sftp)的权限为 755。

为什么我在这里上传的任何新文件都会被赋予 600 的权限?我该如何更改它,以便为添加的文件赋予权限,以便 Web 服务器可以修改它们?

笔记: 我安装了 vsftpd,它有一个设置来确定默认的 umask。通过此设置登录FTP它按预期工作。但这并不能解决问题,当通过安全FTP

答案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-server 是通常与 openssh 一起使用的 sftp 子系统。

仔细检查该命令后发现:

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

因此,我们可以在初始化时通过传递 -u 开关来设置连接的默认 umask。在/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 传输的所有文件,因此在实施之前请考虑安全性。

相关内容