我上传的所有文件都有不可用的权限

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

我上传的每个文件的权限都是600,由用户帐户拥有,并且也在同一个组中。 有了这个权限,服务器无法修改这些文件。

我上传到的文件夹(通过普通的sftp)拥有755的权限。

为什么在这个600的许可下,我上传的任何新文件? 而我该如何改变它,使添加的文件被授予权限,以便他们可以通过networking服务器进行修改?

注意:我安装了vsftpd,它有一个设置来确定默认的umask。 通过这个ftplogin,它按预期工作。 但是,当通过sftplogin时,这并不能解决问题。

我的基本解决scheme是创build一个位于SSH和SFTP之间的脚本,并在用户login时更改umask:

 > vim /opt/sftp-server.sh #!/bin/bash umask 022 /usr/libexec/openssh/sftp-server 

然后编辑ssh_dconfiguration文件(/ 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/

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子系统,find该行。

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

并将其更改为如下所示:

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

允许创build的文件具有默认的644和文件755的umask

请记住,此设置是全局性的,将影响通过sftp传输的所有文件,因此在实施前要考虑安全性。