Sambaによるファイル共有ができるので、PureFTPd を使うケースは少ないかもしれません。
なお、FTPサーバーを動かすPCはIPを固定し、クライエント側PCではそのサーバーPCの名前解決ができていると便利です。固定IPと名前解決の記事を参照ください。
パピーに組み込まれている、PureFTPd server は、rootでログインして全てのファイルシステムをFTPを通じで読み書きするものです。
ここでは root でのログインを禁止し、ユーザー ftp でログインするようにします。
ftp のホームは /root/ftpd で、所有者は ftp、パーミッションは 777 すなわちどのユーザーでも読み書きができます。
初期状態で ftp にはパスワードが設定されていません。サーバー側PCで
passwd ftp
で、ftp のパスワードを設定します。
サーバー側は メニュー→ネットワーク→PureFTPd server と辿り、既定値のまま起動します。
(訂正:最初のチェックボックス「-u 1:Prevent user root connections」にチェックを入れてください。)
クライエント側は メニュー→インターネット→gFTP ftp client
サーバーのホスト名またはIP、ユーザー名 ftp とパスワードを入力します。
ftp のホーム /root/ftpd にアクセスできます。
注意点
PCを再起動すると pureFTPd は停止したままです。PC再起動で pureFTPd を自動起動するには /etc/init.d 内にスクリプトを置かねばなりません。その方法は→ PureFTPの自動起動の記事
PureFTPd によるファイル共有
PureFTPd によるファイル共有
最後に編集したユーザー シノバー [ 24/06/23(日) 17:27 ], 累計 8 回
ftp のホーム以外のディレクトリを使いたい場合
pureFTPd野場合、ログインしたユーザーのホーム以下にしかアクセスできませんから、その外のディレクトリをファイルやりとりに使おうとすると工夫がいります。
/mnt/home 以下に共有フォルダを設定する
たとえば /mnt/home/tmp をファイル交換の場所として使いたい場合:
1) /mnt/home/tmp ディレクトリを作成。
mkdir /mnt/home/tmp
2) /mnt/home/tmp のパーミッションを 1777にする。
chmod 1777 /mnt/home/tmp
あるいはディレクトリを右クリック→プロパティで変更できる。読み込み、書き込み、実行の全てにチェック。Stickyビットにもチェックを入れる。
そうしておいて /root/ftpd 内に /mnt/home/tmp のシンボリックリンクを貼っても pureFTPdはそのリンクを辿ってくれません。
そこで mount -bind を使います。/root/ftpd/tmp を作成。そののちマウント。
mkdir /root/ftpd/tmp
mount --bind /mnt/home/tmp /root/ftpd/tmp
これで FTPにユーザー ftp でログインすると /root/ftpd 内が表示され、そこにある tmp を辿れば /mnt/home/tmp 内にアクセスできます。
なお、FTPにユーザー ftp でログインし書き込んだファイルやディレクトリの所有者は ftp となります。
/mnt/home 以外のディスクやパーティション
パピーがインストールされた /mnt/home のあるパーティションは自動でマウントされますが、それ以外のディスクやパーティションはそれをマウントする一手間が増えます。
たとえば sdb3 に public というディレクトリを作り、そこを共有にしたい場合
mkdir -p /mnt/sdb3/publc
mount /dev/sdb3 /mnt/sdb3
chmod 1777 /mnt/sdb3/publc
mkdir -p /root/ftpd/public
mount --bind /mnt/sdb3/publc /root/ftpd/public
再起動後も有効にするには
以上で /root/ftpd を通じて /mnt/home/tmp と /mnt/sdb3/publc にアクセスできますが、PCをシャットダウンすると nount の効力が切れます。
再起動後も有効にするには /etc/rc.d/rc.local に次の行を書き加えます。
→ PureFTPd の自動起動の記事
/mnt/home 以下に共有フォルダを設定する
たとえば /mnt/home/tmp をファイル交換の場所として使いたい場合:
1) /mnt/home/tmp ディレクトリを作成。
mkdir /mnt/home/tmp
2) /mnt/home/tmp のパーミッションを 1777にする。
chmod 1777 /mnt/home/tmp
あるいはディレクトリを右クリック→プロパティで変更できる。読み込み、書き込み、実行の全てにチェック。Stickyビットにもチェックを入れる。
そうしておいて /root/ftpd 内に /mnt/home/tmp のシンボリックリンクを貼っても pureFTPdはそのリンクを辿ってくれません。
そこで mount -bind を使います。/root/ftpd/tmp を作成。そののちマウント。
mkdir /root/ftpd/tmp
mount --bind /mnt/home/tmp /root/ftpd/tmp
これで FTPにユーザー ftp でログインすると /root/ftpd 内が表示され、そこにある tmp を辿れば /mnt/home/tmp 内にアクセスできます。
なお、FTPにユーザー ftp でログインし書き込んだファイルやディレクトリの所有者は ftp となります。
/mnt/home 以外のディスクやパーティション
パピーがインストールされた /mnt/home のあるパーティションは自動でマウントされますが、それ以外のディスクやパーティションはそれをマウントする一手間が増えます。
たとえば sdb3 に public というディレクトリを作り、そこを共有にしたい場合
mkdir -p /mnt/sdb3/publc
mount /dev/sdb3 /mnt/sdb3
chmod 1777 /mnt/sdb3/publc
mkdir -p /root/ftpd/public
mount --bind /mnt/sdb3/publc /root/ftpd/public
再起動後も有効にするには
以上で /root/ftpd を通じて /mnt/home/tmp と /mnt/sdb3/publc にアクセスできますが、PCをシャットダウンすると nount の効力が切れます。
再起動後も有効にするには /etc/rc.d/rc.local に次の行を書き加えます。
ついでに PureFTPd の起動コマンドもここに書いても良いのですが、そちらは /etc/init.d 内にスクリプトを置くことにしましょう。/etc/rc.d/rc.local さんが書きました:mkdir -p /mnt/sdb3
mount /dev/sdb3 /mnt/sdb3
mount --bind /mnt/home/tmp /root/ftpd/tmp
mount --bind /mnt/sdb3/publc /root/ftpd/public
→ PureFTPd の自動起動の記事
最後に編集したユーザー シノバー [ 24/06/23(日) 17:06 ], 累計 3 回
ユーザーftp のパスワード???
既存のユーザーとして ftp も存在し、そのホームは /root/ftpd で、こも所有者は ftp、パーミッションは 777 すなわちどのユーザーでも読み書きができる。
なのでユーザー spot ではなく、ユーザー ftp でログインするのが正しいのかと思ってみる。
サーバー側で ftpにパスワードを設定し、他のPCからユーザーftpとそのパスワードでログインすると期待通りの動作をする。
追記(2024-06-18)
以下に記した ftpのパスワードが消えてしまう問題。その後正常となり、再現しなくなりました。
2台のPC(いずれも fossapup64-simple-r4 PUPMODE=13)で起きており、まったくの偶発ではないと思えますが、理由は分かりません。
現象として、たぶんセッション保存のタイミングで /etc/shadow が初期化されている(タイムスタンプがsfsの者に戻る)ということなので、ユーザー
ftp 固有ではなく、spot であっても同じだと思えます。
したがって冒頭記事も spot ではなくftp を使ったものに書き換えます。
(以下は過去の記録)----------------------------------------------------------------------------------------------------------------------------------
しかしだ。ふたたび試すとログインできない。サーバー側で /etc/shadow を見ると、なんとユーザー ftp のパスワードが無効にされている!
時間経過なのか、どのタイミングで無効化されているのか、どこかにその設定があるのか?さっぱり分からない。
ところが、 ftpのパスワードを設定しなおして数日後もパスワードが生きている場合もある。さっぱりわからない。
/etc/passwd の ftp行
パスワード設定直後の /etc/shadow
30分後の /etc/shadow
パスワードのところが「!」(Bad record) に変わっている。また更新日付がロールバック(初期化?)されている。
30分という時間はpupsave更新のタイミングか?
なのでユーザー spot ではなく、ユーザー ftp でログインするのが正しいのかと思ってみる。
サーバー側で ftpにパスワードを設定し、他のPCからユーザーftpとそのパスワードでログインすると期待通りの動作をする。
追記(2024-06-18)
以下に記した ftpのパスワードが消えてしまう問題。その後正常となり、再現しなくなりました。
2台のPC(いずれも fossapup64-simple-r4 PUPMODE=13)で起きており、まったくの偶発ではないと思えますが、理由は分かりません。
現象として、たぶんセッション保存のタイミングで /etc/shadow が初期化されている(タイムスタンプがsfsの者に戻る)ということなので、ユーザー
ftp 固有ではなく、spot であっても同じだと思えます。
したがって冒頭記事も spot ではなくftp を使ったものに書き換えます。
(以下は過去の記録)----------------------------------------------------------------------------------------------------------------------------------
しかしだ。ふたたび試すとログインできない。サーバー側で /etc/shadow を見ると、なんとユーザー ftp のパスワードが無効にされている!
時間経過なのか、どのタイミングで無効化されているのか、どこかにその設定があるのか?さっぱり分からない。
ところが、 ftpのパスワードを設定しなおして数日後もパスワードが生きている場合もある。さっぱりわからない。
/etc/passwd の ftp行
コード: 全て選択
ftp:x:1000:1000:Linux User,,,:/root/ftpd:/bin/sh
コード: 全て選択
ftp:9mRRw0srgeSiQ:19891:0:99999:7:::
コード: 全て選択
ftp:!:13885:0:99999:7:::
30分という時間はpupsave更新のタイミングか?
PCを再起動しても PureFTPd が自動起動する設定
メニューから PureFTPd server を起動・停止するのではなく
コンソールコマンドで PureFTPd の起動/停止をするスクリプトを作りました。
このスクリプトへのリンクを /etc/init.d 内に置くことで PC起動時に PureFTPdも自動で起動するようにできます。
スクリプトの配置
添付の ftpd.zip を解凍し、スクリプト ftpd を /etc/rc.d/ftpd として置いてください。実行属性が付いていなければ付けてください。
スクリプトの編集
スクリプトはユーザー rootでのftpログインを禁止しています。rootログインを許可したいときは、スクリプト冒頭を編集、変更してください。
Prevent_user_root_connections=no では rootログイン許可
Prevent_user_root_connections=yes で rootログインを禁止です。
'=' の前後に空白などを入れないでください。
使い方
コンソールで
/etc/rc.d/ftpd stop で停止
/etc/rc.d/ftpd start あるいは
/etc/rc.d/ftpd restart で再起動します。
/etc/rc.d/ftpd status PureFTPdが稼働中か停止中かを表示します。
PC起動時に PureFTPd を自動起動させる
/etc/rc.d/ftpd へのリンクを /etc/init.d 内に作ります。
ln -s /etc/rc.d/ftpd /etc/init.d/ftpd
これで PC起動時に PureFTPdも自動で起動します。逆に PureFTPd を停止させても、PCを起動すると無条件に PureFTPd も起動します。
PureFTPd を自動起動させたくないときはリンク /etc/init.d/ftpd を削除してください。
PC起動時に必要なマウントを行う
PCをシャットダウンすると mount の効力が切れます。
再起動後も有効にするには /etc/rc.d/rc.local に次の行を書き加えます。
コンソールコマンドで PureFTPd の起動/停止をするスクリプトを作りました。
このスクリプトへのリンクを /etc/init.d 内に置くことで PC起動時に PureFTPdも自動で起動するようにできます。
スクリプトの配置
添付の ftpd.zip を解凍し、スクリプト ftpd を /etc/rc.d/ftpd として置いてください。実行属性が付いていなければ付けてください。
スクリプトの編集
スクリプトはユーザー rootでのftpログインを禁止しています。rootログインを許可したいときは、スクリプト冒頭を編集、変更してください。
Prevent_user_root_connections=no では rootログイン許可
Prevent_user_root_connections=yes で rootログインを禁止です。
'=' の前後に空白などを入れないでください。
使い方
コンソールで
/etc/rc.d/ftpd stop で停止
/etc/rc.d/ftpd start あるいは
/etc/rc.d/ftpd restart で再起動します。
/etc/rc.d/ftpd status PureFTPdが稼働中か停止中かを表示します。
PC起動時に PureFTPd を自動起動させる
/etc/rc.d/ftpd へのリンクを /etc/init.d 内に作ります。
ln -s /etc/rc.d/ftpd /etc/init.d/ftpd
これで PC起動時に PureFTPdも自動で起動します。逆に PureFTPd を停止させても、PCを起動すると無条件に PureFTPd も起動します。
PureFTPd を自動起動させたくないときはリンク /etc/init.d/ftpd を削除してください。
PC起動時に必要なマウントを行う
PCをシャットダウンすると mount の効力が切れます。
再起動後も有効にするには /etc/rc.d/rc.local に次の行を書き加えます。
/etc/rc.d/rc.local さんが書きました: mkdir -p /mnt/sdb3
mount /dev/sdb3 /mnt/sdb3
mount --bind /mnt/home/tmp /root/ftpd/tmp
mount --bind /mnt/sdb3/publc /root/ftpd/public
添付ファイルを見るにはパーミッションが必要です
最後に編集したユーザー シノバー [ 24/06/23(日) 17:38 ], 累計 3 回
PureFTPd の設定ファイルはどこにある?
PureFTPd の設定ファイルはありません。
PureFTPdを起動するスクリプトは /usr/local/bin/run-pureftpd で、その最後のほうに pure-ftpd の起動コマンドが書かれています。
/usr/local/sbin/pure-ftpd -bBADHk 90 $cfg
$cfg は追加オプションで、'-u 1'(ユーザーrootでのログイン禁止)または '-E'(匿名ログインの禁止)です。
このように pure-ftpd は設定ファイルを用いず、コマンドラインでオプションを列記して起動するのが流儀のようです。
ここにあるように pure-ftpd のパスは /usr/local/sbin/pure-ftpd です。
ターミナルで次のように打てば、使えるオプションが一覧表示されます。
/usr/local/sbin/pure-ftpd --help
PureFTPdを起動するスクリプトは /usr/local/bin/run-pureftpd で、その最後のほうに pure-ftpd の起動コマンドが書かれています。
/usr/local/sbin/pure-ftpd -bBADHk 90 $cfg
$cfg は追加オプションで、'-u 1'(ユーザーrootでのログイン禁止)または '-E'(匿名ログインの禁止)です。
このように pure-ftpd は設定ファイルを用いず、コマンドラインでオプションを列記して起動するのが流儀のようです。
ここにあるように pure-ftpd のパスは /usr/local/sbin/pure-ftpd です。
ターミナルで次のように打てば、使えるオプションが一覧表示されます。
/usr/local/sbin/pure-ftpd --help
コード: 全て選択
pure-ftpd v1.0.49 [privsep]
-0 --notruncate
-1 --logpid
-4 --ipv4only
-6 --ipv6only
-A --chrooteveryone
-a --trustedgid <opt>
-b --brokenclientscompatibility
-B --daemonize
-C --maxclientsperip <opt>
-c --maxclientsnumber <opt>
-d --verboselog
-D --displaydotfiles
-e --anonymousonly
-E --noanonymous
-f --syslogfacility <opt>
-g --pidfile <opt>
-G --norename
-h --help
-H --dontresolve
-I --maxidletime <opt>
-i --anonymouscantupload
-j --createhomedir
-K --keepallfiles
-k --maxdiskusagepct <opt>
-l --login <opt>
-L --limitrecursion <opt>
-M --anonymouscancreatedirs
-m --maxload <opt>
-N --natmode
-p --passiveportrange <opt>
-P --forcepassiveip <opt>
-r --autorename
-R --nochmod
-s --antiwarez
-S --bind <opt>
-t --anonymousbandwidth <opt>
-T --userbandwidth <opt>
-U --umask <opt>
-u --minuid <opt>
-V --trustedip <opt>
-w --allowuserfxp
-W --allowanonymousfxp
-x --prohibitdotfileswrite
-X --prohibitdotfilesread
-z --allowdotfiles
-Z --customerproof