sftp 配置

Linux 系统默认安装了Openssh,sftp作为其中的一个组件也默认安装。我们获取private key之后可以直接sftp连接并使用,不需要修改默认配置。

我们修改sftp配置的目的是:限制特定用户只能在特定目录的访问。比如:用户UserA,只能读取/data/usera,可以上传文件到/data/usera/upload。

实操过程:

测试环境:Azure VM, redhat 7.4

用户部分

创建用户

useradd -s /sbin/nologin sftpuser

设置用户密码

passwd sftpuser

创建sftp根目录,更改所有者和权限(这是sftp服务的特殊需求,必须这么改)

mkdir /home/sftpuser
chown root /home/sftpuser
chmod 755 /home/sftpuser

[注意]必须是root,权限最大是755,也可以改成750

创建上传文件夹,改owner

mkdir /home/sftpuser/upload
chown sftpuser /home/sftpuser/upload
chmod 755 /home/sftpuser/upload

sshd部分

配置sshd_config

vi /etc/ssh/sshd_config

修改内容如下:

Subsystem sftp /usr/libexec/openssh/sftp-server  ## 这一行注释掉

文件底部添加下面内容:

 Subsystem sftp internal-sftp
 Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    PasswordAuthentication yes
    PermitTunnel no
    X11Forwarding no
    AllowTcpForwarding no
    AllowAgentForwarding no

重启ssh服务

systemctl restart sshd

测试

sftp sftpuser@localhost

在用户登录测试过程中,可能会遇到如下错误:

​         Couldn't read packet: Connection reset by peer

可能是目录权限导致了该问题, 例如 /a/b/c 每一级目录owner都是root,不仅仅是最后一级目录。

特殊需求

如果sftp 定义的主目录跟其他账号共用,直接改这个目录的owner会导致原账号不能用。
解决办法:使用setfacl 命令,设置一个目录有多个owner,都有读写权限。例如:

setfacl -R -m d:u:UserA:rwx /home/sftpuser

[注] ACL 权限控制主要目的是提供传统的 owner,group,other 的 read,wirte,execute 权限之外的具体权限设置,ACL可以针对单一用户、单一文件或目录来进行r,w,x的权限控制,比如:某一目录权限为
drwx------ 2 root root 4096 03-10 13:51./acldir
用户 user 对此目录无任何权限因此无法进入此目录,ACL 可单独为用户 user 设置这个目录的权限,使其可以操作这个目录

如果还不行,就只考虑upload目录,把它link 到UserA的工作目录:

mkdir /home/sftpuser/upload
chown sftpuser /home/sftpuser/upload
chmod 755 /home/sftpuser/upload
setfacl -R -m d:u:UserA:rwx /home/sftpuser/upload
ln -s /home/sftpuser/upload /home/UserA/upload

这样,两个账号就都可以对upload目录操作。

[注] 反过来不行,即UserA的所有者目录,通过setfacl 给sftpuser 加权限,但sftp服务不能识别。
还可以扩大目录权限到777,不用setfacl,这样也可以,具体如下。

mkdir /home/sftpuser/upload
chown sftpuser /home/sftpuser/upload
chmod 777 /home/sftpuser/upload
ln -s /home/sftpuser/upload /home/UserA/upload
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,925评论 6 342
  • 缘由:网上google出来的东西要么排版太丑要么啥都没有 安装 限制目录 ftp 在 /etc/vsftpd.co...
    xzing阅读 595评论 1 0
  • 感悟:合理安排时间,三分之一观察留意,三分之一确认标准剩余的三分之一去确定自己最满意的,不要太早下手,也不要太晚下...
    临淄茂业DDM黄红阅读 167评论 0 0