linux搭建ftp服务器
1.安装vsftpd
1.1先查看系统是否已安装vsftpd
rpm -q vsftpd
上图表示未安装vsftpd
1.2安装vsftpd
yum install -y vsftpd
安装完成后再查看如下图
1.3启动vsftpd
systemctl start vsftpd
查看服务状态
systemctl status vsftpd.service
1.4设置开机自启动
systemctl enable vsftpd
1.5创建ftp根目录
mkdir -p /user/local/ftp
2.修改配置文件
cd /etc/vsftpd
vim vsftpd.conf
将配置修改为这样,不存在的就添加
#禁止匿名访问
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_list_enable=NO // 不允许用户离开自己的主目录
chroot_list_file=/etc/vsftpd.chroot_list // 虚拟用户列表,每行一个用户名
local_enable=YES // 允许本地用户访问
write_enable=YES // 允许本地用户写入
local_umask=022 // 上传后的文件的默认掩码
chroot_local_user=YES // 禁止本地用户离开自己的主目录
pam_service_name=vsftpd.vu // 权限验证需要的加密文件
guest_enable=YES // 开启虚拟用户功能
guest_username=ftp // 虚拟用户的宿主目录
virtual_use_local_privs=YES // 用户登录后操作目录和本地用户权限一样
user_config_dir=/etc/vsftpd/vconf // 虚拟用户主目录设置文件
allow_writeable_chroot=YES // 允许写入用户主目录,这条特别重要
3.添加用户,创建用户文件
3.1
新建文件vsftpd.chroot_list
vim /etc/vsftpd.chroot_list
添加内容,每个用户一行,保存退出
user1
user2
3.2 在ftp根目录下创建用户目录
mkdir -p /usr/local/ftp/user1 /usr/local/ftp/user2
3.3修改用户目录权限
chmod –R 755 /usr/local/ftp/user1 /usr/local/ftp/user2
4.创建用户密码和数据库
4.1
新建文件vusers.list
vim /etc/vsftpd/vusers.list
添加内容,一行用户名,一行密码,保存退出
user1
123456
user2
123456
4.2
如果没有db_load这个命令,先安装,安装前先查询一下
yum search db4
安装这个
yum install compat-db47.x86_64
4.3 生成db文件
cd /etc/vsftpd
db_load –T –t hash –f vusers.list vusers.db
生成后可以看到目录下有vusers.db这个文件
设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
chmod 600 vusers.*
5. 指定认证方式
vim /etc/pam.d/vsftpd.vu
注意:这里是新建文件,不是修改vsftpd文件
添加以下内容
#%pam-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
6.创建虚拟用户个人配置文件
mkdir -p /etc/vsftpd/vconf
cd /etc/vsftpd/vconf
touch user1
vim user1
添加以下内容
local_root=/usr/local/ftp/user1
7.重启服务systemctl restart vsftpd
8.验证
8.1 本机访问
如果提示 -bash: ftp: 未找到命令
先安装
yum -y install ftp
访问
ftp localhost
成功访问如上图,会让你输入用户名和密码
退出ftp命令:exit或quit
8.2 远程访问
可以在windows上的“计算机”的地址栏输入ftp://ip地址
如果访问失败,检查防火墙状态
systemctl status firewalld
上图表示防火墙开启
可以关闭防火墙
systemctl disable firewalld
或者把ftp的端口加入防火墙的白名单
firewall-cmd --zone=public --add-port=21/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重启防火墙
firewall-cmd --reload
回到windows上再次访问,可能会出现下面提示
进入IE--Internet选项--高级,把”使用被动FTP(为防火墙和DSL调制解调器兼容性)“前面的勾去掉,再访问,成功