一、需求分析
上一篇简单写了如何搭建ftp和sftp服务器,还是很简单的,但是现在公司有了具体的需求,需要搭建一个ftp和sftp服务器,创建一个用户,能同时使用这两个服务,公司开发一个项目,有windows客户端(ftp上传)和Android的app(sftp上传),现在需要在这两个终端上通过这两个协议上传视频、图片等文件至服务器的指定文件夹下,然后apache能够访问到该文件夹,然后下载、播放和查看该视频/图片文件。总结起来就是,sftp和ftp共用一个用户,app和客户端上传文件时使用这一个用户上传,上传的路径是同一个文件夹,然后apache能够访问。画出图如下所示:
二、创建sftp服务器
进入root模式(下面的操作默认都是在root用户下)
#安装openssh-server
apt-get install -y openssh-server
创建sftp的组sftp-users和用户user1
#创建sftp-users组
groupadd sftp-users
#创建sftp用户登录目录volume
mkdir /home/volume
#创建sftp用户user1,并且绑定其主目录为刚才创建的目录
useradd -d /home/volume user1
#设置用户user1的密码
passwd user1
#输入两次密码
#将用户user1添加到组sftp-users中,并且设置不能telnet
#注:-a参数表示append,linux在创建用户时会默认创建一个和用户同名的组
#加上-a参数表示alice不退出原来的名为alice的组的情况下,加入sftp-users组中
usermod -a -G sftp-users -s /bin/false user1
创建ssh用户组及用户管理
#创建ssh-users组
groupadd ssh-users
#将当前的ubuntu系统管理员加入到ssh-users组中
usermod -a -G ssh-users admin
#创建sftp的根目录并修改相应权限(将admin改为管理员名字)
mkdir /home/volume
mkdir /home/volume/vod
chown admin:sftp-users /home/volume/vod
#因为要上传文件到vod目录,且所有用户共享,所以vod必须要给777权限
chmod 777 /home/volume/vod
#修改ssh的配置文件
vi /etc/ssh/sshd_config
#首先修改sftp的默认端口号(默认是22,现在需求13022),第一行就是
Port 13022
#然后在文件末尾添加下面内容:
AllowGroups ssh-users sftp-users
Match Group sftp-users
ChrootDirectory /home/volume
AllowTcpForwarding no
X11Forward