小砼志 發表於 2008-9-8 18:49:00

OpenBSD 3.8 release 架设FTP服务器

<p><strong>使用OpenBSD 3.8 release自带的FTPD架设FTP服务器</strong></p>
<p><strong>
<p>OpenBSD的ftpd程序没有配置文件,就靠<a target="_blank" href="#" class="UBBWordLink">设置</a>运行参数进行配置。所有参数的含义都可以在ftpd<br />
的man文档中获得详细信息:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><em> $ man ftpd</em></strong></p>
<p><strong><em>ftpd</em></strong>程序的启动有三种<a target="_blank" href="#" class="UBBWordLink">方法</a>(<strong><em>inetd/&quot;rc file&quot;/&quot;command line&quot; </em></strong>):</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>1:&nbsp;inetd方式:</strong><br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在&quot;/etc/inetd.conf&quot;文件中有这么一行:<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><em> ftp&nbsp;stream&nbsp;tcp&nbsp;nowait&nbsp;root&nbsp;/usr/libexec/ftpd&nbsp;ftpd -US</em></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里为&quot;ftpd&quot;传递了两个参数&quot;-US&quot;。当然你还可以组合自己想要的参数。(一些常用参数的含义已在下文给出)。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><em> inetd</em></strong>方式还需要同时启动<strong><em>inetd</em></strong><a target="_blank" href="#" class="UBBWordLink">服务</a>,<strong><em>OpenBSD</em></strong>默认启动了<strong><em>inetd</em></strong>(可以看看 <strong><em>/etc/rc.conf </em></strong>中的&quot;<strong><em>inetd_flags</em></strong>&quot;变量的值)。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>2:&nbsp;&quot;rc&quot;方式;</strong><br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所谓&quot;rc&quot;方式,指的就是通过配置<strong><em>&quot;/etc/rc.conf&quot;</em></strong>或者<strong><em>&quot;/etc/rc.conf.local&quot;</em></strong>来启动<a target="_blank" href="#" class="UBBWordLink">系统</a><a target="_blank" href="#" class="UBBWordLink">服务</a>。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为<em><strong>&quot;/etc/rc.conf</strong></em>&quot;中的&quot;<strong><em>ftpd_flags</em></strong>&quot;变量<a target="_blank" href="#" class="UBBWordLink">设置</a>参数,并确保该行没有被注释掉。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种<a target="_blank" href="#" class="UBBWordLink">方法</a>需要在重新启动<a target="_blank" href="#" class="UBBWordLink">系统</a>后才会生效;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>3:&nbsp;直接在命令行下执行ftpd命令,这样就不需要重启<a target="_blank" href="#" class="UBBWordLink">系统</a>了:</strong><br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # /usr/libexec/ftpd -4DllUS</p>

<p><em><strong>ftpd</strong></em> 程序的终止:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1: 如果不需要提供ftp服务,则在 <strong><em>/etc/rc.conf </em></strong>中将 <strong><em>ftpd_flags</em></strong> 变量注释掉(在该行最开头加一个&quot;#&quot;符号);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2: 使用ps查看ftpd的PID,或者查看&quot;var/run/ftpd.pid&quot;文件,然后&quot;kill PID&quot;。</p>
<p>以下是<strong><em> ftpd</em></strong>&nbsp;常用的一些参数(这里列出的只是常用的,并不是全部。更多的参数请查看 <strong><em>ftpd</em></strong> 的man文档):</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-4</em></strong>&nbsp;如果指定了&quot;-D&quot;参数,则强制 <strong><em>ftpd </em></strong>只使用IPv4地址。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-6</em></strong>&nbsp;和&quot;-4&quot;的解释类似;如果指定了&quot;-D&quot;参数,则强制ftpd只使用IPv6地址。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-A</em></strong>&nbsp;只允许匿名登录(除非指定了&quot;-n&quot;选项)。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-D</em></strong>&nbsp;如果指定了该参数, <strong><em>ftpd </em></strong>将做为daemon运行,**** <strong><em>ftpd </em></strong>端口并且fork子进程对连接进行<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 处理。在繁忙的<a target="_blank" href="#" class="UBBWordLink">服务</a>器上,这样可以减少<a target="_blank" href="#" class="UBBWordLink">系统</a>负载,与使用 <strong><em>inetd </em></strong>方式启动ftpd比起来,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种方式使用更少的<a target="_blank" href="#" class="UBBWordLink">系统</a>资源。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-d</em></strong>&nbsp;使用<strong><em>LOG_FTP</em></strong>将Debug信息写入 <strong><em>syslog</em></strong>。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-l</em></strong>&nbsp; 每个成功和失败的 ftp session 都将由 <strong><em>LOG_FTP</em></strong> 工具通过<strong><em>syslog</em></strong>记录下日志。如果这个选<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 项被指定两次,所有<strong><em>get/put/append/delete/make directory/remove directory/rename</em></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a target="_blank" href="#" class="UBBWordLink">操作</a>以及所<a target="_blank" href="#" class="UBBWordLink">操作</a>的文件都将被记录进日志。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-U</em></strong>&nbsp;每个并发的ftp session都被记录到日志文件 <strong><em>/var/run/utmp</em></strong>,记录的格式就象who(1)命令<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 的输出一样。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong> -n</strong>&nbsp;禁止匿名登录。通常是允许的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-S</em></strong>&nbsp;如果<a target="_blank" href="#" class="UBBWordLink">设置</a>了这个参数, <strong><em>ftpd </em></strong>将会把所有匿名用户的下载情况记录在文件 <strong><em>/var/log/ftpd</em></strong> 中<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (如果该文件存在的话)。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-T maxtimeout</em></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 连接超时的时间限制。默认是2小时。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>-u mask</em></strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 强制<a target="_blank" href="#" class="UBBWordLink">设置</a>umask为指定的mask。而不是使用 <strong><em>/etc/login.conf</em></strong> 中的<a target="_blank" href="#" class="UBBWordLink">设置</a>(<strong><em>/etc/login.conf</em></strong> 中通常<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a target="_blank" href="#" class="UBBWordLink">设置</a>为022),并且不允许<strong><em>chmod</em></strong>。</p>
<p>看了这几个选项,你应该可以组合出合适的选项来满足自己的功能需求了。</p>
<p><strong>1:只允许使用<a target="_blank" href="#" class="UBBWordLink">系统</a>帐号登录FTP;</strong></p>
<p>因为匿名用户登录需要使用到<a target="_blank" href="#" class="UBBWordLink">系统</a>中的一个名为&quot;ftp&quot;的帐户(更多关于该帐户的讨论,请看本文下<br />
半部分),而OpenBSD系统中没有该帐户,需要手动建立并且<a target="_blank" href="#" class="UBBWordLink">设置</a>正确的权限,所以如果只允许用户<br />
通过<a target="_blank" href="#" class="UBBWordLink">系统</a>帐号登录FTP服务器,则只需要在 <strong><em>/etc/rc.conf</em></strong> 中将 <strong><em>ftpd_flags </em></strong>的值简单地<a target="_blank" href="#" class="UBBWordLink">设置</a>为&quot;-D&quot;即可<br />
(虽然这时候的<a target="_blank" href="#" class="UBBWordLink">设置</a>仍然允许匿名用户登录,但是因为<a target="_blank" href="#" class="UBBWordLink">系统</a>中没有&quot;ftp&quot;用户,所以无法登录)。当<br />
然你也可以多<a target="_blank" href="#" class="UBBWordLink">设置</a>一些参数。比如:</p>
<p><strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftpd_flags=&quot;-4DllUSn&quot;</em></strong></p>
<p>参考上面几个常用选项的说明,你就会明白这是什么意思了。&nbsp;<br />
&nbsp;<br />
<strong>2:允许匿名用户登录访问FTP资源;</strong>&nbsp;</p>
<p>因为匿名用户登录到FTP服务器后,实际上是一个&quot;ftp&quot;用户的身份进行所有<a target="_blank" href="#" class="UBBWordLink">操作</a>,所以出于安全考虑,<br />
这个用户的权限通常被<a target="_blank" href="#" class="UBBWordLink">设置</a>得很低。比如:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1:不为该用户提供一个可用的shell,使其无法登录<a target="_blank" href="#" class="UBBWordLink">系统</a>;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2:没有一个可用的密码(即FAQ上说的&quot;This account shouldn't have a usable password;&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3:登录<a target="_blank" href="#" class="UBBWordLink">系统</a>后被chroot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......</p>
<p>接下来我们要做的就是按照上面列出的三个要求来添加和<a target="_blank" href="#" class="UBBWordLink">设置</a>这个低权限、处处受限的&quot;ftp&quot;用户。</p>
<p><strong>2.1:添加&quot;ftp&quot;帐户以提供匿名访问;</strong></p>
<p><strong>2.1.1:在/etc/shells中添加一个无法实际使用的shell:</strong></p>
<p><a target="_blank" href="#" class="UBBWordLink">设置</a>&quot;ftp&quot;使用这个shell的目的,是不允许它通过shell登录到<a target="_blank" href="#" class="UBBWordLink">系统</a>中。通常我们会有两种选择:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em>/sbin/nologin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/bin/false</em></strong></p>
<p>为了在添加用户时可以使用这两个shell,我们可以这样做:<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em># echo '/sbin/nologin' &gt;&gt;/etc/shells<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # echo '/usr/bin/false' &gt;&gt;/etc/shells</em></strong></p>
<p>或者在未将它们加入到/etc/shells的情况下,在使用adduser添加帐户时加上&quot;-shell&quot;参数:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em><strong># adduser -shell /sbin/nologin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter username []: ftp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter full name []: anonymous ftpd user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter shell bash csh ksh nologin sh :<br />
</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ......</em></p>
<p>这里在询问该用户使用何种shell时就出现了 <strong><em>/sbin/nologin </em></strong>。如果不带这个参数,将无法使用它:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em># adduser<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter username []: ftp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter full name []: anonymous ftpd user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter shell bash csh ksh nologin sh : /sbin/nologin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /sbin/nologin: is not allowed!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter shell bash csh ksh nologin sh :</em></strong></p>
<p>这里就提示了不允许使用 <strong><em>/sbin/nologin</em></strong> 做为shell使用。</p>
<p>这里使用&quot;<strong><em>adduser -s shell /sbin/nologin</em></strong>&quot;来添加一个这样的&quot;ftp&quot;帐户做为示例,并将该用户的<br />
$HOME目录<a target="_blank" href="#" class="UBBWordLink">设置</a>为<strong><em>&quot;/var/ftp&quot;:</em></strong></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em># adduser -shell /sbin/nologin -home /var<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Use option ``-silent'' if you don't want to see all warnings and questions.</em></strong></p>
<p><strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Reading /etc/shells<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Check /etc/master.passwd<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Check /etc/group</em></strong></p>
<p><strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ok, let's go.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Don't worry about mistakes. I will give you the chance later to correct any input.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter username []:</em></strong> ftp<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter full name []:</em></strong> anonymous ftpd user<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter shell bash csh ksh nologin sh :</em></strong>ENTER<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Uid :</em></strong>ENTER<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Login group ftp :</em></strong>ENTER<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Login group is ``ftp''. Invite ftp into other groups: guest no<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :</em></strong>ENTER<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Login class daemon default staff :</em></strong>ENTER<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enter password []:</em></strong>ENTER&nbsp;&nbsp;# 在此直接按ENTER键。这样就可以<a target="_blank" href="#" class="UBBWordLink">设置</a>一个不可用的密码。<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set the password so that user cannot logon? (y/n) :</em></strong> y</p>
<p><strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Password:&nbsp;&nbsp;&nbsp; ****<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fullname:&nbsp;&nbsp;&nbsp; anonymous ftpd user<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Uid:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1001<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Gid:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1001 (ftp)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Groups:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ftp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Login Class: default<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HOME:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/ftp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Shell:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK? (y/n) :</em></strong> y<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Added user ``ftp''<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copy files from /etc/skel to /var/ftp<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add another user? (y/n) :</em></strong> n<br />
<strong><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Goodbye!<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #</em></strong></p>
<p>到这里,添加用户的工作就完成了。还需要把从 <strong><em>/etc/skel</em></strong> 复制到 <strong><em>$HOME</em></strong> 目录的一些&quot;dot files&quot;给删除,<br />
以免暴露信息。&quot;dot files&quot;的第一行通常会有一些<a target="_blank" href="#" class="UBBWordLink">系统</a>的信息,比如<strong><em>&quot;~/.cshrc&quot;</em></strong>文件中就有这么一句:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em># $OpenBSD: dot.cshrc,v 1.5 2005/02/16 06:56:57 matthieu Exp $</em></strong></p>
<p>这至少就告诉了匿名登录的用户,这是个<strong><em>OpenBSD</em></strong><a target="_blank" href="#" class="UBBWordLink">系统</a>。所以把它们删除:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><em># rm -f /var/ftp/.*</em></strong></p>
<p><strong>3:为<em>/var/ftp</em>目录<a target="_blank" href="#" class="UBBWordLink">设置</a>正确的权限以保证安全性;</strong></p>
<p><strong>3.1:&quot;<em>~ftp</em>&quot;目录;</strong></p>
<p><em><strong>&quot;~ftp&quot;</strong></em>目录表示&quot;ftp&quot;用户的主目录,在本例中就是<strong><em>&quot;/var/ftp&quot;</em></strong>目录。<br />
将它的owner设置为&quot;root&quot;,权限<a target="_blank" href="#" class="UBBWordLink">设置</a>为任何人都不可写(555):</p>
<p>&nbsp;&nbsp;&nbsp; <strong><em># chown -R root:wheel /var/ftp<br />
&nbsp;&nbsp;&nbsp; # chmod -R 555 /var/ftp</em></strong></p>
<p><strong>3.2:&quot;~ftp/bin&quot;目录;</strong></p>
<p>这个目录并不是必须的。如果希望匿名用户登录到FTP后能够执行一些command,就可以将command<br />
复制到这个目录下。所有的command的权限都应该<a target="_blank" href="#" class="UBBWordLink">设置</a>为只允许执行(111)。</p>
<p>&nbsp;&nbsp;&nbsp; <strong><em># mkdir /var/ftp/bin<br />
</em></strong>&nbsp;&nbsp;&nbsp; <strong><em># chown -R root:ftp /var/ftp/bin<br />
</em></strong>&nbsp;&nbsp;&nbsp; <em>#COPY YOUR PROGRAMS TO /var/ftp/bin,AND THEN:</em><br />
&nbsp;&nbsp;&nbsp; <strong><em># chmod -R 111 /var/ftp/bin/*</em></strong></p>
<p><strong>3.3:<em>&quot;~ftp/etc&quot;</em>目录;</strong></p>
<p>和<strong><em>&quot;~ftp/bin</em></strong>&quot;目录一样,这也是个可选的,并不推荐创建它。(更多关于该目录<a target="_blank" href="#" class="UBBWordLink">设置</a>的信息请查看&quot;ftpd&quot;<br />
的man文档)。</p>
<p><strong>3.4<em>:&quot;~ftp/pub</em>&quot;目录:</strong></p>
<p>这个目录用来存放你希望被匿名用户访问的文件。权限应该<a target="_blank" href="#" class="UBBWordLink">设置</a>为555。<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp; <strong><em># chown -R root:ftp /var/ftp/pub<br />
&nbsp;&nbsp;&nbsp; # chmod -R 555 /var/ftp/pub</em></strong></p>
<p>这里虽然提到了创建三个目录,但是实际上我们只需要创建<em><strong>&quot;~ftp/pub</strong></em>&quot;目录并<a target="_blank" href="#" class="UBBWordLink">设置</a>好权限就可以了。</p>
<p><strong>4:chroot匿名登录的用户;</strong></p>
<p>&quot;<strong><em>ftpd&quot;</em></strong>会将<strong><em>&quot;/etc/ftpchroot</em></strong>&quot;文件中列出的用户都chroot。要使&quot;ftp&quot;用户在登录ftp后被chroot,只需要简单<br />
地把用户名添加到这个文件中就可以了。这是一个示例文件:</p>
<p>&nbsp;&nbsp;&nbsp; <strong><em># file : /etc/ftpchroot<br />
</em></strong>&nbsp;&nbsp;&nbsp; <strong><em>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $OpenBSD: ftpchroot,v 1.3 1996/07/18 12:12:47 deraadt Exp $<br />
</em></strong>&nbsp;&nbsp;&nbsp; <strong><em>#<br />
</em></strong>&nbsp;&nbsp;&nbsp; <strong><em># list of users (one per line) given ftp access to a chrooted area.<br />
</em></strong>&nbsp;&nbsp;&nbsp; <strong><em># read by ftpd(8).<br />
</em></strong>&nbsp;&nbsp;&nbsp; <strong><em>ftp<br />
</em></strong>&nbsp;&nbsp;&nbsp; <strong><em>bibby</em></strong></p>
<p>&quot;ftpd&quot;在启动时会读取这个文件,如果&quot;ftp&quot;和&quot;bibby&quot;这两个用户登录ftp,将被分别chroot到自己的<strong><em>$HOME</em></strong>目录下。</p>
<p><strong>5:其他一些相关文件;</strong></p>
<p>&nbsp;&nbsp;&nbsp; <strong><em>/etc/ftpusers</em></strong> -- 列出了所有不受欢迎的用户。列在该文件中的用户都无法登录ftp。<br />
&nbsp;&nbsp;&nbsp; <strong><em>/etc/ftpwelcome</em></strong> -- 欢迎信息。登录上ftp的用户都将在登录时看到这一信息。<br />
&nbsp;&nbsp;&nbsp; <strong><em>/etc/motd</em></strong> -- 如果&quot;/etc/ftpwelcome&quot;文件不存在,则使用&quot;/etc/motd&quot;文件的内容做为欢迎信息。<br />
&nbsp;&nbsp;&nbsp; <strong><em>.message</em></strong> -- 这个文件可以被放置在&quot;~ftp&quot;目录下的任何一个子目录中。用户进入该目录时就会显示这个文件中的内容。</p>
</strong></p>
頁: [1]
查看完整版本: OpenBSD 3.8 release 架设FTP服务器