在Linux和其它机器之间共享文件
Linux与Windows系统之间互换文件,之前有一个叫做Samba的服务器,搭建此服务器可以实现Linux和Windows文件的互传。但是仅仅局限于Linux和Win在同一个局域网且允许共享文件的情况下。
在工作环境中,Windows在局域网中,可是Linux可能在公网上,在电信机房里,这么做是不能的。
在Windows上搭建一个FTPServer,让Linux去下载这个也是不行的。因为Windows的IP地址可能是局域网的,而Linux是公网IP,所以无法对接。
方法只有一种,是在Linux上搭建FTPServer,然后通过Windows读取上传数据。
我们自己下载的各个版本的Linux是默认安装有ftp服务的,怎么找到其中的ftpServer呢?怎么启动起来,让其对外提供服务呢?
我使用的系统版本为CentOS,首先查看一下本机是否安装有ftp服务:
我们目前的系统是没有ftp服务的,我们需要安装一下。
1.首先使用yum安装vsftpd ftp

出现Complete之后就安装完成了。
2.然后查看配置文件所在路径
查看vsftpd.conf配置文件信息:
配置文件的内容如下
anonymous_enable=NO //设定不允许匿名访问
local_enable=YES //设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
chroot_list_enable=YES //使用户不能离开主目录
chroot_list_file=/etc/vsftpd/chroot_list ascii_upload_enable=YES
ascii_download_enable=YES //设定支持ASCII模式的上传和下载功能
pam_service_name=vsftpd //PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证 //已下三个请在配置文件中手动添加
guest_enable=YES //设定启用虚拟用户功能
guest_username=ftp //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf //设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名
3.然后备份vsftpd原有配置文件
4.创建密码明文文件

5.根据明文创建密码DB文件
查看密码数据文件
6.编辑认证文件/etc/pam.d/vsftpd
把注释去掉,然后加上已下几条
注:db=/etc/vsftpd/vftpuser 中的vftpuser是你生成的虚拟用户的db文件
查看系统版本号:getconf LONG_BIT
系统为32位:
auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd
系统为64位:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
图13.11.jpg
7.创建虚拟用户配置文件
mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/jack //文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效
设置用户配置文件内容
local_root=/var/www/html //虚拟用户根目录,根据实际情况修改 该目录必须要有读写权限 chmod -R 777 目录
write_enable=YES //可写
anon_umask=022 //掩码
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
8.设置Selinux
setsebool -P ftp_home_dir=1 //设置ftp可以使用home目录
setsebool -P allow_ftpd_full_access=1 //设置ftp用户可以有所有权限
9.启动vsftpd服务
service vsftpd start
这里我使用的是虚拟机,想要windows成功与Linux虚拟机进行ftp通信,就要首先要确保我们的两个虚拟网卡是联通状态:
当然,你的Linux虚拟机如果网络连接图标是断开的,则需要设置网络配置:
连接状态
断开状态无连接
正在连接
Linux虚拟机如何链接网络,参看我的这篇文章: 《虚拟机VMware中Linux联网问题》
查看Linux系统的ip地址
我们的虚拟机的ip要设置成和我们三个网络适配器的ip的任意一个网段一样,就可以让我们的windows和Linux链接了。
可以看到我们的ip现在是192.168.248.129,而我windows上的三个网络适配器的ip分别是192.168.57.1、192.168.248.1和172.18.0.4。可以看到192.168.248.129和192.168.248.1是在一个网段的,所以我们的windows和Linux可以做通信。
我们在windows上ping一下,发现确实是联通的:
在windows上使用“ftp xxx.xxx.xxx.xxx”来链接ftp服务,链接不成功和成功的情况:


如果没有链接上ftp服务,要检查两点,一个是Linux上的ftp服务是否启动,Linux的防火墙是否关闭。
关闭Linux放火墙的指令为:
1) 临时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
2) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
我们登陆进来之后,就可以使用ls等指令查看文件了
在我们的windows机器上,安装FileZilla,连接至服务器,然后也可以进行文件传输:
设置ftp服务开机自启动指令:
chkconfig --level 3(当前启动级别) vsftpd on
其中chkconfig这个指令是负责设置程序和服务的开机启动级别的,我们在控制台输入这个指令,它会给我们列出所有可以设置的程序或服务:
其中就有我们的vsftpd服务,我们也可以使用管道指令直接搜到它:
然后我们可以发现,每个服务都有5个选项,就是说在某个启动级别上是打开还是关闭的。
我们的vsftp的五个选项是off关闭的,而我们目前机器的启动级别是3,所以我们默认当启动级别为3的时候开启vsftpd服务。
chkconfig --level 3 vsftpd on
vsftpd全部级别自启动的指令为
chkconfig vsftpd on
如果不知道目前机器的启动级别,可以输入who -r来查看。
转载请注明出处:http://blog.csdn.net/acmman/article/details/52079967