对sftp账号提供读写权限的控制

场景:给特定的服务器提供sftp账号,提供文件上传,修改和删除功能,但不提供ssh访问,只能sftp登录操作。

处理方案:使用openssh-server,使用sftp实现

具体操作:
1、ssh -V 保证版本在4.8p1以上;
2、grouadd sftpusers 用于管理sftp账号的组
3、useradd -s /bin/false -G sftpusers sftpuser1
将用户的shell设置为/bin/false使他没有登陆shell的权限

4、vi /etc/ssh/sshd_config
修改 Subsystem 为:
Subsystem sftp internal-sftp
然后再到文件最尾处增加配置设定属于用户组sftpusers的用户都只能访问他们自己的home文件夹
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
保存并关闭文件
5. 修改sftpuser1用户home文件夹的权限,让其属于root用户
chown root:sftpusers ~ sftpuser1
chmod 755 /home/sftpuser1 如果给予写的权限的话,需要下面新增目录
mkdir write
chown sftpuser1:sftupusers ./write
chmod 775 ./write
tips: 因为 /home/sftpuser1 已经chroot 为 sftpuser1用户,不能也不建议扩大权限。
6. 重启sshd服务
service sshd restart
7. 测试用户账号
ssh sftpuser1@localhost
连接会被拒绝或者无法登陆
sftp sftpuser1@localhost
登陆后你会发现你的账号无法切换到除自己home目录之外的地方的
8 .如果让别人上传的文件,直接生效,也可以配置软链接关联到应用目录下去
如:把 home/sftpuser1/write/ 目录映射为 /www/app/
ln -s /home/sftpuser1/write/ /www/app/

常见问题:
如果你链接服务器的时候出现下面的提示:
Write failed: Broken pipe
Couldn’t read packet: Connection reset by peer
这个问题的原因是ChrootDirectory的权限问题,你设定的目录必须是root用户所有,否则就会出现问题。所以请确保sftp用户根目录的所有人是root, 权限是 750 或者 755。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值