<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[Centos7.5搭建FTP服务-vsftpd（超详细） ]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[服务器技术]]></category>
<pubDate>Thu, 21 Feb 2019 16:52:47 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	目录<br/>1）vsftpd简介<br/>2）安装vsftpd<br/>3）firewalld防火墙和selinux设置<br/>4）运行，登录<br/>5）局域网登录<br/>6）认识vsftpd软件配置文件<br/>7）设置虚拟账号登录<br/>8）认识vsftpd传输模式<br/>9）500 OOPS:priv_sock_get_cmd错误<br/>一、vsftpd简介<br/>FTP，File transfer protocol的缩写，中文叫文本传输协议，是用于在网络上进行文件传输的一套标准协议，属于网络传输协议的应用层。注意，它是协议，不是软件，今天搭建的vsftpd是基于FTP开发的一套程序，也是一款在Linux发行版中最受推崇的FTP服务器程序，特点是小巧轻快，安全易用。<br/><br/>二、安装vsftpd<br/>yum install vsftpd<br/><br/>三、firewall防火墙和selinux设置<br/>firewall-cmd --list-services //查看防火墙允许的服务。<br/><br/>firewall-cmd --add-service=ftp --permanent //永久开放ftp服务<br/><br/>firewall-cmd --add-port=20/tcp --permanent<br/><br/>firewall-cmd --add-port=21/tcp --permanent //允许外网访问<br/><br/>firewall-cmd --reload //重新载入配置<br/><br/>setsebool ftpd_full_access 1 //selinux设置<br/><br/>setsebool tftp_home_dir 1<br/><br/>四、运行，登录<br/>useradd test<br/><br/>passwd test<br/><br/>ftp localhost<br/><br/>输入账号密码，成功登录。<br/><br/><br/><br/>五、局域网测试<br/>Centos下的网卡设置是在/etc/sysconfig/network-s/这个文件夹下，进入该文件夹，前缀为ifcfg-后面跟的就是网卡的名称。<br/><br/>默认的话是开启dhcp的，首先把BOOTPROTO="dhcp"改成BOOTPROTO="static"表示静态获取。之后在写进以下配置：<br/><br/>IPADDR=192.168.1.6<br/><br/>NETMASK=255.255.255.0<br/><br/>GATEWAY=192.168.1.1<br/><br/>DNS1=192.168.1.1<br/><br/>BROADCAST设置的是局域网广播地址，IPADDR就是静态IP，NETMASK是子网掩码， GATEWAY就是网关或者路由地址，DNS就是域名系统地址， 这里用的就是本地网关，也可以设置其它，比如谷歌、360DNS地址。<br/><br/>systemctl restart network //重启网络服务<br/><br/>ip addr或者ifconfig //查看ip地址<br/><br/>接下来在windows平台用FileZilla Client软件登陆。<br/><br/>这里有些朋友会使用虚拟机测试，但是按照上面配置后发现连接不了，那是因为虚拟机的网络连接模式的影响。这里有一个简单的方法，就是直接获取虚拟机里面系统的ip地址，然后在FileZilla客户端填入。<br/><br/><br/><br/><br/><br/><br/><br/>系统账号默认登陆是在账号的家目录，可以切换到其它目录。<br/><br/>到这里，基本的vsftpd搭建成功。<br/><br/>六、认识vsftpd配置文件vsftpd.conf<br/>主程序：/usr/sbin/vsftpd<br/><br/>主配置文件：/etc/vsftpd/vsftpd.conf<br/><br/>数据根目录：/var/ftp<br/><br/>就算是经验丰富的老手也会做好备份工作<br/><br/>cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak<br/><br/><br/><br/>anonymous_enable=NO //设定不允许匿名访问<br/><br/>local_enable=YES //设定本地用户可以访问<br/><br/>write_enable=YES //设定可以进行写操作<br/><br/>local_umask=022 //设定上传后文件的权限掩码<br/><br/>anon_upload_enable=NO //禁止匿名用户上传<br/><br/>anon_mkdir_write_enable=NO //禁止匿名用户建立目录<br/><br/>dirmessage_enable=YES //设定开启目录标语功能<br/><br/>xferlog_enable=YES //设定开启日志记录功能<br/><br/>connect_from_port_20=YES //设定端口20进行数据连接(主动模式)<br/><br/>chown_uploads=NO //设定禁止上传文件更改宿主<br/><br/>#chown_username=whoever<br/><br/>xferlog_file=/var/log/xferlog //设定Vsftpd的服务日志保存路径。<br/><br/>xferlog_std_format=YES //设定日志使用标准的记录格式。<br/><br/>#idle_session_timeout=600 //设定空闲连接超时时间，单位为秒，这里默认<br/><br/>#data_connection_timeout=120 //设定空闲连接超时时间，单位为秒，这里默认。<br/><br/>#nopriv_user=ftptest<br/><br/>async_abor_enable=YES //设定支持异步传输功能。<br/><br/>ascii_upload_enable=YES<br/><br/>ascii_download_enable=YES //设定支持ASCII模式的上传和下载功能。<br/><br/>ftpd_banner=Welcome to blah FTP service. //设定Vsftpd的登陆标语。<br/><br/>#deny_email_enable=YES // (default follows)<br/><br/>#banned_email_file=/etc/vsftpd/banned_emails<br/><br/>chroot_local_user=YES<br/><br/>chroot_list_enable=YES //禁止用户登出自己的FTP主目录。<br/><br/>chroot_list_file=/etc/vsftpd/chroot_list //这个文件里的用户不受限制，不限制在本目录。<br/><br/>ls_recurse_enable=NO //禁止用户登陆FTP后使用"ls -R"的命令。<br/><br/>该命令会对服务器性能造成巨大开销。<br/><br/>#listen=NO<br/><br/>#listen_ipv6=YES<br/><br/>userlist_enable=YES //设定userlist_file中的用户将不得使用FTP。<br/><br/>tcp_wrappers=YES //设定支持TCP Wrappers<br/><br/>allow_writeable_chroot=YES //这个可以解决chroot权限问题<br/><br/>systemctl restart vsftpd //重启vsftpd服务<br/><br/><br/><br/>注意，“/”在这里就是用户账号的家目录，并不是系统的根目录。<br/><br/>七、vsftpd虚拟用户的使用<br/>vsftpd提供了三种认证方式，分别是：匿名用户认证、本地用户认证和虚拟用户认证。上面test用户就是本地用户。从安全的角度来说，虚拟用户最安全，接下来，我们开始配置虚拟用户。<br/><br/>虚拟用户配置步骤:<br/><br/>1） 建立虚拟FTP用户数据库文件。<br/><br/>2） 创建FTP根目录及虚拟用户映射的系统用户。<br/><br/>3） 建立支持虚拟用户的PAM认证文件。<br/><br/>4） 在vsftpd.conf中添加支持配置。<br/><br/>5） 为虚拟用户设置权限。<br/><br/>6） 虚拟账号登录。<br/><br/>1.建立虚拟FTP用户数据库文件<br/><br/>建立一个虚拟用户名单文件，这个文件就是来记录vsftpd虚拟用户的用户名和口令的数据文件，我这里给它命名为vuser.list，保存在/etc/vsftpd/目录下。<br/><br/>vim vuser.list<br/><br/>一行账号，一行密码<br/><br/>vuser<br/><br/>123456<br/><br/>安装Berkeley DB<br/><br/>yum install db4*<br/><br/>安装后<br/><br/>db_load -T -t hash -f vuser.list vuser.db//生成用户加密文件<br/><br/>chmod 600 vuser.db //敏感文件限制只允许属主读写<br/><br/>2.创建虚拟用户及虚拟用户的家目录<br/><br/>useradd -d /var/vusers -s /sbin/nologin vftp //创建系统用户vftp，并制定其家目录为/var/vusers<br/><br/>chmod -Rf 755 /var/vusers/ //修改目录的权限使得其他用户也可以访问。<br/><br/>3.建立支持虚拟用户的PAM认证文件<br/><br/>vsftpd的pam文件在/etc/pam.d/目录下，先做备份工作。<br/><br/>cp vsftpd vsftpd.bakvim vsftpd<br/><br/>先注释掉所有的内容后添加以下内容：<br/><br/>auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser //此句用于检查用户密码，数据库文件不要写后缀.db<br/><br/>account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser //此句用于检查用户是否在有效期内，数据库支持虚拟用户的PAM认证文件。<br/><br/>4.在vsftpd.conf中添加支持配置<br/><br/>guest_enable=YES //开启虚拟用户模式<br/><br/>guest_username=vftp //指定虚拟用户账号<br/><br/>pam_service_name=vsftpd.virtual //指定pam文件<br/><br/>user_config_dir=/etc/vsftpd/vusers_profile //指定虚拟用户的权限配置目录。<br/><br/>virtual_use_local_privs=NO //虚拟用户和匿名用户有相同的权限<br/><br/>5.为虚拟用户设置不同的权限。<br/><br/>mkdir /etc/vsftpd/vusers_profile //新建虚拟用户目录<br/><br/>vim /etc/vsftpd/vusers_profile/vuser//新建虚拟用户配置文件，文件名要和上面的虚拟用户名单里的账号名字对等。<br/><br/>local_root=/var/vusers/vuser //虚拟账号的家目录<br/><br/>anonymous_enable=NO<br/><br/>local_umask=022<br/><br/>anon_upload_enable=YES //上传权限<br/><br/>anon_mkdir_write_enable //创建文件和目录的权限<br/><br/>anon_other_write_enable //删除文件和目录的权限<br/><br/>anon_world_readable_only=YES //当文件的“其他人”有读权限的时候可以下载<br/><br/>download_enable=YES //下载权限<br/><br/>保存配置，重启服务。<br/><br/>systemctl restart vsftpd<br/><br/><br/><br/><br/><br/>八、认识vsftpd传输模式<br/>主动模式<br/><br/><br/><br/>在主动模式下，FTP客户端从任意端口5150（端口号>1023）发起一个FTP请求，并携带自己监听的端口号5151（发送的端口号+1=监听端口号）；随后服务器返回确认，然后从服务器本地的20端口主动发起连接请求到客户端的监听端口5151，最后客户端返回确认。<br/><br/>被动模式<br/><br/><br/><br/>在被动模式中，命令连接和数据连接都由客户端来发起，如上图所示，客户端用随机命令端口5150向服务器的21命令端口发送一个PASV请求，然后服务器返回数据端口3267，告诉客户端我在哪个端口监听数据连接。然后客户端向服务器的监听端口3268发起数据连接，最后服务器回复确认。<br/><br/>vsftpd默认是被动模式。所以客户端要设置被动模式连接，如果到现在还没连接成功的看客户端有没有设置被动传输模式。<br/><br/>九、500 OOPS:priv_sock_get_cmd错误<br/>网上很多说是selinux设置问题，我按照他们的都改了，但是还是不行。最后我发现问题是出在pam文件里。<br/><br/>auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser<br/><br/>account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser<br/><br/>如果你是64位，你需要添加的/lib64/,我遇到的问题就这么的解决了。<br/><br/>如果哪里有写错的，请指出来,谢谢。<br/><br/><br/><a href="http://www.sohu.com/a/280848734_100155594" target="_blank">http://www.sohu.com/a/280848734_100155594</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] Centos7.5搭建FTP服务-vsftpd（超详细） ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>