天天看点

Linux之文件服务器SFTP搭建sftp文件服务器环境搭建Sftp之ChrootDirectory主目录权限的配置

sftp文件服务器环境搭建

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

#添加组

groupadd sftp

#添加sftp用户

useradd -g sftp -s /bin/false sftpbjsn

#修改sftp用户密码

passwd sftpbjsn

R#[email protected]!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 [email protected]地址:端口号

端口号为22时不用跟端口号

Sftp之ChrootDirectory主目录权限的配置

CentOS6.5搭建SFTP,按照教程配置 + 重启SSHD服务,之后用sftp命令试验登陆,用户名为paymentftp 报错信息如下:

[[email protected] 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文件夹下是不允许写入的,只能是新建下级目录才能设置写入权限。

继续阅读