<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CentOS &#8211; 良的世界</title>
	<atom:link href="https://www.lemonary.cn/tag/centos/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.lemonary.cn</link>
	<description></description>
	<lastBuildDate>Mon, 27 Jan 2025 08:01:28 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.lemonary.cn/wp-content/uploads/2024/12/profile-150x150.jpg</url>
	<title>CentOS &#8211; 良的世界</title>
	<link>https://www.lemonary.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>CentOS下部署vsftpd服务的详细教程</title>
		<link>https://www.lemonary.cn/centos%e4%b8%8b%e9%83%a8%e7%bd%b2vsftpd%e6%9c%8d%e5%8a%a1%e7%9a%84%e8%af%a6%e7%bb%86%e6%95%99%e7%a8%8b/</link>
					<comments>https://www.lemonary.cn/centos%e4%b8%8b%e9%83%a8%e7%bd%b2vsftpd%e6%9c%8d%e5%8a%a1%e7%9a%84%e8%af%a6%e7%bb%86%e6%95%99%e7%a8%8b/#respond</comments>
		
		<dc:creator><![CDATA[shine]]></dc:creator>
		<pubDate>Sun, 26 Jan 2025 03:26:42 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[vsftpd]]></category>
		<guid isPermaLink="false">https://www.lemonary.cn/?p=1379</guid>

					<description><![CDATA[原文链接：https://blog.csdn.net/ruogan1993/article/details/1 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">原文链接：<a href="https://blog.csdn.net/ruogan1993/article/details/134604642">https://blog.csdn.net/ruogan1993/article/details/134604642</a></p>
</blockquote>



<h2 class="wp-block-heading">一、前言</h2>



<p class="wp-block-paragraph">本文介绍总结在CentOS系统Linux下通过vsftp服务搭建FTP服务器</p>



<h2 class="wp-block-heading">二、FTP介绍</h2>



<p class="wp-block-paragraph">FTP（File Transfer&nbsp;<a href="https://so.csdn.net/so/search?q=Protocol&amp;spm=1001.2101.3001.7020" target="_blank" rel="noreferrer noopener">Protocol</a>）是一种文件传输协议，基于客户端/服务器架构，支持以下两种工作模式：</p>



<ul class="wp-block-list">
<li>主动模式：客户端向FTP服务器发送端口信息，由服务器主动连接该端口。</li>



<li>被动模式：FTP服务器开启并发送端口信息给客户端，由客户端连接该端口，服务器被动接受连接。</li>
</ul>



<p class="wp-block-paragraph">说明：大多数FTP客户端都在局域网中，没有独立的公网IP地址，且有防火墙阻拦，主动模式下FTP服务器成功连接到客户端比较困难。因此，如无特殊需求，建议您将FTP服务器配置为被动模式。</p>



<p class="wp-block-paragraph">FTP支持以下三种认证模式：</p>



<ul class="wp-block-list">
<li>匿名用户模式：任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全，一般只用来保存不重要的公开文件，不推荐在生产环境中使用。</li>



<li>本地用户模式：通过Linux系统本地账号进行验证的模式，相较于匿名用户模式更安全。</li>



<li>虚拟用户模式：FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务，而不能访问Linux系统的其它资源，进一步增强了FTP服务器的安全性。</li>
</ul>



<h2 class="wp-block-heading">三、部署教程</h2>



<h3 class="wp-block-heading">3.1 安装vsftpd服务</h3>



<pre class="wp-block-code"><code>yum -y install vsftpd</code></pre>



<h3 class="wp-block-heading">3.2 虚拟用户模式</h3>



<h4 class="wp-block-heading">3.2.1 创建账号密码</h4>



<p class="wp-block-paragraph">首先，创建用于进行ftp认证的用户数据库文件vu.txt，其中奇数行是用户名，偶数行是登录密码。其次，利用db_load命令用哈希算法将原始明文信息文件转换成vsftpd服务程序可加载的数据库文件vu.db。最后，为了避免其它用户访问该数据库文件的内容，修改降低数据库文件的权限，把原始的明文文件删除。</p>



<pre class="wp-block-code"><code>#进入vsftpd配置目录
cd /etc/vsftpd/

#创建vu.txt明文文件
cat &gt;&gt;/etc/vsftpd/vu.txt&lt;&lt;EOF
admin
admin
upload
upload
download
download
EOF

#把vu.txt明文文件转换成vu.db数据库文件
db_load -T -t hash -f vu.txt vu.db

#修改降低vu.db数据库文件的权限并删除原始明文文件
chmod 600 vu.db
rm -f vu.txt</code></pre>



<h4 class="wp-block-heading">3.2.2 创建用户、虚拟用户、ftp路径</h4>



<p class="wp-block-paragraph">创建本地用户，创建虚拟用户upload目录并修改目录的所属组和用户，修改ftp根目录权限</p>



<pre class="wp-block-code"><code>#创建系统本地用户ftpadmin及所属目录并禁用该用户登录服务器
useradd -d /home/ftp -s /sbin/nologin ftpadmin

#创建虚拟用户upload的目录
mkdir /home/ftp/upload

#修改虚拟用户upload的所属组和所属用户
chown -R ftpadmin:ftpadmin /home/ftp/upload

#修改/home/ftp/的权限
chmod -Rf 755 /home/ftp/</code></pre>



<h4 class="wp-block-heading">3.2.3 创建PAM文件</h4>



<p class="wp-block-paragraph">创建用于支持虚拟用户的PAM文件</p>



<pre class="wp-block-code"><code>#Tips：不用写数据库文件vu.db的后缀
cat >>/etc/pam.d/vs.vu&lt;&lt;EOF
auth required pam_userdb.so db=/etc/vsftpd/vu
account required pam_userdb.so db=/etc/vsftpd/vu
EOF</code></pre>



<h4 class="wp-block-heading">3.2.4 创建账号配置文件</h4>



<p class="wp-block-paragraph">创建目录/etc/vsftpd/vu_perm用于存放为不同虚拟用户设置不同的权限的文件。例如，admin，upload和download。</p>



<pre class="wp-block-code"><code>#Tips:虚拟用户权限的文件名与虚拟用户名称保持一致。
#创建目录/etc/vsftpd/vu_perm
mkdir /etc/vsftpd/vu_perm

#创建虚拟用户admin的权限文件admin,使其具备上传、下载、创建目录、删除和移动文件的权限
cat &gt;&gt;/etc/vsftpd/vu_perm/admin&lt;&lt;EOF
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftp
EOF

#创建虚拟用户upload的权限文件upload,使其仅具备上传文件、创建目录的权限
cat &gt;&gt;/etc/vsftpd/vu_perm/upload&lt;&lt;EOF
anon_upload_enable=YES
anon_mkdir_write_enable=YES
local_root=/home/ftp/upload
EOF

#创建虚拟用户download的权限文件download,使其仅具备下载文件的权限
cat &gt;&gt;/etc/vsftpd/vu_perm/download&lt;&lt;EOF
anon_world_readable_only=NO
local_root=/home/ftp
EOF

#为了安全起见，递归修改/etc/vsftpd/vu_perm的权限
chmod -R 600 /etc/vsftpd/vu_perm/</code></pre>



<h4 class="wp-block-heading">3.2.5 配置vsftpd服务程序的主配置文件</h4>



<pre class="wp-block-code"><code>#备份sftpd服务程序的主配置文件
cp /etc/vsftpd/vsftpd.conf.bak

#把默认未注释的配置文件重定写入vsftpd.conf配置文件中
grep -v "#" /etc/vsftpd/vsftpd.conf.bak &gt; /etc/vsftpd/vsftpd.conf

#修改配置文件
vi /etc/vsftpd/vsftpd.conf</code></pre>



<p class="wp-block-paragraph">修改后配置内容，<strong>加粗部分为修改或增加内容</strong></p>



<p class="wp-block-paragraph">[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf<br><strong>anonymous_enable=NO</strong><br>local_enable=YES<br>write_enable=YES<br><strong>guest_enable=YES<br>guest_username=ftpadmin<br>allow_writeable_chroot=YES</strong><br>local_umask=022<br>dirmessage_enable=YES<br>xferlog_enable=YES<br>connect_from_port_20=YES<br><strong>xferlog_file=/var/log/xferlog</strong><br>xferlog_std_format=YES<br>listen=NO<br>listen_ipv6=YES<br><strong>pam_service_name=vs.vu</strong><br>userlist_enable=YES<br><strong>user_config_dir=/etc/vsftpd/vu_perm</strong></p>



<h4 class="wp-block-heading">3.2.6</h4>



<h3 class="wp-block-heading">3.3 安全配置，涉及到Firewall和SeLinux的配置</h3>



<pre class="wp-block-code"><code>#放通ftp服务，允许客户端连接服务器ftp服务（TCP 21）并使配置生效
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload

#获取关于ftp相关的SeLinux布尔值设置
getsebool -a | grep ftp

#修改SeLinux关于ftp服务的布尔值
#Tips：-p表示永久生效，不受服务器重启的影响。
setsebool -P ftpd_connect_all_unreserved=on
setsebool -P ftpd_full_access=on
#也可以选择直接关闭SELinux：修改/etc/sysconfig/selinux文件，SELINUX=disabled，并重启服务器生效。</code></pre>



<h3 class="wp-block-heading">3.4 重启vsftpd服务并设置跟随系统自启动</h3>



<pre class="wp-block-code"><code>#重启vsftpd服务
systemctl restart vsftpd

#设置vsftpd服务开机自启动
systemctl enable vsftpd</code></pre>



<h3 class="wp-block-heading">另：本地用户模式 &#8211; root用户</h3>



<p class="wp-block-paragraph">vsftpd服务主配置文件</p>



<pre class="wp-block-code"><code>anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=NO
listen_ipv6=YES

pam_service_name=vsftpd
userlist_enable=YES</code></pre>



<p class="wp-block-paragraph">创建/etc/vsftpd/chroot_list文件，写入root与密码（第一行写root，第二行写密码），例如</p>



<pre class="wp-block-code"><code>root
123456789</code></pre>



<p class="wp-block-paragraph">将/etc/vsftpd/ftpusers和/etc/vsftpd/user_list两个文件中的root全部注释。</p>



<p class="wp-block-paragraph">同样配置完成需要重启vsftpd服务生效。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.lemonary.cn/centos%e4%b8%8b%e9%83%a8%e7%bd%b2vsftpd%e6%9c%8d%e5%8a%a1%e7%9a%84%e8%af%a6%e7%bb%86%e6%95%99%e7%a8%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
