我刚刚搬到新的服务器,并遇到了一些奇怪的权限问题。
我上传的每个文件的权限都是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传输的所有文件,因此在实施前要考虑安全性。