我试图tnftpd
在 OS X 上运行,这是 NetBSD 的 FTP 服务器,并且曾经是 OS X 的 FTP 服务器。我构建并安装了它苹果的来源。不幸的是,如果没有 root 权限,我似乎无法运行服务器。到目前为止,我的方法是让服务器在没有 root 权限的情况下工作:
- 我尝试通过选项更改端口号
-P
,以确保它不使用特权端口。 - 我尝试过摆弄配置文件,例如
ftpd.conf
和ftpusers
。 - 我也尝试过该
-r
选项(一旦用户登录就不允许 root 权限)。
所有这些尝试都没有成功。
一些例子来说明我的尝试:
$ ftpd -lnD # exit code is 0, but `ps' shows no server running
$ ftpd -lnDr # supposed to drop root privileges, but same as above
$ # let's try running on a different port...
$ ftpd -lnDr -P 50001 # exit code still 0, but no dice
但是,如果我尝试这样的操作(这是我没有自定义配置的情况):
$ sudo ftpd -lnD
Password:
$ ps aux | grep -i ftpd
root 21998 0.0 0.0 4298888 720 ?? Ss 10:41PM 0:00.00 ftpd -lnD
我没有问题。
如何tnftpd
在没有 root 权限的情况下运行服务器?有可能吗?
答案1
根据手册页tnftpd(8)
... The server
uses the TCP protocol and listens at the port specified in the ``ftp''
service specification; see services(5).
扫描ftpd.conf(5)
显示没有明显的方法来摆弄侦听端口(与数据端口相反,这是不同的),所以让我们看看是否可以修改该services
文件,这可能是一个坏主意。
$ sudo perl -i.oops -pe 's/^(ftp\s+21)/${1}21/' /etc/services
$ grep 2121 /etc/services
ftp 2121/udp # File Transfer [Control]
ftp 2121/tcp # File Transfer [Control]
scientia-ssdb 2121/udp # SCIENTIA-SSDB
scientia-ssdb 2121/tcp # SCIENTIA-SSDB
nupaper-ss 12121/tcp # NuPaper Session Service
nupaper-ss 12121/udp # NuPaper Session Service
$
随着这个可怕的、可怕的克鲁格的影响,我们现在开始......(这是在默认安装ftpd
在 10.11.6 系统上)ftpd
/usr/libexec
$ /usr/libexec/ftpd -lnDr -P 50001
$
它在非21
端口上以非 root 身份运行:
$ pgrep -lf ftpd
35258 /usr/libexec/ftpd -lnDr -P 50001
$ lsof -P -p 35258 | grep 2121
ftpd 35258 jhqdoe 4u IPv4 0x817b7cd1effd8d7f 0t0 TCP *:2121 (LISTEN)
ftpd 35258 jhqdoe 5u IPv6 0x817b7cd1effa3107 0t0 TCP *:2121 (LISTEN)
$
我不知道这是否有效;你真的需要FTP吗?
要撤消此更改,sudo mv /etc/services.oops /etc/services