linux下vsftpd的安装及配置使用详细步骤(推荐)
<p>vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。</p>
<p>
vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。</p>
<p>
比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。</p>
<p>
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。</p>
<p>
<span><strong>1.1 安装</strong></span></p>
<p>
命令:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_644693">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">yum </code><code class="bash functions">install</code> <code class="bash plain">vsftpd -y</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
配置Vsftpd</p>
<p>
安装完之后我们要对它进行配置,才能正常使用。</p>
<p>
编辑vsftpd的配置文件</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_74040">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">vi</code> <code class="bash plain">/etc/vsftpd/vsftpd</code><code class="bash plain">.conf</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
在配置文件中找到“anonymous_enable=YES”,将"YES"改为"No",将匿名登录禁用。</p>
<p>
添加开机自动启动,</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_943712">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">chkconfig vsftpd on</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
不确定是否已经加入了开机启动项可以运行chkconfig –list进行查看</p>
<p>
<strong>1.2 创建用户</strong></p>
<p>
命令:useradd ftpuser</p>
<p>
指定密码:passwd ftpuser</p>
<p>
此用户就是用来登录ftp服务器用的。</p>
<p>
这样一个用户建完,可以用这个登录,记得用普通登录不要用匿名了。登录后默认的路径为 /home/ftpuser.</p>
<p>
----------------------------------------------------------------------------------------------------------------------------------</p>
<p>
设置FTP用户的账号,例如账号为“ftpuser1”,目录为/home/ftpuser1,且设置不允许通过ssh登录。</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_584974">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">useradd</code> <code class="bash plain">-d </code><code class="bash plain">/home/ftpuser</code> <code class="bash plain">-s </code><code class="bash plain">/sbin/nologin</code> <code class="bash plain">ftpuser</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
设置账号对应的密码,例如密码为“ftpuser”</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_768401">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">passwd</code> <code class="bash plain">ftpuser</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<span><strong>1.3 开启selinux权限</strong></span></p>
<p>
VSFTPD是一个FTP服务器程序,然后SELinux是CentOS的防火墙组件。由于 vsftpd 默认被 SELinux 拦截,所以会遇到的FTP以下的问题:</p>
<p>
1.226 Transfer done (but failed to open directory).(传输完成,但是打开路径失败)</p>
<p>
2.550 Failed to change directory(更改路径失败)</p>
<p>
3.<br>
553 Could not create file.</p>
<p>
4.</p>
<p>
或者干脆在发送了LIST命令以后,服务器没响应,超时断开。</p>
<p>
遇到这样的问题,通常是vsftpd 没有足够的权限,很有可能是被SELinux阻止了。</p>
<p>
查看命令:getsebool -a | grep ftp</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_585241">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">getsebool -a | </code><code class="bash functions">grep</code> <code class="bash plain">ftpd</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash comments">#以下是显示出来的权限,off是关闭权限,on是打开权限</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">allow_ftpd_anon_write --> off</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">allow_ftpd_full_access --> off</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">allow_ftpd_use_cifs --> off</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">allow_ftpd_use_nfs --> off</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash plain">ftpd_connect_db --> off</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash plain">ftpd_use_passive_mode --> off</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash plain">ftp_home_dir --> off</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
其中,ftp_home_dir和allow_ftpd_full_access必须为on 才能使vsftpd 具有访问ftp根目录,以及文件传输等权限。</p>
<p>
设置命令:setsebool -p xxxxxx on</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_287458">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain"></code><code class="bash comments"># setsebool -P allow_ftpd_full_access on</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain"></code><code class="bash comments"># setsebool -P ftp_home_dir on</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
1.4 设置或关闭防火墙</p>
<p>
因为ftp默认的端口为21,而centos默认是没有开启的,所以要修改iptables文件</p>
<p>
设置:vi /etc/sysconfig/iptables</p>
<p>
在行上面有22 -j ACCEPT 下面另起一行输入跟那行差不多的,只是把22换成21,然后:wq保存。</p>
<p>
还要运行下,重启iptables</p>
<p>
重启:service iptables restart</p>
<p>
关闭防火墙:service iptables stop</p>
<p>
禁用防火墙重启:chkconfig iptables off</p>
<p>
1.5 启动vsftpd</p>
<p>
命令:service vsftpd start</p>
<p>
java客户端(代码)调用</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_971430">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
<div class="line number7 index6 alt2">
7</div>
<div class="line number8 index7 alt1">
8</div>
<div class="line number9 index8 alt2">
9</div>
<div class="line number10 index9 alt1">
10</div>
<div class="line number11 index10 alt2">
11</div>
<div class="line number12 index11 alt1">
12</div>
<div class="line number13 index12 alt2">
13</div>
<div class="line number14 index13 alt1">
14</div>
<div class="line number15 index14 alt2">
15</div>
<div class="line number16 index15 alt1">
16</div>
<div class="line number17 index16 alt2">
17</div>
<div class="line number18 index17 alt1">
18</div>
<div class="line number19 index18 alt2">
19</div>
<div class="line number20 index19 alt1">
20</div>
<div class="line number21 index20 alt2">
21</div>
<div class="line number22 index21 alt1">
22</div>
<div class="line number23 index22 alt2">
23</div>
<div class="line number24 index23 alt1">
24</div>
<div class="line number25 index24 alt2">
25</div>
<div class="line number26 index25 alt1">
26</div>
<div class="line number27 index26 alt2">
27</div>
<div class="line number28 index27 alt1">
28</div>
<div class="line number29 index28 alt2">
29</div>
<div class="line number30 index29 alt1">
30</div>
<div class="line number31 index30 alt2">
31</div>
<div class="line number32 index31 alt1">
32</div>
<div class="line number33 index32 alt2">
33</div>
<div class="line number34 index33 alt1">
34</div>
<div class="line number35 index34 alt2">
35</div>
<div class="line number36 index35 alt1">
36</div>
<div class="line number37 index36 alt2">
37</div>
<div class="line number38 index37 alt1">
38</div>
<div class="line number39 index38 alt2">
39</div>
<div class="line number40 index39 alt1">
40</div>
<div class="line number41 index40 alt2">
41</div>
<div class="line number42 index41 alt1">
42</div>
<div class="line number43 index42 alt2">
43</div>
<div class="line number44 index43 alt1">
44</div>
<div class="line number45 index44 alt2">
45</div>
<div class="line number46 index45 alt1">
46</div>
<div class="line number47 index46 alt2">
47</div>
<div class="line number48 index47 alt1">
48</div>
<div class="line number49 index48 alt2">
49</div>
<div class="line number50 index49 alt1">
50</div>
<div class="line number51 index50 alt2">
51</div>
<div class="line number52 index51 alt1">
52</div>
<div class="line number53 index52 alt2">
53</div>
<div class="line number54 index53 alt1">
54</div>
<div class="line number55 index54 alt2">
55</div>
<div class="line number56 index55 alt1">
56</div>
<div class="line number57 index56 alt2">
57</div>
<div class="line number58 index57 alt1">
58</div>
<div class="line number59 index58 alt2">
59</div>
<div class="line number60 index59 alt1">
60</div>
<div class="line number61 index60 alt2">
61</div>
<div class="line number62 index61 alt1">
62</div>
<div class="line number63 index62 alt2">
63</div>
<div class="line number64 index63 alt1">
64</div>
<div class="line number65 index64 alt2">
65</div>
<div class="line number66 index65 alt1">
66</div>
<div class="line number67 index66 alt2">
67</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">package com.jonychen.util;</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">import</code> <code class="bash plain">java.io.FileInputStream;</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash functions">import</code> <code class="bash plain">java.io.FileNotFoundException;</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash functions">import</code> <code class="bash plain">java.io.IOException;</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash functions">import</code> <code class="bash plain">java.io.InputStream;</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash functions">import</code> <code class="bash plain">java.net.SocketException;</code>
</div>
<div class="line number7 index6 alt2">
<code class="bash functions">import</code> <code class="bash plain">java.util.Date;</code>
</div>
<div class="line number8 index7 alt1">
<code class="bash functions">import</code> <code class="bash plain">java.util.UUID;</code>
</div>
<div class="line number9 index8 alt2">
<code class="bash functions">import</code> <code class="bash plain">org.apache.commons.net.</code><code class="bash functions">ftp</code><code class="bash plain">.FTP;</code>
</div>
<div class="line number10 index9 alt1">
<code class="bash functions">import</code> <code class="bash plain">org.apache.commons.net.</code><code class="bash functions">ftp</code><code class="bash plain">.FTPClient;</code>
</div>
<div class="line number11 index10 alt2">
<code class="bash plain">public class FtpUploadUtil {</code>
</div>
<div class="line number12 index11 alt1">
<code class="bash spaces"> </code><code class="bash plain">private static ThreadLocal<FTPClient> threadLocal = new ThreadLocal<>();</code>
</div>
<div class="line number13 index12 alt2">
<code class="bash spaces"> </code><code class="bash plain">private static ThreadLocal<String> threadLocalHost = new ThreadLocal<>();</code>
</div>
<div class="line number14 index13 alt1">
<code class="bash spaces"> </code><code class="bash plain">public static void init(String host,int port,String username,String password) throws SocketException, IOException {</code>
</div>
<div class="line number15 index14 alt2">
<code class="bash spaces"> </code><code class="bash plain">FTPClient client = threadLocal.get();</code>
</div>
<div class="line number16 index15 alt1">
<code class="bash spaces"> </code><code class="bash keyword">if</code><code class="bash plain">(client==null) {</code>
</div>
<div class="line number17 index16 alt2">
<code class="bash spaces"> </code><code class="bash plain">client = new FTPClient();</code>
</div>
<div class="line number18 index17 alt1">
<code class="bash spaces"> </code><code class="bash plain">//1</code><code class="bash plain">.连接</code>
</div>
<div class="line number19 index18 alt2">
<code class="bash spaces"> </code><code class="bash plain">client.connect(host,port);</code>
</div>
<div class="line number20 index19 alt1">
<code class="bash spaces"> </code><code class="bash plain">//2</code><code class="bash plain">.登录</code>
</div>
<div class="line number21 index20 alt2">
<code class="bash spaces"> </code><code class="bash plain">client.login(username,password);</code>
</div>
<div class="line number22 index21 alt1">
<code class="bash spaces"> </code><code class="bash plain">threadLocal.</code><code class="bash functions">set</code><code class="bash plain">(client);</code>
</div>
<div class="line number23 index22 alt2">
<code class="bash spaces"> </code><code class="bash plain">threadLocalHost.</code><code class="bash functions">set</code><code class="bash plain">(host);</code>
</div>
<div class="line number24 index23 alt1">
<code class="bash spaces"> </code><code class="bash plain">}</code>
</div>
<div class="line number25 index24 alt2">
<code class="bash spaces"> </code><code class="bash plain">}</code>
</div>
<div class="line number26 index25 alt1">
<code class="bash spaces"> </code><code class="bash plain">public static String upload(InputStream </code><code class="bash functions">local</code><code class="bash plain">,String fileName,String path) throws SocketException, IOException {</code>
</div>
<div class="line number27 index26 alt2">
<code class="bash spaces"> </code><code class="bash plain">String datePath = DateUtil.date2Str(new Date(),</code><code class="bash string">"/yyyy/MM/dd/"</code><code class="bash plain">);</code>
</div>
<div class="line number28 index27 alt1">
<code class="bash spaces"> </code><code class="bash plain">//</code><code class="bash plain">路径添加日期</code>
</div>
<div class="line number29 index28 alt2">
<code class="bash spaces"> </code><code class="bash plain">path+=datePath;</code>
</div>
<div class="line number30 index29 alt1">
<code class="bash spaces"> </code><code class="bash plain">FTPClient client = threadLocal.get();</code>
</div>
<div class="line number31 index30 alt2">
<code class="bash spaces"> </code><code class="bash plain">String host = threadLocalHost.get();</code>
</div>
<div class="line number32 index31 alt1">
<code class="bash spaces"> </code><code class="bash plain">//3</code><code class="bash plain">.指定文件上传路径(路径不存在返回</code><code class="bash functions">false</code><code class="bash plain">)</code>
</div>
<div class="line number33 index32 alt2">
<code class="bash spaces"> </code><code class="bash plain">boolean exists = client.changeWorkingDirectory(path);</code>
</div>
<div class="line number34 index33 alt1">
<code class="bash spaces"> </code><code class="bash keyword">if</code><code class="bash plain">(!exists) {</code>
</div>
<div class="line number35 index34 alt2">
<code class="bash spaces"> </code><code class="bash plain">String pathArray[] = path.</code><code class="bash functions">split</code><code class="bash plain">(</code><code class="bash string">"/"</code><code class="bash plain">);</code>
</div>
<div class="line number36 index35 alt1">
<code class="bash spaces"> </code><code class="bash plain">String temp = </code><code class="bash string">"/"</code><code class="bash plain">;</code>
</div>
<div class="line number37 index36 alt2">
<code class="bash spaces"> </code><code class="bash keyword">for</code><code class="bash plain">(String p:pathArray) {</code>
</div>
<div class="line number38 index37 alt1">
<code class="bash spaces"> </code><code class="bash plain">temp+=(p+</code><code class="bash string">"/"</code><code class="bash plain">);</code>
</div>
<div class="line number39 index38 alt2">
<code class="bash spaces"> </code><code class="bash plain">//4</code><code class="bash plain">.如果文件路径不存在,则创建(一次只能创建一级目录)</code>
</div>
<div class="line number40 index39 alt1">
<code class="bash spaces"> </code><code class="bash plain">client.makeDirectory(temp);</code>
</div>
<div class="line number41 index40 alt2">
<code class="bash spaces"> </code><code class="bash plain">}</code>
</div>
<div class="line number42 index41 alt1">
<code class="bash spaces"> </code><code class="bash plain">//</code><code class="bash plain">重新指定文件上传路径</code>
</div>
<div class="line number43 index42 alt2">
<code class="bash spaces"> </code><code class="bash plain">client.changeWorkingDirectory(path);</code>
</div>
<div class="line number44 index43 alt1">
<code class="bash spaces"> </code><code class="bash plain">}</code>
</div>
<div class="line number45 index44 alt2">
<code class="bash spaces"> </code><code class="bash plain">//5</code><code class="bash plain">.指定文件类型</code>
</div>
<div class="line number46 index45 alt1">
<code class="bash spaces"> </code><code class="bash plain">client.setFileType(FTP.BINARY_FILE_TYPE);</code>
</div>
<div class="line number47 index46 alt2">
<code class="bash spaces"> </code><code class="bash plain">//</code><code class="bash plain">获取后缀</code>
</div>
<div class="line number48 index47 alt1">
<code class="bash spaces"> </code><code class="bash plain">String suffix = fileName.substring(fileName.lastIndexOf(</code><code class="bash string">"."</code><code class="bash plain">));</code>
</div>
<div class="line number49 index48 alt2">
<code class="bash spaces"> </code><code class="bash plain">String uuid = UUID.randomUUID().toString();</code>
</div>
<div class="line number50 index49 alt1">
<code class="bash spaces"> </code><code class="bash plain">//6</code><code class="bash plain">.执行上传</code>
</div>
<div class="line number51 index50 alt2">
<code class="bash spaces"> </code><code class="bash plain">client.storeFile(uuid+suffix, </code><code class="bash functions">local</code><code class="bash plain">);</code>
</div>
<div class="line number52 index51 alt1">
<code class="bash spaces"> </code><code class="bash plain">//7</code><code class="bash plain">.退出</code>
</div>
<div class="line number53 index52 alt2">
<code class="bash spaces"> </code><code class="bash plain">client.</code><code class="bash functions">logout</code><code class="bash plain">();</code>
</div>
<div class="line number54 index53 alt1">
<code class="bash spaces"> </code><code class="bash plain">//8</code><code class="bash plain">.断开连接</code>
</div>
<div class="line number55 index54 alt2">
<code class="bash spaces"> </code><code class="bash plain">client.disconnect();</code>
</div>
<div class="line number56 index55 alt1">
<code class="bash spaces"> </code><code class="bash plain">threadLocalHost.remove();</code>
</div>
<div class="line number57 index56 alt2">
<code class="bash spaces"> </code><code class="bash plain">threadLocal.remove();</code>
</div>
<div class="line number58 index57 alt1">
<code class="bash spaces"> </code><code class="bash keyword">return</code> <code class="bash string">"http://"</code><code class="bash plain">+host+</code><code class="bash string">"/jonychen"</code><code class="bash plain">+datePath+uuid+suffix;</code>
</div>
<div class="line number59 index58 alt2">
<code class="bash spaces"> </code><code class="bash plain">}</code>
</div>
<div class="line number60 index59 alt1">
<code class="bash spaces"> </code><code class="bash plain">public static void main(String[] args) throws SocketException, IOException {</code>
</div>
<div class="line number61 index60 alt2">
<code class="bash spaces"> </code><code class="bash plain">InputStream </code><code class="bash functions">local</code> <code class="bash plain">= new FileInputStream(</code><code class="bash string">"D:\\Documents\\Pictures\\01.png"</code><code class="bash plain">);</code>
</div>
<div class="line number62 index61 alt1">
<code class="bash spaces"> </code><code class="bash plain">init(</code><code class="bash string">"192.168.178.161"</code><code class="bash plain">, 21, </code><code class="bash string">"ftpuser"</code><code class="bash plain">, </code><code class="bash string">"111111"</code><code class="bash plain">);</code>
</div>
<div class="line number63 index62 alt2">
<code class="bash plain"> </code><code class="bash plain">//</code><code class="bash plain">上传路径</code>
</div>
<div class="line number64 index63 alt1">
<code class="bash spaces"> </code><code class="bash plain">String res = upload(</code><code class="bash functions">local</code><code class="bash plain">, </code><code class="bash string">"code.png"</code><code class="bash plain">,</code><code class="bash string">"/home/ftpuser/ego"</code><code class="bash plain">);</code>
</div>
<div class="line number65 index64 alt2">
<code class="bash spaces"> </code><code class="bash plain">System.out.println(res);</code>
</div>
<div class="line number66 index65 alt1">
<code class="bash spaces"> </code><code class="bash plain">}</code>
</div>
<div class="line number67 index66 alt2">
<code class="bash plain">}</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<span><strong>总结</strong></span></p>
<p>
以上所述是小编给大家介绍的linux下vsftpd的安装及配置使用详细步骤,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!</p>
<p>
原文链接:https://www.cnblogs.com/lxcy/archive/2018/01/04/8196260.html</p>
頁:
[1]