文件服务器SFTP搭建

sftp文件服务器环境搭建

先切换到root权限用户再进行操作

#添加组
groupadd sftp

#添加sftp用户
useradd -g sftp -s /bin/false sftpbjsn
#修改sftp用户密码
passwd sftpbjsn
R#mDbFReWH@p!4oj

递归创建sftp文件夹
mkdir -p /data/sftp/
设置sftp用户登录初始目录
usermod -d /data/sftp/sftpbjsn sftpbjsn

配置sshd_config
vi /etc/ssh/sshd_config
#Subsystem sftp /usr/libexec/openssh/sftp-server
#配置一个外部子系统(例如,一个文件传输守护进程)。仅用于SSH-2协议。值是一个子系###统的名字和对应的命令行(含选项和参数)。
Subsystem sftp internal-sftp
#限定只有sftp组的才能访问
Match Group sftp
#设定属于用户组sftp的用户访问的根文件夹
ChrootDirectory /data/sftp/sftpbjsn

#强制执行这里指定的命令而忽略客户端提供的任何命令。这个命令将使用用户的登录###shell执行(shell -c)。
ForceCommand internal-sftp
#是否允许TCP转发,默认值为"yes"
AllowTcpForwarding no
#是否允许进行 X11 z转发。默认值是"no",设为"yes"表示允许。
X11Forwarding no

2.5设定Chroot目录权限
mkdir /data/sftp/sftpbjsn
chmod 755 /data/sftp/sftpbjsn/

#新建一个目录供mysftp上传文件。这个目录所有者为sftpbjsn,所有组为sftp,所有者有写入权限,而所有组无写入权限。命令如下:
mkdir /data/sftp/sftpbjsn/upload
chmod 755 /data/sftp/sftpbjsn/upload

更改文件夹upload的所属用户
chown sftpbjsn upload
更改文件夹upload的所属组
chgrp sftp upload

注意:给他人使用时需要再创建个sftp用户,这个用户只读不可写
,把这个用户文件存放的文件夹所属用户改成自己的sftp用户,所属组是sftp。
useradd -g sftp -s /bin/false sftpuser
usermod -d /data/sftp/sftpbjsn/sftpuser sftpuser
mkdir /data/sftp/sftpbjsn/sftpuser
chmod 755 sftpuser
mkdir /data/sftp/sftpbjsn/sftpuser/upload
chmod 755 /data/sftp/sftpbjsn/sftpuser/upload
chown sftpbjsn upload
chgrp sftp upload

注意:存放文件的文件夹的所属用户是自己既可读又可写的sftp用户,所属组是sftp组,其他的的路径文件夹所属用户和所属组都是root。

sftp远程账号登录
sftp sftpbjsn@IP地址:端口号
端口号为22时不用跟端口号

Sftp之ChrootDirectory主目录权限的配置

CentOS6.5搭建SFTP,按照教程配置 + 重启SSHD服务,之后用sftp命令试验登陆,用户名为paymentftp 报错信息如下:
[root@BILLING86 local]# sftp [email protected]
SSH warring: Authorized users only. All activity may be monitored and reported
[email protected]’s password:
packet_write_wait: Connection to 127.0.0.1 port 22: Broken pipe
Connection closed.
Connection closed

原因:是用户ChrootDirectory配置的主目录权限问题导致,并非网络的原因,需特别注意这两点:

  1. **ChrootDirectory所指向的文件夹,属主必须是root,属组是sftp用户所属的用户组。
  2. ChrootDirectory所指向的文件夹到系统根路径上的所有途径文件夹,属主都必须是root,且权限不允许有群组用户写入权限,即权限只能为750或755,如果任意一个是777,则会出现上述问题**。

故以本人配置为例:
用户:paymentftp 用户组:sftp
ChrootDirectory配置:/usr/local/mysftp
则:mysftp文件夹的所有者/组应为:root/sftp 权限是755
usr local 三个文件的所有者/组应为:root/root 权限是755

配置可写入的文件夹
使用ftp客户端,以paymentftp用户登陆,可以看到该用户的home文件夹是mysftp,且不能查看向上级目录。

但目前paymentftp用户只能读取mysftp下的文件,没有上传写入的权限(当前配置组用户无写入权限)。

需要在mysftp下新建一个属主为paymentftp的文件夹即可,理论上,按照权限要求,home文件夹下是不允许写入的,只能是新建下级目录才能设置写入权限。

发布了14 篇原创文章 · 获赞 0 · 访问量 45

猜你喜欢

转载自blog.csdn.net/weixin_42949219/article/details/105053823