当前位置: 首页
系统平台
OpenBSD 3.8 架设FTP服务器指南

OpenBSD 3.8 架设FTP服务器指南

热心网友 时间:2026-06-18
转载

在OpenBSD系统中,自带的ftpd是一款轻量级且安全性高的FTP服务器方案。与大多数系统不同,它没有复杂的配置文件,所有行为均通过启动参数进行控制。换句话说,你只需在启动命令中指定相应的选项,即可定义其功能。详细信息可查阅man手册:

$ man ftpd

ftpd有三种启动方式:由inetd托管、通过rc文件随系统自启、或直接在命令行中运行。以下逐一说明。

三种启动方式详解

1. inetd 方式

/etc/inetd.conf中,默认包含如下一行配置:

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

该行已为ftpd传递了两个参数-US,当然你也可以根据需求组合其他参数(常用参数含义将在后文列出)。使用inetd方式时,需确保inetd服务本身已启动——OpenBSD默认启动该服务,可在/etc/rc.conf中检查inetd_flags变量的值以确认。

2. rc 方式

所谓“rc”方式,即通过配置/etc/rc.conf/etc/rc.conf.local来启动服务。具体做法:为ftpd_flags变量设置好参数,并确保该行未被注释。需要注意的是,这种方式需要重启系统才能生效。

3. 命令行方式

直接执行ftpd命令,即可立即生效,无需重启:

# /usr/libexec/ftpd -4DllUS

如何停止ftp服务

如需关闭服务,有两种方法:

  • /etc/rc.conf中将ftpd_flags行注释掉(行首添加#),这样下次重启后服务便不会启动。
  • 立即终止当前运行的进程:先使用ps查找ftpd的PID,或查看/var/run/ftpd.pid文件,然后执行kill PID

常用参数速览

以下列出最常用的参数(完整列表请参见man文档):

  • -4:与-D配合使用时,强制ftpd仅监听IPv4地址。
  • -6:类似,仅使用IPv6地址。
  • -A:仅允许匿名登录(除非同时指定-n)。
  • -D:使ftpd以守护进程(daemon)方式运行,自行建立端口并fork子进程处理连接。在高并发场景下,此方式比通过inetd托管更节省系统资源。
  • -d:将调试信息通过LOG_FTP写入syslog
  • -l:通过syslog记录每次成功和失败的ftp会话。若该选项重复两次(-ll),则会记录所有get/put/append/delete/mkdir/rmdir/rename操作及所操作的文件。
  • -U:每个并发的ftp会话都会被记录到/var/run/utmp,格式与who(1)命令输出类似。
  • -n:禁止匿名登录(默认允许)。
  • -S:启用后,ftpd会将所有匿名用户的下载情况记录到/var/log/ftpd(前提是该文件存在)。
  • -T maxtimeout:连接超时时间,默认为2小时。
  • -u mask:强制设置umask为指定值,覆盖/etc/login.conf中的设置(通常为022),并且不允许客户端使用chmod

了解这些参数后,你就可以根据实际需求组合出合适的启动选项。

1. 只允许使用系统帐号登录FTP

如果你只希望系统上的已有用户通过FTP访问,而不开放匿名访问,则操作非常简单。因为匿名用户登录需要系统中存在一个名为ftp的帐户,而OpenBSD默认并未创建该帐户。因此,即便你没有显式禁止匿名登录,只要该帐户不存在,匿名用户也无法进入。你只需在/etc/rc.conf中将ftpd_flags设置为类似以下内容:

ftpd_flags="-4DllUSn"

其中-n显式禁止匿名登录,实际上即使不加此选项,只要没有ftp用户,匿名也会失败。不过加上-n更符合安全规范。

2. 允许匿名用户登录访问FTP资源

若确实需要开放匿名访问,则需手动创建一个权限极低的ftp帐户。该帐户需满足以下安全要求:

  • 没有可用的shell(无法通过ssh等方式登录系统);
  • 没有可用的密码(FAQ中提及:“This account shouldn't have a usable password”);
  • 登录后会被chroot到自己的home目录,限制在文件系统的一个子集中活动。

下面逐步设置这个“处处受限”的ftp用户。

2.1 添加“ftp”帐户

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

通常选择/sbin/nologin/usr/bin/false作为该用户的shell。为了让adduser命令能识别它们,需先将其加入/etc/shells

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

如果不先添加这些shell,也可以在adduser时使用-shell参数强制指定(这样会临时加入但不会永久修改/etc/shells):

# 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会被拒绝,提示“/sbin/nologin: is not allowed!”。

以下是一个完整的添加示例,将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      # 直接回车,这样就能设置一个不可用的密码
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!
#

添加完成后,adduser会自动从/etc/skel复制一些“dot files”到新用户的home目录。这些文件可能暴露系统信息(例如~/.cshrc中会包含$OpenBSD: dot.cshrc,v 1.5这样的版本信息),因此最好将其删除:

# rm -f /var/ftp/.*

3. 为/var/ftp目录设置正确的权限

3.1 ~ftp目录(用户主目录)

/var/ftp的owner设为root,权限设为所有人不可写(555):

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

3.2 ~ftp/bin目录(可选)

若你希望匿名用户登录后能执行某些命令,可创建此目录,并将需要的命令复制进去,然后将所有命令的权限设为仅可执行(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目录(可选,不推荐)

此目录通常不建议创建,具体原因请参考ftpd的man文档。

3.4 ~ftp/pub目录

这是真正存放匿名资源的位置。权限设为555:

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

实际上,对于最简单的匿名FTP,只需创建~ftp/pub并设置好权限即可,其他目录并非必需。

4. chroot匿名登录的用户

OpenBSD的ftpd会将/etc/ftpchroot文件中列出的所有用户chroot到各自的家目录。为了让ftp用户被chroot,只需将用户名ftp写入该文件,每行一个用户:

# 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

这里ftpbibby两个用户登录后都会被chroot到各自的家目录。

5. 其他相关文件

  • /etc/ftpusers:列出不受欢迎的用户,列在此处的用户无法登录FTP。
  • /etc/ftpwelcome:登录时显示的欢迎信息。若该文件不存在,则使用/etc/motd的内容。
  • ~ftp目录下的.message文件:可放置在~ftp下的任何子目录中,用户进入该目录时会显示其内容。

以上是在OpenBSD 3.8 release上使用自带ftpd搭建FTP服务器的完整过程。从参数选择到匿名用户的创建,再到安全配置,每一步都直接关系到最终服务的可靠性与安全性。希望本指南能帮助你顺利运行FTP服务器。

来源:https://www.jb51.net/os/Unix/1516.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
Mac隐藏左上角菜单栏苹果图标

Mac隐藏左上角菜单栏苹果图标

先直接告诉你答案:Mac电脑屏幕左上角的那个苹果标志,既无法关闭,也无法隐藏。它是系统级的固定入口,所有macOS版本都会强制显示。苹果既没有提供开关选项,也没有预留终端命令,更不可能在系统偏好设置里让你找到隐藏开关。如果有人声称能用第三方工具或修改系统文件来删除它,千万别相信——结果很可能是系统不

时间:2026-07-02 07:30
Win11切换输入法的几种常用方法和快捷键设置

Win11切换输入法的几种常用方法和快捷键设置

写文档写得正顺,突然要敲几个英文单词,或者打代码时想切回中文拼音——手指条件反射地按下Ctrl+Space,光标却纹丝不动。这种场景你应该不陌生。Windows 11其实准备了五种互不干扰的切换方式,有些连锁屏界面都能响应,关键是你得选对场景来用。下面把这五种路径挨个拆开,看完你就能找到最适合自己的

时间:2026-07-02 07:29
电脑开机黑屏提示未检测到启动盘修复方法

电脑开机黑屏提示未检测到启动盘修复方法

电脑开机直接黑屏,屏幕上孤零零地显示一句“No boot disk has been detected”——别紧张,这并非系统崩溃,也不是常见的蓝屏代码,而是主板在告诉你:“我没有找到硬盘。”换句话说,电脑连BIOS自检阶段都没能通过。 这属于硬件层面的硬中断,与引导损坏、系统文件丢失完全不是一回事

时间:2026-07-02 07:29
Windows 11更改默认音频采样率级别的详细方法

Windows 11更改默认音频采样率级别的详细方法

Windows 11 用户在播放音频时,偶尔会遇到爆音、杂音甚至声音动态被压缩得干瘪的情况。这种问题通常并非硬件损坏,而是系统在音频采样率设定上“擅作主张”了。例如某次系统更新后,默认格式可能被悄然重置为 24 位 192000 Hz——一个不少声卡难以稳定运行的高规格,结果导致 DMA 缓冲溢出、

时间:2026-07-02 07:29
Win11如何查看笔记本实时充电功率

Win11如何查看笔记本实时充电功率

对于笔记本充电功率的实时监测,系统自带的电池图标只能显示“正在充电”或“已充满”,却无法告知具体的瓦数。要获得实时数值,需要绕过默认界面直接读取硬件传感器。这里直接给出结论:最可靠的工具是HWiNFO64,其次是BatteryInfoView,而powercfg只能用于间接验证。无论你遇到插着65W

时间:2026-07-02 07:29
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜