sftp账号创建和权限设置

操作前需先开启telnet服务,防止修改sshd_config后,sshd服务启不了

systemctl start telnet.socket

1 创建用户和用户组

创建sftpusers用户组,专门用于sftp用户

groupadd sftpusers 

创建test用户,将test用户的shell设置为/sbin/nologin禁止ssh登陆,且不创建用户家目录

useradd -g sftpusers -s /sbin/nologin -M test

设置用户密码

passwd test

2 编辑 /etc/ssh/sshd_config

注释Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下内容:

# override default of no subsystems
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User zjjkzc
ChrootDirectory /gfsdata/jkzc
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

多个用户,每个用户需要设置不同目录,可用以下方法:

# override default of no subsystems
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp -l INFO -f local5
Match User zjjkzc
ChrootDirectory /gfsdata/jkzc
Match User zhizhen_wz
ChrootDirectory /gfsdata/zhizhen_wz
Match User jt_wz
ChrootDirectory /gfsdata/zhizhen_wz
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no

修改后重启sshd服务,

systemctl restart sshd

如果重启报错,可以通过以下命令进行测试

/usr/sbin/sshd -t

3 用户目录

创建sftp根目录,使sftp用户在该目录下活动
目录权限设置上要遵循2点:(需要格外注意)

ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,也就是说权限最大设置只能是755。

4 测试

sftp test@ip

sftp和ftp虚账号结合使用

背景描述

目标端A通过sftp采集目录A下的a1和a2中的文件;
源端a和源端b通过ftp上传文件到目录a1和目录a2中。
sftp账号创建和权限设置_第1张图片

操作步骤:

1 账号创建

分别创建sftp账号test; ftp虚账号 vtest1、vtest2(归属于账号vtest)

2 账号权限

sftp账号权限设置:

若需要让test账号采集到vtest1和vtest2上传的文件,可将用户组vtest加到test上

usermod -a -G vtest test

设置vtest1和vtest2账号权限,增加anon_umask参数,让文件上传后的权限为644权限

 # vi /etc/vsftpd/v-conf/vtest1
local_root=/gfsdata/jkzc/jtkd
anon_world_readable_only=NO
write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_umask=022

你可能感兴趣的:(#,Linux应用)