2023-10-24 21:14:02
,某些文章具有时效性,若有错误或已失效,请在文末留言。SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种基于可靠数据流(data stream),提供文件存取和管理的网络传输协议。
与 FTP 协议相比,SFTP 在客户端与服务器间提供了一种更为安全的文件传输方式,如果你还在使用 FTP 来进行文件传输,强烈建议切换到更为安全的 SFTP 上来。
创建用户
Linux系统中创建用户命令:
useradd -d /server/data -m test
说明:
● -d /server/data 是设置改用户的默认目录,这里设置后面当作是该用户sftp访问时的根目录就是这个
● -m test 表示创建的用户账号为test
PS:这个方式不需要创建用户组,按照用户组的方式尝试之后,总是有点问题,不是目录权限问题造成的无法连接就是对指定目录的操作不对。如果在添加用户时提示没有权限或者用户已存在?请看文章最后面的解释。
设置密码
SFTP用户设置密码命令:
passwd test
说明:
● test 表示设置test用户密码
● 如果不允许该用户通过ssh登录服务器,使用命令:usermod -s /sbin/nologin test
● 恢复该用户可以通过ssh登录服务器:usermod -s /sbin/bash test
创建权限目录
创建上面创建用户时指定的默认目录:
mkdir -p /server/data
SFTP配置
使用Linux自带的SFTP,修改SFTP配置文件:
vi /etc/ssh/sshd_config
①将 Subsystem sftp /usr/libexec/openssh/sftp-server 这一行注释掉,不然修改后会启动不了sshd服务,在行前添加 # 符号即可,如下图
②增加用户的SFTP目录和访问配置,在文件末尾添加以下内容:
Match user test
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /server/data
说明:
● Match user test 指定账号
● AllowTcpForwarding 指定不能ssh登录
● ChrootDirectory 指定该账户的根目录
若test用户归属于sftpusers用户组,也可以修改成以下格式:
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
说明:
● Match Group sftpusers 指定sftpusers用户组
● AllowTcpForwarding 指定不能ssh登录
● ChrootDirectory %h 限定访问目录,每个SFTP用户将被限制在其自己的家目录中,而无法访问其他系统文件或目录
刷新配置
重启SSH服务让sshd_config配置生效,命令:
systemctl restart sshd.service
或者:
service ssh restart
创建子目录
这个子目录是SFTP用户访问之后看到的目录,命令:
mkdir /server/data/test
权限配置
这一步的权限需要配置好,否则SFTP会出现连接不上的问题:Connection reset by peer
1、必须指定上层目录为root所属,并且设置755权限
chown root /server/data
chmod 755 /server/data
说明:/server/data 的目录所属需要是root才可以
2、设置子目录的权限为当前创建的用户,然后才有读写权限
chown test /server/data/test
chmod 755 /server/data/test
注意:如果下面创建的子目录还是没有权限,那么还需要加上下面的步骤:
cd /server/data/
chown -R test test/
chmod -R 755 test/
这样,创建出来的子目录就都可以上传下载
总结
上面的操作完成后,就已经配置好一个用户了,并且设置了对应的权限目录,其他的用户,重复上面的操作步骤,并修改用户名和目录即可。可以通过sftp客户端或者命令行访问进行测试!
问题解决
1、在Linux下用useradd添加用户时,出现错误:Creating mailbox file: 文件已存在?
原因:原来Linux系统下添加用户后,会在系统里自动加一个系统邮箱,路径是:/var/spool/mail/用户名,可以直接用命令:rm -rf /var/spool/mail/用户名 去删除用户,然后执行命令:userdel 用户名 就可以再次重新添加用户。
2、root用户在创建用户时提示没有权限?
原因:由于 su root 或者 sudo su 命令只改变root权限不改变环境变量,而 su -root 指令可以取得ROOT用户的权限和环境。所以需要再执行一次 su -root 命令即可解决。
●版权归原作者和机构所有,严禁商用,否则产生的一切后果将由您自己承担
●如果您不喜欢本站有您信息的存在,请邮件告知我们予以删除
暂无评论内容