可以为传输文件提供一种安全的网络的加密方法。SFTP 其实是SSH的其中一部分,是一种客户端传输文件至服器的安全方式。
其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件信息传输子系统,SFTP本身没有单独的守护进程,它必须使用ssh守护进程(端口号默认是22)来完成相应的连接和答复操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。
测试验证sftp文件权限
1、/etc/ssh/sshd_config中的sftp配置
我们使用FileZilla工具上传一个问题test.txt, 可以看到文件默认的权限是644,即所有用户可读。
2、如果我们想控制上传的文件权限更小一些吗,应该怎么做呢?
通过如下配置指定sftp上传文件权限的unmask为0077,我们在使用FileZilla工具看一下
权限变成了600,为啥会变成600呢?644 - 077 = 600文件的默认权限减去指定的umask
那么我们想上传的文件权限为400怎么办呢,有了上面的验证,我们可以将umask指定为0277试试
可见也是没有问题的。
3、以上我们是在windows上上传的文件, 下来我们看下linux上作为客户端上传呢?
客户端600
服务端umask 0277 对应文件权限为400
上传后服务端文件权限为400, 可以看出应该是客户600权限和服务端400权限与的结果。
我们继续在验证下:
客户端200
服务端umask 0277 对应文件权限为400
上传后服务端文件权限为000,因为200只有写权限,400只有读权限,与之后的就没有权限。
总结
1、上传后文件的权限取决于客户端文件权限和服务端umask值,客户端文件权限和服务端权限与的结果。
2、通过umask值可以控制文件上传后的权限, 但是sftp上传文件的权限主要由客户端决定,服务端只能缩小权限,但是无法放大权限。