Linux服务-vsftp
来源:互联网 发布:清华大学网络 编辑:程序博客网 时间:2024/05/20 20:02
概述
vsftp 全称Very Secure FTP,是FTP服务的一种。FTP会话包含了两个通道,控制通道和数据通道。它有两张工作模式:主动模式和被动模式
主动模式
FTP客户端连接到服务器的21号端口,发送用户名和密码,客户端随机开放一个(1024以上)端口,发送PORT命令到FTP服务器,告诉服务器客户端采用主动模式开放端口;FTP服务器收到PORT命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理图如下:
被动模式
工作原理:FTP客户端连接到FTP服务器的21号端口,发送用户名,密码,PASV命令道FTP服务器服务器开放一个(1024以上)的端口,并把这个端口告诉客户端,客户端再连接到这个开服的端口进行数据传输,原理图如下:
安装
安装环境CentOS 6.5
服务端
yum -y install vsftpd
客户端
yum -y install vsftp lftp
启动
/etc/init.d/vsftpd startchkconfig vsftpd on
注意: 在用netstat -antup | grep ftp 查看不到20端口是因为这个端口没有数据通信。
用客户端访问测试
[root@xs171 ~]# lftp 192.168.0.170lftp 192.168.0.170:~> ls drwxr-xr-x 2 0 0 4096 May 11 06:17 pub
配置文件
/etc/vsftpd/vsftpd.conf: 核心配置文件
/etc/vsftpd/user_list: 白名单,指定使用ftp的用户列表
/etc/vsftpd/ftpusers:黑名单,指定那些用户不能访问ftp
Demo
创建两个用户:ftpuser1,ftpuser2 并将用户锁定在/var/ftp/appdata
添加用户
useradd -s /sbin/nologin ftpuser1useradd -s /sbin/nologin ftpuser2echo "123456" | passwd --stdin ftpuser1echo "123456" | passwd --stdin ftpuser2
编辑配置文件
vim /etc/vsftpd/vsftpd.conf
#禁止匿名用户访问anonymous_enable=NO允许匿名用户访问#允许本地用户登录local_enable=YES#设置用户根目录local_root=/var/ftp/appdata#激活chroot 功能chroot_list_enable=YES#设置锁定用户文件,文件存放要锁定的用户名chroot_list_file=/etc/vsftpd/chroot_list
建立数据存储目录
mkdir /var/ftp/appdatachown ftp.ftp /var/ftp/appdatachmod -R o+w /var/ftp/appdata
建立要锁定的用户文件
建立要锁定的用户文件,并把ftpuser1,和ftpuser2添加到文件中,每个用户名占用一行。
touch /etc/vsftpd/chroot_listvim /etc/vsftpd/chroot_list
注意:如何要想在ftp服务器上删除文件要用rmdir 命令,rm 不是ftp上的命令。
FTP 虚拟账号
创建FTP虚拟账号,账号normaluser可以下载文件,vipuser可以上传和下载
创建用户数据库
先建立用户文本文件vsftpd_virtualuser.txt。并添加用户normaluser 和vipuser
创建文本文件
vim /etc/vsftpd/vsftpd_virtualuser.txt内容如下,用户和密码独立成行normaluser12345vipuser12345
生成数据库文件
用db_load 命令生成db文件,这样可以由FTP服务直接调用
rpm -qf `which db_load`db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt /etc/vsftpd/vsftpd_virtualuser.db//文本文件此时可以删除rm -rf /etc/vsftpd/vsftpd_virtualuser.txt
参数说明:
- -T 允许程序将文本文件转译载入数据库。
- -t hash 使用hash 码加密
修改数据库文件访问权限
数据库文件保存着账号的密码信息,为了防止非法用户盗取,应设为只对root用户可读可写,即600
chmod 600 /etc/vsftpd/vsftpd_virtualuser.db
配置PAM 文件
为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM(Plugable Authentication Module)模块。PAM 模块配置文件的路径为 /etc/pam.d/目录,此目录下面保存着大量与认证有关的配置文件,并以服务名称命名。
修改vsftpd 对应的PAM 配置文件/etc/pam.d/vsftpd。
#%PAM-1.0#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-authauth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuseraccount required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtualuser
设置共享目录
对于普通用户和vip用户需要设置不同的权限,所以可以将两个账号的目录进行隔离,控制用户文件的访问。账号normaluser 对应的主目录为/var/ftp/share, 账号vipuser对应的主目录为/var/ftp/vip
添加用户
useradd -d /var/ftp/share normaluser useradd -d /var/ftp/vip vipuser
修改权限
share 目录为可读执行rx,vip目录为可读可写执行rwx。
chmod -R 500 /var/ftp/share/chmod -R 700 /var/ftp/vip/
建立配置文件
### 修改vsftpd.conf 主配置文件
anonymous_enable=NOlocal_enable=YESchroot_local_user=YESpam_service_name=vsfptd#设置虚拟账号的主目录为vuserconfiguser_config_dir=/etc/vsftpd/vuserconfigmax_clients=300max_per_ip=10
建立虚拟账号配置文件
在user_config_dir 指定的路径下,建立与虚拟账号同名的配置文件
mkdir /etc/vsftpd/vuserconfigtouch /etc/vsftpd/vuserconfig/normalusertouch /etc/vsftpd/vuserconfig/vipuser
normaluser 中的内容
#开启虚拟账号登陆guest_enable=yes#设置normaluser 对用的登陆账号为normaluserguest_username=normaluser#允许匿名用户浏览服务器文件系统anon_world_readable_only=no#限定传输速率anon_max_rate=50000
vipuser中的内容
guest_enable=yesguest_username=vipuseranon_world_readable_only=nowrite_enable=yesanon_mkdir_write_enable=yesanon_upload_enable=yesanon_max_rate=100000
- Linux服务-vsftp
- linux下的vsftp服务
- Linux下的vsftp服务
- Linux vsftp服务的安装
- VSFTP服务--Linux学习笔记
- linux下搭建vsftp服务
- SUSE Linux 设定 ftp 服务 vsftp
- Linux的ftp服务vsftp详细配置
- Linux下ftp服务详细配置-vsftp
- Linux服务配置:Vsftp的基本配置
- Linux服务配置:Vsftp的基本配置
- Linux下vsftp服务的安装
- vsftp服务
- vsftp服务
- VSFTP服务
- VSFTP服务
- vsftp服务
- linux下FTP服务vsftp配置和tftp服务配置
- spring Thymeleaf 中文乱码
- intellij 编译 springmvc+hibernate+spring+maven 找不到hbm.xml映射文件
- intellij创建maven web项目
- zynq中使用FreeRTOS的空闲钩子函数时在SDK中的设置
- python2.7 Unable to find vcvarsall.bat
- Linux服务-vsftp
- 数据结构实验之链表三:链表的逆置
- POJ 2377 (最大生成树 Kruskal)
- android studio下ndk开发
- poj 2251 Dungeon Master (BFS)
- 关于C语言入门的小知识点
- HDU 5755 Gambler Bo 高斯消元解同余方程组
- java类加载器
- 河南多校大一训练赛(最小生成树k算法)