用openbsd 3.8 release自带的ftpd架设ftp服务器 【百科全说】-凯发k8官方旗舰厅

腾讯视频/爱奇艺/优酷/外卖 充值4折起

使用openbsd 3.8 release自带的ftpd架设ftp服务器

author: michaelbibby
date: 2005/11/20

可以任意转载,但请保留以上信息,谢谢。

注:本文参考openbsd 3.8的官方faq文档和ftpd的man文档写成,更全面的信息请参看这两个文件。

官方faq:http://www.openbsd.org/faq/faq10.html#anonftp
ftpd的在线手册页:http://www.openbsd.org/cgi-bin/man.cgi?query=ftpd&apropos=0&sektion=0&manpath=openbsd 3.8&arch=i386&format=html

openbsd的ftpd程序没有配置文件,就靠设置运行参数进行配置。所有参数的含义都可以在ftpd
的man文档中获得详细信息:

$ man ftpd

ftpd程序的启动有三种方法(inetd/"rc file"/command line):

1: inetd方式:

在"/etc/inetd.conf"文件中有这么一行:

ftp stream tcp nowait root /usr/libexec/ftpd ftpd -us

这里为"ftpd"传递了两个参数"-us"。当然你还可以组合自己想要的参数。(一些常用参数的含义
在下文给出)。
inetd方式还需要同时启动inetd服务,openbsd默认启动了inetd(可以看看/etc/rc.conf中的
"inetd_flags"变量的值)。

2: "rc"方式;

所谓"rc"方式,指的就是通过配置"/etc/rc.conf"或者"/etc/rc.conf.local"来启动系统服务。
为"/etc/rc.conf"中的"ftpd_flags"变量设置参数,并确保该行没有被注释掉。
这种方法需要在重新启动系统后才会生效;

3: 直接在命令行下执行ftpd命令,这样就不需要重启系统了:

# /usr/libexec/ftpd -4dllus

ftpd程序的终止:

1: 如果不需要提供ftp服务,则在/etc/rc.conf中将ftpd_flags变量注释掉(在该行最开头加一个"#"
符号);
2:使用ps查看ftpd的pid,然后"kill pid"。

以下是ftpd常用的一些参数(这里列出的只是常用的,并不是全部。更多的参数请查看ftpd的man文档):

-4 如果指定了"-d"参数,则强制ftpd只使用ipv4地址。
-6 和"-4"的解释类似;如果指定了"-d"参数,则强制ftpd只使用ipv6地址。
-a 只允许匿名登录(除非指定了"-n"选项)。
-d 如果指定了该参数,ftpd将做为daemon运行,****ftp端口并且fork子进程对连接进行
处理。在繁忙的服务器上,这样可以减少系统负载,与使用inetd方式启动ftpd比起来,
这种方式使用更少的系统资源。
-d 使用log_ftp将debug信息写入syslog。
-l 每个成功和失败的ftp session都将由log_ftp工具通过syslog记录下日志。如果这个选
项被指定两次,所有get/put/append/delete/make directory/remove directory/rename
操作以及所操作的文件都将被记录进日志。
-u 每个并发的ftp session都被记录到日志文件/var/run/utmp,记录的格式就象who(1)命令
的输出一样。
-n 禁止匿名登录。通常是允许的。
-s 如果设置了这个参数,ftpd将会把所有匿名用户的下载情况记录在文件/var/log/ftpd中
(如果它存在的话)。
-t maxtimeout
连接超时的时间限制。默认是2小时。
-u mask
强制设置umask为指定的mask。而不是使用/etc/login.conf中的设置(login.conf中通常
设置为022),并且不允许chmod。

看了这几个选项,你应该可以组合出合适的选项来满足自己的功能需求了。

1:只允许使用系统帐号登录ftp;

因为匿名用户登录需要使用到系统中的一个名为"ftp"的帐户(更多关于该帐户的讨论,请看本文下
半部分),而openbsd系统中没有该帐户,需要手动建立并且设置正确的权限,所以如果只允许用户
通过系统帐号登录ftp服务器,则只需要在/etc/rc.conf中将ftpd_flags的值简单地设置为"-d"即可
(虽然这时候的设置仍然允许匿名用户登录,但是因为系统中没有"ftp"用户,所以无法登录)。当
然你也可以多设置一些参数。比如:

ftpd_flags="-4dllusn"

参考上面几个常用选项的说明,你就会明白这是什么意思了。

2:允许匿名用户登录访问ftp资源;

因为匿名用户登录到ftp服务器后,实际上是一个"ftp"用户的身份进行所有操作,所以出于安全考虑,
这个用户的权限通常被设置得很低。比如:

1:不为该用户提供一个可用的shell,使其无法登录系统;
2:没有一个可用的密码(即faq上说的"this account shouldn't have a usable password;");
3:登录系统后被chroot;
......

接下来我们要做的就是按照上面列出的三个要求来添加和设置这个低权限、处处受限的"ftp"用户。

2.1:添加"ftp"帐户以提供匿名访问;

2.1.1:在/etc/shells中添加一个无法实际使用的shell:

设置"ftp"使用这个shell的目的,是不允许它通过shell登录到系统中。通常我们会有两种选择:

/sbin/nologin
/usr/bin/false

为了在添加用户时可以使用这两个shell,我们可以这样做:

# echo '/sbin/nologin' >>/etc/shells
# echo '/usr/bin/false' >>/etc/shells

2.1.2:在未将它们加入到/etc/shells的情况下,使用adduser添加帐户时加上"-shell"参数:

# adduser -shell /sbin/nologin
enter username []: ftp
enter full name []: anonymous ftpd user
enter shell bash csh ksh nologin sh [/sbin/nologin]:

......

这里在询问该用户使用何种shell时就出现了/sbin/nologin。如果不带这个参数,将无法使用它:

# adduser
enter username []: ftp
enter full name []: anonymous ftpd user
enter shell bash csh ksh nologin sh [bash]: /sbin/nologin
/sbin/nologin: is not allowed!
enter shell bash csh ksh nologin sh [bash]:

这里就提示了不允许使用/sbin/nologin做为shell使用。

2.2:示例;

这里使用"adduser -s shell /sbin/nologin"来添加一个这样的"ftp"帐户做为示例,并将该用户的
$home目录设置为"/var/ftp":

# adduser -shell /sbin/nologin -home /var
use option ``-silent'' if you don't want to see all warnings and questions.

reading /etc/shells
check /etc/master.passwd
check /etc/group

ok, let's go.
don't worry about mistakes. i will give you the chance later to correct any input.
enter username []: ftp
enter full name []: anonymous ftpd user
enter shell bash csh ksh nologin sh [/sbin/nologin]:enter
uid [1001]:enter
login group ftp [ftp]:enter
login group is ``ftp''. invite ftp into other groups: guest no
[no]:enter
login class daemon default staff [default]:enter
enter password []:enter # 在此直接按enter键。这样就可以设置一个不可用的密码。
set the password so that user cannot logon? (y/n) [n]: y

name: ftp
password: ****
fullname: anonymous ftpd user
uid: 1001
gid: 1001 (ftp)
groups: ftp
login class: default
home: /var/ftp
shell:
ok? (y/n) [y]: y
added user ``ftp''
copy files from /etc/skel to /var/ftp
add another user? (y/n) [y]: n
goodbye!
#

到这里,添加用户的工作就完成了。还需要把从/etc/skel复制到$home目录的一些"dot files"给删除,
以免暴露信息。"dot files"的第一行通常会有一些系统的信息,比如"~/.cshrc"文件中就有这么一行:

# $openbsd: dot.cshrc,v 1.5 2005/02/16 06:56:57 matthieu exp $

这至少就告诉了匿名登录的用户,这是个openbsd系统。所以把它们删除:

# rm -f /var/ftp/.*

3:为/var/ftp目录设置正确的权限以保证安全性;

3.1:"~ftp"目录;

"~ftp"目录表示"ftp"用户的主目录,在本例中就是"/var/ftp"目录。
将它的owner设置为"root",权限设置为任何人都不可写(555):

# chown -r root:wheel /var/ftp
# chmod -r 555 /var/ftp

3.2:"~ftp/bin"目录;

这个目录并不是必须的。如果希望匿名用户登录到ftp后能够执行一些command,就可以将command
复制到这个目录下。所有的command的权限都应该设置为只允许执行(111)。

# mkdir /var/ftp/bin
# chown -r root:ftp /var/ftp/bin
#copy your programs to /var/ftp/bin,and then:
# chmod -r 111 /var/ftp/bin/*

3.3:"~ftp/etc"目录;

和"~ftp/bin"目录一样,这也是个可选的,并不推荐创建它。(更多关于该目录设置的信息请查看"ftpd"
的man文档)。

3.4:"~ftp/pub"目录:

这个目录用来存放你希望被匿名用户访问的文件。权限应该设置为555。

# chown -r root:ftp /var/ftp/pub
# chmod -r 555 /var/ftp/pub

这里虽然提到了创建三个目录,但是实际上我们只需要创建"~ftp/pub"目录并设置好权限就可以了。

4:chroot匿名登录的用户;

"ftpd"会将"/etc/ftpchroot"文件中列出的用户都chroot。要使"ftp"用户在登录ftp后被chroot,只需要简单
地把用户名添加到这个文件中就可以了。这是一个示例文件:

# file : /etc/ftpchroot
# $openbsd: ftpchroot,v 1.3 1996/07/18 12:12:47 deraadt exp $
#
# list of users (one per line) given ftp access to a chrooted area.
# read by ftpd(8).
ftp
bibby

"ftpd"在启动时会读取这个文件,如果"ftp"和"bibby"这两个用户登录ftp,将被分别chroot到自己的$home目录下。

5:其他一些相关文件;

/etc/ftpusers -- 列出了所有不受欢迎的用户。列在该文件中的用户都无法登录ftp。
/etc/ftpwelcome -- 欢迎信息。登录上ftp的用户都将在登录时看到这一信息。
/etc/motd -- 如果"/etc/ftpwelcome"文件不存在,则使用"/etc/motd"文件的内容做为欢迎信息。
".message" -- 这个文件可以被放置在"~ftp"目录下的任何一个子目录中。用户进入该目录时就会显示这个
文件中的内容。

09/03 08:50
使用openbsd 3.8 release自带的ftpd架设ftp服务器 openbsd的ftpd程序没有配置文件,就靠设置运行参数进行配置。所有参数的含义都可以在ftpd 的man文档中获得详细信息: $ man ftpd ftpd程序的启动有三种方法(inetd/"rc file"/"command line" ): 1: inetd方式: 在"/etc/inetd.conf"文件中有这么一行: ftp stream tcp nowait root /usr/libexec/ftpd ftp
08/01 22:06
ftp服务是互联网的一项基础服务,通过这项服务两台或两台以上的相互联网的设备就可以共享文件。虽然市面上已经有不少软件提供了搭建ftp服务器的功能,不过win8系统自带了iis就可以让我们实现这一愿望。下面小编向你传授win8搭建ftp服务器的小妙招。 步骤一:首先在开始屏幕中打开“搜索”,输入“控制面板”,并打开; 步骤二:在控制面板窗口中,找到“程序”,点击, 步骤三:在打开的“程序”窗口中,找到“启用或关闭windows功能”,点击打开,如下图所示: 步骤四:在“wi
10/12 15:03
工作的原因siyue需要使用ftp服务,由于windows自带的ftp服务器就很好用,这里siyue就把开启win7自带的ftp服务器的设置分享一下. 第一步:安装iis及ftp组件1.打开控制面板->程序,选择"打开或关闭windows功能" 2.在"打开或关闭windows功能"画面选择"ftp服务器"和"web管理工具" 3."确定"后等待安装完成 第二步:设置ftp用户及服务器文件夹 siyu
03/13 00:35
部署局域网ftp服务器,方便了用户上传、下载资源,是局域网文件共享的最优方案。我们知道可以把xp系统打造成一台ftp服务器,vista如今已经走进了用户的电脑,那如何用vista部署一台ftp服务器呢? 一、vista中安装iis 打开vista操作系统的“控制面板”窗口,单击窗口中的“程序”选项,在开启的页面中点击“打开或关闭windows功能”链接。在弹出的对话框中,展开“internet信息服务”选项,勾选其下出现的“ftp发布服务”、“ftp服务器”、“ftp管理控制台”可选项。
07/11 18:12
像一般下载站,软件下载都会有几台服务器作为镜像下载,那么怎么在服务器上面建立同步呢,话说几台服务器手动同步是很麻烦的。那么bestsync这个软件可以帮到您,他是可以建立自动同步的。需要在windows 2003中搭建一台ftp服务器,用于文件的上传与下载;同时将ftp服务器目录中的文件同步到多个服务器中,实现同步更新,同时文件需要控制用户访问对应的文件夹权限。 需要用到的软件有:bestsync(同步传输软件) serv-u(搭建ftp) 步骤 使用serv-u搭建ftp服务器 windows
07/14 12:31
架设一台ftp服务器其实很简单。首先,要保证你的机器能上网,而且有不低于adsl 512kbps的网络速度。 其次,硬件性能要能满足你的需要。最后,需要安装ftp服务器端的软件,这类软件很多,可以使用微软的 iis(internet information server 因特网信息服务系统),也可以使用专业软件。不同的软件提供的功能 不同,适应的需求和操作系统也不同。一般来说,系统最低要求如下: cpu:pⅲ 450mhz以上 内存:256mb sdram以上 带宽:adsl 512kbps以上
08/06 07:20
设置服务器 个人电脑毕竟是面向个人的,在默认状态下不具备服务器的要求,但我们只要对其简单设置一下就可以了.windows 2000和xp系统提供了[internet 信息服务(iis)],我们只要安装上它,就可以使个人电脑变为wed或ftp服务器了. 1.安装iis 打开控制面板中的"删除/添加程序",选择"添加/删除windows组件",在弹出的windows组件向导窗口中选中"internet 信息服务(iis)",点"详细信息&q
01/22 17:11
1、用户设置,ftp设置,ip限制等都在菜单设置下。 2、用户设置也很简单,看图就能明白。 3、如果无法连接ftp服务器,请检查服务器上的防火墙。 如果在wiin2003/2008 已经安装ftp服务器组件, 请卸载ftp服务器组件或改端口后再运行phpstudy自带的ftp server。 4、如果出现错误 [右] 数据 socket 错误: 连接超时 [右] 列表错误 [右] pasv 模式失败, 尝试 port 模式。 被动模式是先从21端口向服务器发送请求,然后服务器开放空闲端口来进行连
07/09 12:18
下面我用的是openbsd 3.6 配置adsl: # vi /etc/ppp/ppp.conf ========================ppp.conf======================= default: set log phase chat ipcp ccp tun command set redial 15 0 set reconnect 15 10000 pppoe: set device "!/usr/sbin/pppoe -i rl1" disable acfco
网站地图