添加多个sftp账户

操作系统: ubuntu
sftp账户:user1,user2,user3

一、新添加账户只有读的权限

1.创建用户
useradd user1
2.设置用户密码
passwd user1
3.禁止该用户通过ssh登录
usermod -s /bin/false user1
4.修改用户家目录

家目录设置为/sftp/user1/

usermod -d /sftp/user1/ user1
5.用相同的方法为user2和user3进行配置

1-4步做完之后:
user1的家目录为/sftp/user1/
user2的家目录为/sftp/user2/
user3的家目录为/sftp/user3/

6.配置sshd_config

vi进入配置文件vi /etc/ssh/sshd_config
将这一行Subsystem sftp /usr/lib/openssh/sftp-server注释,在文件末尾添加如下配置

Subsystem sftp internal-sftp
Match user user1,user2,user3
ForceCommand internal-sftp
ChrootDirectory /sftp/%u

%u很重要,代表不同的用户目录,不能漏了,

如果不想用户名目录(user1)出现在家目录中,则修改家目录,如:usermod -d /sftp/pay/ user1,其他家目录也做修改:
user1的家目录为/sftp/pay/
user2的家目录为/sftp/product/
user3的家目录为/sftp/staff/
在sshd_config文件中做出相应的修改
Subsystem sftp internal-sftp
Match user pay,product,staff
ForceCommand internal-sftp
ChrootDirectory %h
%h指用户家【主】目录

7.重启配置完成
service sshd restart
8.验证

sftp登录后,用cd /看看能否跳到上级目录,跳不出去就对了

sftp user1@yourIP
//输入密码
cd /

二、为新账户增加写的权限

在user1目录下创建data目录,修改权限

mkdir /sftp/user1/data
chown -R user1:root /sftp/user1/data

这样user1登录sftp账户后就可以在data目录里写文件了,但是不能对data目录操作,因为没权限。
是不是将根目录的拥有者修改为user1就可以了呢,不知道,自己试吧

chown user1 /sftp/user1/

三、可能会遇到的问题

sshd重启报错:Directive 'UseDNS' is not allowed within a Match block

以下两段配置调整顺序,将配置sftp根目录【ChrootDirectory】的代码段放到文件最后

Subsystem sftp internal-sftp

Match user user1,user2,user3
ForceCommand internal-sftp
ChrootDirectory /data/wwwroot/%u

UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIV
PasswordAuthentication yes

参考:
https://www.cnblogs.com/xjnotxj/p/6912471.html

你可能感兴趣的:(添加多个sftp账户)