linux配置ftp服务

一、FTP连接及传输

控制连接:TCP 21,用于发送FTP命令信息
数据连接:TCP 20,用于上传、下载数据
数据连接的建立类型:
主动模式:服务端从20端口主动向客户端发起连接
被动模式:服务端在指定范围内某个端口被动等待客户端连接
FTP用户的类型:
匿名用户:anonymous或ftp
本地用户:账号密码等信息保存在passwd、shadow文件中
虚拟用户->本地用户
linux下的FTP软件包:vsftpd
官方站点:http://vsftpd.beasts.org/
主程序:/usr/sbin/vsftpd
服务名:vsftpd
用户控制文件列表:
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
主配置文件:
/etc/vsftpd/vsftpd.conf

二、配置FTP

redhat作为服务器,需要安装vsftp软件包,192.168.18.2客户端
,需要安装ftp命令

1.在redhat安装vsftpd软件包

[root@localhost ~]# yum -y install vsftpd

安装完成之后,打开服务,关闭防火墙

[root@localhost ~]# service vsftpd start
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0

2.在192.168.18.2客户端,安装ftp命令,去访问ftp服务器

[root@localhost ~]# yum -yinstall ftp

安装成功之后

匿名登陆

这里用的是ftp登陆

[root@localhost ~]# ftp 192.168.18.3

登录用户名是ftp,密码为空,离开是exit或!

上传文件

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

在redhat服务器上操作

验证anon_upload_enable=YES 选项
修改完配置文件,重启服务

[root@localhost ~]# service vsftpd restart

在redhat服务器上操作

改变/var/ftp/pub目录的权限,注意在改变权限时不能使用chmod 777 pub,这是因为vsftpd本身的bug。需要使用chown

[root@localhost ftp]# chown ftp pub

在192.168.18.2客户端,新建一个文件 在那个目录下连接的ftp就从那个目录上传

[root@localhost ~]# touch 1.txt

在192.168.18.2客户端,进入pub文件

ftp>cd pub
ftp>put 1.txt可以在redhat上查看

验证anon_umask=022
在redhat上,修改配置文件/etc/vsftpd/vsftpd.conf,在该文件的任何一个位置添加这句话
这样上传之后文件的权限就是644,即rw-r–r--

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

anon_mkdir_write_enable=YES 允许创建目录
anon_other_write_enable=YES 允许其他人写入权 (配置文件中没有,需要手动添加)

修改完成后,重启

[root@localhost ~]# service vsftpd restart

在192.168.18.2客户端,进入pub文件,创建一个目录

[root@localhost ~]# ftp 192.168.18.3
ftp> cd pub
ftp> mkdir aaa
ftp> rmdir aaa

#在ftp中只支持rmdir命令,不支持rm命令
匿名登录配置结束

进入本地用户登录配置

本地用户登录ftp,需要在redhat上添加用户

[root@localhost ~]# useradd vs
[root@localhost ~]# passwd vs在192.168.18.2客户端,使用vs账号登录
[root@localhost ~]# ftp 192.168.18.3

用本地用户登录ftp时默认位置是,本地用户的家目录

测试
chroot_local_user=YES 是否将用户禁锢在主目录下
如果这个选项不打开的话,本地用户可以进入到其他的目录,所以对于服务器来说,必须将这个选项打开
在redhat上

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

在192.168.18.2客户端,使用vs账号登录

[root@localhost ~]# ftp 192.168.18.3

ftp> cd /home
测试成功!

测试
download_enable=YES 是否允许下载文件
这句话在/etc/vsftpd/vsftpd.conf的配置文件中是不存在的,也就是配置文件中没有这句话,默认就是可以下载文件,但是如果要禁止用
户下载就需要在配置文件中添加download_enable=NO这句话。
在redhat上

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

添加download_enable=NO
在192.168.18.2客户端,验证

[root@localhost ~]# ftp 192.168.18.3
ftp > cd pub
ftp > get 1.txt

测试
访问限制
userlist_enable=YES 是否启用user_list列表文件
userlist_deny=YES 是否禁用user_list中的用户
userlist_deny=NO
在redhat上,将匿名用户的登陆禁止

[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf

将anonymous_enable=YES的值改成NO
保存,重启ftp服务
在192.168.18.2客户端,用ftp匿名用户登录验证
在redhat上,建立三个本地用户a1,a2,a3
修改配置文件/etc/vsftpd/vsftpd.conf
开启userlist_deny=YES,然后在修改/etc/vsftpd/user_list,拒绝a1,a2登陆,允许a3登陆

[root@localhost ~]# vi /etc/vsftpd/user_list
保存,重启服务。

在192.168.18.2客户端,验证刚才的测试
当将userlist_deny=YES改成NO时,表示只允许user_list列表中的用户登录FTP服务器。
另外,在/etc/vsftpd/目录下的ftpusers文件中添加了用户,则该用户将无法登录,无论user_list中做任何设置,也就是说ftpusers的优先
级是比user_list的优先级高的。
实验,先设置userlist_deny=NO,然后在/etc/vsftpd/ftpusers文件中添加a1,这样a1还是登录不进去。
这样修改完成之后,保存,重启服务。只有a1,a2,a3用户能够登录
在192.168.18.2客户端,验证然后,在/etc/vsftpd/ftpusers添加a1,这样a1还是登录不进去。

[root@localhost ~]# vi /etc/vsftpd/ftpusers

保存,重启服务
在192.168.18.2客户端,验证成功
本地用户配置完成

虚拟用户

a、减少系统用户数量,提高系统安全性
b、根据不同用户,设置不同的访问权限
步骤:
创建账号数据:1、建立虚拟FTP用户的账号数据库文件
2、创建FTP根目录及虚拟用户映射的系统用户
3、建立支持虚拟用户的PAM认证文件
添加虚拟用户支持
4、在vsftpd.conf文件中添加支持配置
5、为个别虚拟用户建立独立的配置文件
启动服务并测试
6、重新加载vsftpd配置
7、使用虚拟FTP账户访问测试
实验:
在redhat上
1.创建虚拟用户
在/etc/vsftpd/目录下创建一个保存虚拟用户信息的文件,取名叫u.list

[root@localhost ~]# cd /etc/vsftpd
[root@localhostvsftpd]# vi u.list

2.将u.list转化成数据库文件

[root@localhostvsftpd]# db_load -T -t hash -f u.list u.db

#db_load工具需要安装db4-utils软件,在CentOs中,redhat中不用安装
为了防止别人查看里面的内容,需要将这两个文件的权限改成600

[root@localhostvsftpd]# chmod 600 u.*

3.创建虚拟用户对应的本地用户

[root@localhostvsftpd]# useradd -d /var/vftp -s/sbin/nologin virtual

#/var/vftp是用户登录的家目录,用户名是virtual,/sbin/nologin不允许登录
看看用户的家目录是否创建成功设置vftp/目录权限

[root@localhostvar]# chmod 755 vftp/

4.生成认证模块
在/etc/pam.d/目录下,自己创建一个认证模块vsftpd.vu

[root@localhost pam.d]# vi vsftpd.vu

#添加如下内容:

#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/u
account required pam_userdb.so db=/etc/vsftdp/u

5.修改主配置文件/etc/vsftpd/vsftpd.conf

[root@localhost pam.d]# vi /etc/vsftpd/vsftpd.conf
在主配置中添加
guest_enable=YES
#开启虚拟用户登录
guest_username=virtual
#指定虚拟用户对应的本地用户
pam_service_name=vsftpd.vu
#对虚拟用户进行认证
user_config_dir=/etc/vsftpd_dir
#针对不同的虚拟用户设定不同的权限的目录

把vsftpd_dir目录创建出来
进入该目录,为每一个用户生成一个配置文件,该配置文件会累加到主配置文件中生效

[root@localhostvsftpd_dir]# vi zhangsan

#给zhangsan设定允许上传的权限

[root@localhostvsftpd_dir]# vi lisi#给lisi设定可以创建目录的权限
[root@localhostvsftpd_dir]# touch wangwu

#给wangwu设置为空,没有设置特殊权限。其实就是主配置文件中的权限
在验证前需要进入vsftpd.conf将userlist_deny=NO改成userlist_deny=YES
然后,重启服务
在192.168.18.2客户端,验证成功

附录:
匿名权限控制:
anonymous_enable=YES 启用匿名访问
anon_umask=022 匿名用户所上传文件的权限掩码
anon_root=/var/ftp 匿名用户的FTP根目录
anon_upload_enable=YES 允许上传文件
anon_mkdir_write_enable=YES 允许创建目录anon_other_write_enable=YES 允许其他人写入权 (配置文件中没有,需要手动添加)
anon_max_rate=0 限制最大传输速率(字节/秒)
本地用户权限限制:
local_enable=YES 是否启用本地用户
local_umask=022 本地用户所上传文件的权限掩码
local_root=/var/ftp 设置本地用户的FTP根目录
chroot_local_user=YES 是否将用户禁锢在主目录下
local_max_rate=0 限制最大传输速率(字节/秒)
常用的全局配置
listen_address=192.168.4.1 设置监听的IP地址
listen_port=21 设置监听FTP服务的端口号
write_enable=YES 是否启用写入权限
download_enable=YES 是否允许下载文件 ftp搭好之后默认的权限就是只能下载,不能上传
max_clients=0 限制开发客户端连接数 ftp不像网站,在同一时间会有很多并发连接,这个值设置在
10000以内即可
max_per_ip=0 限制同一IP地址的开放连接数 比如一个人在同一台机器上,打开了多个ftp工具去连接同一个
ftp,如迅雷
Pass_min_port=50000 将客户端的数据连接端口改在50000-60000之间
Pass_max_port=60000
访问限制
userlist_enable=YES 是否启用user_list列表文件
userlist_deny=YES 是否禁用user_list中的用户
userlist_deny=NO
其他安全选项
connect_timeout=60 主动模式下,如果连上服务器没有做任何操作将被断掉与服务器的链接
accept_timeout=60 被动模式下,如果连上服务器没有做任何操作将被断掉与服务器的链接
data_connection_timeout=300 在300秒内没有传输新的数据,就认为传输失败
idle_session_timeout=300 连上服务器后300内没有操作,断掉一般与connect_timeout一起使用
ftpd_banner=xxx和banner_file=/path/file 登陆ftp后显示欢迎语句
tcp_wrappers=YES

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值