赖老师 發表於 2022-5-27 12:21:00

linux下搭建ftp文件服务器

<h3 id="linux下搭建ftp文件服务器">linux下搭建ftp文件服务器</h3>
<h4 id="一搭建步骤以在centos7中搭建为例">一、搭建步骤(以在centos7中搭建为例)</h4>
<p>1、首先检查一下系统中是否已经安装了vsftpd软件</p>
<pre><code class="language-shell"># 查看是否安装vsftpd
rpm -q vsftpd
rpm -qa |grep vsftpd
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121301144-1560736855.png" alt="" loading="lazy"></p>
<p>2、采用yum方式安装vsftpd</p>
<pre><code class="language-shell">yum install -y vsftpd

# 查看vsftp的安装目录
whereis vsftpd
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121316752-549335472.png" alt="" loading="lazy"></p>
<p>3、关闭selinux</p>
<pre><code class="language-shell">vi /etc/sysconfig/selinux
# 将配置SELinux=enforcing改为SELinux=disabled
SELinux=disabled
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121332960-1675885369.png" alt="" loading="lazy"></p>
<p>保存退出并重启服务器</p>
<p>4、关闭防火墙</p>
<pre><code class="language-shell"># 关闭防火墙
systemctl stop firewalld.service

# 查看防火墙的状态
systemctl status firewalld.service
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121349440-2110858367.png" alt="" loading="lazy"></p>
<p>5、启动vsftp服务</p>
<pre><code class="language-shell">systemctl start vsftpd.servicce
</code></pre>
<p>6、查看服务是否启动成功</p>
<pre><code class="language-shell">netstat -npal|grep vsftpd
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121431684-529244682.png" alt="" loading="lazy"></p>
<p>7、设置vsftpd开机自启</p>
<pre><code class="language-shell">systemctl enable vsftpd.service
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121533135-353460553.png" alt="" loading="lazy"></p>
<h4 id="二vsftpd主要的配置">二、vsftpd主要的配置</h4>
<p>1、ftpusers 该文件用来指定哪些用户不能访问ftp服务器</p>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121554321-647208298.png" alt="" loading="lazy"></p>
<p>2、user_list 该文件用来指定的默认账户在默认情况下也不能访问ftp服务器。</p>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121604987-742678195.png" alt="" loading="lazy"></p>
<p>3、修改配置文件</p>
<blockquote>
<p>vsftpd.conf vsftpd的主要配置文件,路径:/etc/vsftpd/vsftpd.conf</p>
</blockquote>
<pre><code class="language-shell">#不允许匿名访问(不登录默认访问某目录/var/ftp)
anonymous_enable=NO
#允许ascii文件上传和下载
ascii_upload_enable=YES
ascii_download_enable=YES
#将用户限制在为其配置的主目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
</code></pre>
<p>4、匿名用户登录</p>
<blockquote>
<p>匿名登陆</p>
<ol>
<li>
<p>anonymous_enable=YES表示可以匿名登陆,保存后重新启动vsftp服务systemctl restart vsftpd.service),即可以匿名登陆ftp服务(ftp ipaddr),密码是空,对应目录是/var/ftp.</p>
</li>
<li>
<p>anonymous_enable=NO,匿名就无法登录。</p>
</li>
</ol>
</blockquote>
<p>5、多用户配置</p>
<ol>
<li>首先需要在vsftp.conf添加如下配置</li>
</ol>
<pre><code class="language-shell"># 设置启用虚拟用户功能
guest_enable=YES
# 制定宿主用户名(我们后续需要为我们的系统增加该用户)
guest_username=ftpuser
# 制定虚拟用户配置文件放置文件夹(需自己建立)
user_config_dir=/etc/vsftpd/vuser_conf
# 允许写
allow_writeable_chroot=YES
</code></pre>
<ol start="2">
<li>创建宿主用户</li>
</ol>
<pre><code class="language-shell">#创建宿主主文件夹
cd /home
mkdir vsftpd
# 创建用户 ftpuser 指定 `/home/vsftpd` 目录
# -s /sbin/nologin ftpuser 表示不允许该用户通过命令行方式登录
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
# 设置用户 ftpuser 的密码
passwd ftpuser
# 把 /home/vsftpd 的所有权给ftpuser.root
chown -R ftpuser.root /home/vsftpd
</code></pre>
<ol start="3">
<li>创建虚拟用户信息文件</li>
</ol>
<p>vsftp目录下</p>
<pre><code class="language-shell">cd /etc/vsftpd/
</code></pre>
<p>创建用户信息文件</p>
<pre><code class="language-shell">touch vuser_passwd
vim vuser_passwd
</code></pre>
<blockquote>
<p>#编辑如下内容,创建虚拟账户信息,奇数行为用户名,偶数行为密码</p>
</blockquote>
<pre><code class="language-shell">ftp-user1
123456
ftp-user2
123456
</code></pre>
<ol start="4">
<li>生成虚拟用户数据文件</li>
</ol>
<pre><code class="language-shell">db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db
chmod 600 /etc/vsftpd/vuser_passwd.db
</code></pre>
<p>执行上述操作后会在当前文件下生成一个vuser_passwd.db文件</p>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121642357-975022632.png" alt="" loading="lazy"></p>
<ol start="5">
<li>编辑pam认证文件</li>
</ol>
<pre><code class="language-shell">vim /etc/pam.d/vsftpd
</code></pre>
<blockquote>
<p>将其他都注释掉,添加下面两行;</p>
<p>注:db=/etc/vsftpd/vuser_passwd 中的vuser_passwd 是你生成的虚拟用户的db文件,这里不要加扩展名。</p>
</blockquote>
<p>32位系统:</p>
<pre><code class="language-shell">auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account
required pam_userdb.so db=/etc/vsftpd/vuser_passwd
</code></pre>
<p>64位系统:</p>
<pre><code class="language-shell">auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
</code></pre>
<p>查看系统位数:</p>
<pre><code class="language-shell">getconf LONG_BIT
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121658047-1705405283.png" alt="" loading="lazy"></p>
<ol start="6">
<li>为虚拟账户创建访问根目录,要在宿主用户下</li>
</ol>
<blockquote>
<p>目录结构如下图所示</p>
</blockquote>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121722567-596199121.png" alt="" loading="lazy"></p>
<p>修改文件权限</p>
<pre><code class="language-shell">chmod 777 ftp-user1
chmod 777 ftp-user2
</code></pre>
<ol start="7">
<li>创建虚拟用户配置目录</li>
</ol>
<pre><code class="language-shell">cd /etc/vsftpd/
</code></pre>
<p>创建上述配置文件中配置的虚拟用户文件夹,一定要对应</p>
<pre><code class="language-shell">mkdir vuser_conf
cd vuser_conf
</code></pre>
<blockquote>
<p>创建虚拟用户配置文件,文件名称要与虚拟用户名称相同</p>
<p>这里我们配置两个虚拟用户就创建两个配置文件</p>
</blockquote>
<pre><code class="language-shell">touch ftp-user1 ftp-user2
</code></pre>
<pre><code class="language-shell">#编辑两个文件,加入以下信息(注意加粗部分要替换为你虚拟账户要访问的根目录名称)
local_root=/home/vsftpd/ftp-user1
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
</code></pre>
<ol start="8">
<li>创建chroot_list</li>
</ol>
<pre><code class="language-shell">cd /etc/vsftpd
touch chroot_list
vim chroot_list
</code></pre>
<p>写入虚拟用户名</p>
<pre><code class="language-shell">ftp-user1
ftp-user2
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121748885-2087538238.png" alt="" loading="lazy"></p>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121811915-500434439.png" alt="" loading="lazy"></p>
<ol start="9">
<li>重启VSFTP服务</li>
</ol>
<pre><code class="language-shell">systemctl restart vsftpd.service
</code></pre>
<ol start="10">
<li>
<p>可以在windows中访问测试,浏览器中或者使用FileZilla连接,将ip地址换成自己机器的ip地址即可。</p>
<p>10.1浏览器中访问</p>
</li>
</ol>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121830369-1449979089.png" alt="" loading="lazy"></p>
<pre><code>10.2windows中访问
</code></pre>
<p><img src="https://img2022.cnblogs.com/blog/2608099/202205/2608099-20220527121841193-1743039799.png" alt="" loading="lazy"></p>
<pre><code>10.3文件上传连接工具就自己试一下吧!
</code></pre>
<h4 id="三配置过程中可能出现的问题">三、配置过程中可能出现的问题</h4>
<p>1、解决报错 500 OOPS: vsftpd: refusing to run with writable root inside chroot()</p>
<p>添加配置</p>
<pre><code class="language-shell"># 如果启用了限定用户在其主目录下需要添加这个配置。
allow_writeable_chroot=YES
</code></pre>
<p>2、登录报错530,日志显示</p>
<pre><code class="language-shell">pam_unix(vsftpd:auth): check pass; user unknown
</code></pre>
<p>检查一下/etc/pam.d/vsftpd文件配置,一般是pam认证文件配置错误。</p><br><br>
来源:https://www.cnblogs.com/zichenglu/p/16317170.html
頁: [1]
查看完整版本: linux下搭建ftp文件服务器