0410vsftpd.htm
来自「鸟哥的linux私房菜」· HTM 代码 · 共 905 行 · 第 1/5 页
HTM
905 行
<li><span class=text_import2>no_anon_password=YES (NO)</span><br />
当设定为 YES 时,表示 anonymous 将会略过密码检验步骤,而直接进入 vsftpd 伺服器内喔!所以一般预设都是 NO 的!</li><br />
<li><span class=text_import2>anon_max_rate=0</span><br />
这个设定值后面接的数值单位为 bytes/秒 ,限制 anonymous 的传输速度,如果是 0
则不限制(由最大频宽所限制),如果您想让 anonymous 仅有
30 KB/s 的速度,可以设定『anon_max_rate=30000』</li><br />
<li><span class=text_import2>anon_umask=077</span><br />
限制 anonymous 的权限!如果是 077 则 anonymous 传送过来的档案
权限会是 -rw------- 喔!</li><br />
</ul>
<hr /><li><span class=text_import1>关于系统安全方面的一些设定值</span></li>
<ul>
<li><span class=text_import2>ascii_download_enable=YES (NO)</span><br />
如果设定为 YES ,那么 client 就可以使用 ASCII 格式下载档案。</li><br />
<li><span class=text_import2>ascii_upload_enable=YES (NO)</span><br />
与上一个设定类似的,只是这个设定针对上传而言!预设是 NO</li><br />
<li><span class=text_import2>one_process_model=YES (NO)</span><br />
这个设定项目比较危险一点~当设定为 YES 时,表示每个建立的连线
都会拥有一支 process 在负责,可以增加 vsftpd 的效能。不过,
除非您的系统比较安全,而且硬体配备比较高,否则容易耗尽系统资源喔!一般建议设定为 NO 的啦!</li><br />
<li><span class=text_import2>tcp_wrappers=YES (NO)</span><br />
当然我们都习惯支援 TCP Wrappers 的啦!所以设定为 YES 吧!</li><br />
<li><span class=text_import2>xferlog_enable=YES (NO)</span><br />
当设定为 YES 时,使用者上传与下载档案都会被纪录起来。记录的档案与下一个设定项目有关∶</li><br />
<li><span class=text_import2>xferlog_file=/var/log/vsftpd.log</span><br />
如果上一个 xferlog_enable=YES 的话,这里就可以设定了!这个是登录档的档名啦!</li><br />
<li><span class=text_import2>xferlog_std_format=YES (NO)</span><br />
是否设定为 wu ftp 相同的登录档格式?!预设为 NO ,因为登录档会比较容易读!
不过,如果您有使用 wu ftp 登录档的分析软体,这里才需要设定为 YES</li><br />
<li><span class=text_import2>nopriv_user=nobody</span><br />
我们的 vsftpd 预设以 nobody 作为此一服务执行者的权限。因为 nobody 的权限
相当的低,因此即使被入侵,入侵者仅能取得 nobody 的权限喔!</li><br />
<li><span class=text_import2>pam_service_name=vsftpd</span><br />
这个是 pam 模组的名称,我们放置在 /etc/pam.d/vsftpd 即是这个咚咚!</li><br />
</ul>
上面这些是相当常见的 vsftpd 的设定参数,还有很多参数我没有列出来,您可以使用 man 5 vsftpd.conf
查阅喔!不过,基本上上面这些参数已经够我们设定 vsftpd 棉。<br /><br />
</div>
<hr /><a NAME="server_start"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">vsftpd 启动的模式</span><br />
<div class=block2>
vsftpd 可以拥有两种启动的方式,分别是一直在监听的 stand alone ,一种则是透过 xinetd 这个 super daemon
来管理的方式,两种方式所使用的启动程序不太相同,而我们的 CentOS 则预设是以 stand alone 来启动的。
那什么时候应该选择 stand alone 或者是 super daemon 呢?如果你的 ftp
伺服器是提供给整个网际网路来进行大量下载的任务,例如各大专院校的 FTP 伺服器,那建议你使用 stand alone 的方式,
服务的速度上会比较好。如果仅是提供给内部人员使用的 FTP 伺服器,那使用 super daemon 来管理即可啊。<br /><br />
<li><span class=text_import1>利用系统提供的 script 来启动 vsftpd</span><br />
<div class=block2>
其实 CentOS 不用作任何设定就能够启动 vsftpd 棉!是这样启动的啦∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>/etc/init.d/vsftpd start</span>
[root@linux ~]# <span class=term_command>netstat -tulnp| grep 21</span>
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 11689/<span class=term_write>vsftpd</span>
<span class=term_say># 看到棉,是由 vsftpd 所启动的呢!</span>
</pre></td></tr></table>
</div>
<li><span class=text_import1>自行设定以 super daemon 来启动</span><br />
<div class=block2>
如果你的 FTP 是很少被使用的,那么利用 super daemon 来管理不失为一个好主意。
不过若你想要使用 super daemon 管理的话,那就得要自行修改一下设定档了。其实也不难啦,你应该要这样处理的∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/vsftpd/vsftpd.conf</span>
<span class=term_say># 找到底下这一行∶大约在 109 行左右啦!</span>
listen=YES
<span class=term_say># 将他改成这样啊∶</span>
listen=<span class=term_write>NO</span>
</pre></td></tr></table>
接下来修改一下 super daemon 的设定档,底下这个档案你必须要自行建立的,原本是不存在的喔∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/xinetd.d/vsftpd</span>
<span class=term_write>service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
log_on_success += DURATION USERID
log_on_failure += USERID
nice = 10
disable = no
}</span>
</pre></td></tr></table>
然后尝试启动看看呢∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>/etc/init.d/vsftpd stop</span>
[root@linux ~]# <span class=term_command>/etc/init.d/xinetd restart</span>
[root@linux ~]# <span class=term_command>netstat -tulnp| grep 21</span>
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 32274/<span class=term_write>xinetd</span>
</pre></td></tr></table>
</div>
有趣吧!两者启动的方式可不一样啊!管理的方式就会差很多的呦!
不管你要使用哪种启动的方式,<span class=text_import2>切记不要两者同时启动,否则会发生错误的!
你应该使用 chkconfig --list 检查一下这两种启动的方式</span>,然后依据你的需求来决定用哪一种方式启动。
鸟哥底下的设定都会以 stand alone 这个 CentOS 预设的启动模式来处理,所以赶紧将刚刚的动作给他改回来喔!<br /><br />
</div>
<hr /><a NAME="server_basic"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">CentOS 的 vsftpd 预设值</span><br />
<div class=block2>
在 CentOS 的预设值当中,vsftpd 是同时开放实体用户与匿名使用者的,CentOS 的预设值如下∶<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/vsftpd/vsftpd.conf</span>
<span class=term_say># 底下鸟哥仅列出有设定的项目,若无设定时,请以您系统的 man 5 vsftpd.conf
# 结果去搜寻预设值即可喔!
# 1. 与匿名者有关的资讯∶</span>
anonymous_enable=YES
<span class=term_say># 2. 与实体用户有关的设定</span>
local_enable=YES
write_enable=YES
local_umask=022
userlist_enable=YES
<span class=term_say># 3. 与主机有关的设定</span>
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
pam_service_name=vsftpd
listen=YES
tcp_wrappers=YES
</pre></td></tr></table>
上面各项设定值请自行<a href="#server_vsftpd.conf">参考前一小节 vsftpd.conf 设定项目</a>的详细说明吧。
而通过这样的设定值咱们的 vsftpd 可以达到如下的功能∶<br />
<ul><span class=text_import2>
<li>你可以使用 anonymous 这个匿名帐号或其他实体帐号 (/etc/passwd) 登入;
<li>anonymous 的家目录在 /var/ftp ,且无上传权限,亦已经被 chroot 了;
<li>实体用户的家目录参考 /etc/passwd ,并没有被 chroot ,可前往任何有权限可进入的目录中;
<li>任何于 /etc/vsftpd.ftpusers 内存在的帐号均无法使用 vsftpd ;
<li>可利用 /etc/hosts.{allow|deny} 来作为基础防火墙;
<li>当用户端有任何上传/下载资讯时,该资讯会被纪录到 /var/log/vsftpd.log 中;
<li>主动式连线的埠口为 port 20;
<li>使用格林威治时间 (GMT)。
</span></ul>
所以当你启动 vsftpd 后,你的实体用户就能够直接利用 vsftpd 这个服务来传输他自己的资料了。
不过比较大的问题是,<span class=text_import2>因为 vsftpd 预设使用 GMT 时间,因为你在用户端使用 ftp
软体连接到 FTP 伺服器时,会发现每个档案的时间都慢了八小时了!</span>真是讨厌啊!
所以建议你加设一个参数值,就是『 use_localtime=YES 』棉!<br />
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi /etc/vsftpd/vsftpd.conf</span>
<span class=term_say># 在这个档案当中加入这一句即可</span>
<span class=term_write>use_localtime=YES</span>
<span class=term_say>.....底下省略.....</span>
[root@linux ~]# <span class=term_command>/etc/init.d/vsftpd restart</span>
</pre></td></tr></table>
如此一来你的 FTP 伺服器不但可以提供匿名帐号来下载 /var/ftp 的资料,如果使用实体帐号来登入的话,
就能够进入到该使用者的家目录底下去了!真是很简单方便的一个设定啊!且使用本地端时间呢! ^_^<br /><br />
</div>
<hr /><a NAME="server_real"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">仅有实体用户登入的设定</span><br />
<div class=block2>
虽然在 CentOS 的预设情况当中实体用户已经可以使用 FTP 的服务了,不过我们可能还需要一些额外的功能来限制实体用户,
举例来说,限制使用者无法离开家目录 (chroot) 、限制下载速率、限制使用者上传档案时的权限 (mask)等等。
底下我们先列出一些希望达到的功能,然后再继续进行额外功能的处理∶<br />
<ul><span class=text_import2>
<li>希望使用台湾本地时间取代 GMT 时间;
<li>使用者登入时显示一些欢迎讯息的资讯;
<li>系统帐号不可登入主机 (亦即 UID 小于 500 以下的帐号);
<li>一般实体用户可以进行上传、下载、建立目录及修改档案等动作;
<li>使用者新增的档案、目录之 umask 希望设定为 002;
<li>其他主机设定值保留<a href="#server_basic">预设值</a>即可。
</span></ul>
你可以自行处理 vsftpd.conf 这个档案,以下则是一个范例。注意,如果你的 vsftpd.conf 没有相关设定值,
请自行补上吧!OK!让我们
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?