Linux下ftp服务器搭建
创建两个Linux虚拟机,完成初始配置,可以让两台Linux虚拟机能互相ping通
修改各自的 主机名,在/etc/sysconfig/network 文件中,完成如下设置
服务端主机名设置为 server 。客户端设置为 client
两台虚拟机已经ping通
一、Vsftpd 简单用法
[[email protected] ~]# yum install -y vsftpd # (服务端)安装 Vsftpd
[[email protected] ~]# /etc/init.d/vsftpd start # (服务端)启动 Vsftpd
关闭防火墙或者清空防火墙规则及关闭selinux
iptables -F
service iptables save
vim /etc/selinux/config
SELINUX=disabled
创建ftp账号病设置密码
useradd jzc && passwd jzc
[[email protected] ~]# yum install -y lftp # (客户端)安装 lftpd 工具,用来登录 FTP 服务端
[[email protected] ~]# lftp [email protected] # (客户端)登录 FTP 服务端,test 是服务端系统用户,192.168.123.102 是 FTP 服务端地址
Password: # 登录后默认共享的目录是登录用户的家目录
lftp [email protected]:~> ls # 查看共享的内容
lftp [email protected]:~> get 1.txt # 下载文件
lftp [email protected]:~> put 1.txt # 上传文件
二、使用虚拟用户登录 Vsftpd
1、服务端配置(我们用系统用户登录的时候,不仅可以浏览该用户的家目录,而且能够浏览家目录外的目录,不太安全,因此有必要使用虚拟用户来登录,虚拟用户只能访问 该用户家目录)
[[email protected] ~]# yum install -y vsftpd # 安装 Vsftpd
[[email protected] ~]# useradd test -s /sbin/nologin # 创建系统用户,登录 Vsftpd 的时候用虚拟用户登录,登录后才切换到系统用户
[[email protected] ~]# vim /etc/vsftpd/vsftpd_login # 创建虚拟用户
test1 # 虚拟用户
11111 # 密码
[[email protected] ~]# chmod 600 /etc/vsftpd/vsftpd_login
[[email protected] ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
# 生成库文件,使得 Vsftpd 能够识别该文件
[[email protected] ~]# mkdir /etc/vsftpd/vsftpd_user_conf # 创建虚拟用户的配置文件目录
[[email protected] ~]# vim /etc/vsftpd/vsftpd_user_conf/test1 # 创建虚拟用户配置文件,注意文件名要与虚拟用户名一致,注意,如果复制粘贴的话,需要把注释部分全去掉,并保证,每行后面不要有空格
local_root=/home/test/test1 # 指定要共享的虚拟用户目录
anonymous_enable=YES # 是否允许匿名用户登录
write_enable=YES # 是否开放本地用户写权限
local_umask=022 # 创建文件的默认 umask 值
anon_upload_enable=YES # 是否允许匿名用户上传文件
anon_mkdir_write_enable=YES # 是否开启匿名用户的写和创建目录的权限
idle_session_timeout=600 # 会话空闲时间多久就中断连接
data_connection_timeout=120 # 将在数据连接空闲两分钟后中断
max_clients=10 # 最大连接数
max_per_ip=5 # 最大传输数
local_max_rate=50000 # 限制传输速度
[[email protected] ~]# mkdir /home/test/test1 # 创建虚拟用户目录
[[email protected] ~]# chown -R test /home/test/test1 # 修改为系统用户的权限
[[email protected] ~]# vim /etc/pam.d/vsftpd # 指定使用虚拟用户的方式去认证 #%PAM-1.0
添加内容:
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
[[email protected] ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
#daemon //注释掉此行
adm
lp
sync
。。。。。。。。。省略。。。。。。。。。
[[email protected] ~]# vim /etc/vsftpd/vsftpd.conf # 编辑配置文件,设置只让虚拟用户登录,不能让系统用户登录
anonymous_enable=NO
local_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=test
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
[[email protected] ~]# /etc/init.d/vsftpd restart # 启动 Vsftpd
2、Linux 客户端访问 Vsftpd
[[email protected] ~]# yum install -y lftp # (客户端)安装 lftpd 工具,用来登录 FTP 服务端
[[email protected] ~]# lftp [email protected] # (客户端)登录 FTP 服务端,test1 是虚拟用户,192.168.123.102 是 FTP 服务端地址
Password: # 登录后默认共享的目录是虚拟用户的目录
lftp [email protected]:~> ls # 查看共享的内容
lftp [email protected]:~> get 1.txt # 下载文件
lftp [email protected]:~> put 1.txt # 上传文件
3、Windows 客户端访问 Vsftpd
本人实验做的并不成功,到最后一步没连接上。。。 这里只是部分截图 之后会讲如何更换yum源 关闭防火墙的方法及其开机自启动