操作系统: 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