OS Xでrootなしでtnftpdを実行する方法は?

OS Xでrootなしでtnftpdを実行する方法は?

tnftpdNetBSDのFTPサーバーであり、OS X FTPサーバーであったOS Xでこれを実行しようとしています。自分で作ってインストールしました。リンゴ原産地。残念ながら、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

私は問題ありません。

tnftpdroot権限なしでサーバーを実行する方法は?可能ですか?

答え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
$ 

これはひどい、ひどいクルーガーの影響で始まります...(これはftpd10.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

関連情報