配置FTP服务器(文件传输协议)
一:FTP介绍
Linux系统下常用的FTP是vsftp,即very security file transfer protocol.还有一个是proftp(profession ftp)。ftp是用于进行文件传输的网络协议,ftp服务中分为服务器和客户机两个角色;它的传输模式模式分为主动模式和被动模式;21端口用于与客户机建立命令链接,在主动模式下服务器用20端口向客户机建立数据链路。
Vsftp提供3种远程登录方式:
匿名登录方式:不需要用户名,密码。就能登录到服务器电脑里面。默认的匿名账户有两个:
anonymous,ftp。
本地用户方式:需要账户名和密码才能登录。而且这个账户和密码,都是在Linux系统里面已经有的用户。
虚拟用户方式:同样需要用户名和密码才能登录。但是和上面的区别就是,这个用户名和密码,是linux系统中没有的。
在Linux和window系统中都默认提供ftp服务;常用的windows客户端ftp软件:Leapftp,FlashFXP,CuteFTP;
二:Vsftp安装
1.我的Linux系统的默认没有安装,挂载光盘安装;查看安装rpm -qa vsftpd;
2.安装:rpm -ivh vsftpd-2.2.2-6.el6_0.1.x86_64.rpm(我的linux系统自带的安装包);
3.查看vsftpd是否开机自启动,两种方式:一个是利用setup命令,另一个是利用chkconfig命令chkconfig --list vsftpd;
4.修改配置文件/etc/vsftpd/vsftpd:
在文件末尾加上:
chroot_local_user=YES; #将所有用户限定在它登录的目录内;
service vsftpd restart;
5.修改vsftpd的启动项:chkconfig --level 35 vsftpd on;然后service vsftpd start;
最后关闭防火墙:service iptables stop ;setenforce 0;
6.测试匿名账户:在window下命令行中键入:ftp或anonymous即可登录ftp服务器,不用输入密码。默认登录的目录为/var/ftp目录;在这个目录我创建了一个文件1.txt,然后在window命令行中输入get 1.txt提示下载成功。
7.测试本地账户:在window下键入:ftp 192.168.204.128,然后输入账户:zkpingguo,输入密码即可登录。我在zkpingguo目录下建了一个文件good.txt然后在window命令行中输入get good.txt,提示下载成功。
8.ftpusers用于保存不允许登录到ftp服务器的账户。在目录/etc/vsftpd/下。
9.userlist用于保存某些账号允许登录或不允许登录。在目录/etc/vsftpd下。
10.vsftpd虚拟账号的设置步骤:(重要)
(1)建立虚拟用户口令库文件,口令库文件中奇数行设置用户名,偶数行设置口令。
(2)生成vsftpd的认证文件
(3)建立虚拟用户所需的PAM配置文件
(4)建立虚拟用户所要访问的目录并设置相应的权限
(5)设置vsftpd.conf配置文件
具体操作:
10.1:建立口令库文件,gedit logins.txt(在etc/vsftpd/目录下)
然后输入用户名和口令
10.2:生成vsftpd认证文件:利用db_load命令生成认证文件(如果没有安装,可以挂载光盘安装)
db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db;
chmod 600 vsftpd_login.db;(认证文件只对用户可读可写)
10.3:建立虚拟用户所需的PAM配置文件,进入/etc/pam.d目录下,建立PAM配置文件:
gedit vsftpd.vu;在该文件中键入:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
这里需要十分注意是lib64目录而不是lib目录。
10.4:建立虚拟用户所要访问的目录并设置相应的权限:
useradd -d /home/ftpsite virtual(virual账号对应/home/ftpsite目录)
chmod 700 /home/ftpsite/
10.5:设置vsftpd.conf配置文件,添加如下内容:
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
10.6:vsftpd服务重启:service vsftpd restart
10.7:在window中键入:ftp 192.168.204.128,然后键入logins.txt中用户名密码即可。
测试可以正常登陆,说明虚拟账号配置成功;但是有些操作受限。
10.8:为了系统的安全,缺省配置的虚拟用户只有较低的用户权限,这是可以对虚拟用户设置不同的权限。
建立vsftpd_user_conf目录:mkdir /etc/vsftpd_user_conf
修改vsftpd.conf,加入:user_config_dir=/etc/vsftpd_user_conf;
10.9:在window中键入:ftp 192.168.204.128,然后键入logins.txt中用户名密码即可。
测试可以正常登陆,然后键入:mkdir myvirtualdir;提示创建成功,然后在ftpsite目录下可以看到创建的myvirtualdir目录。