質問するログイン新規登録
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

1564閲覧

XAMPP for LinuxのProFTPDサービスが起動しません

ysk1118

総合スコア22

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2023/07/18 08:45

編集2023/07/19 01:46

0

0

実現したいこと

XAMPP for Linux 8.2.4の環境にて、ProFTPDのサービスをスタートさせたいのですが、正常にスタートできません。
対処法等をご教示いただけますと幸いです。

前提

apacheで表示されるwebサイトのソースファイルをWindows環境からアップロードするために、proFTPDのサービスを起動したいのですが、
スタートコマンドを実行すると、エラーメッセージが表示され、サービスが起動できません。
メッセージ内容から、44行目のfunctionに問題があるようなのですが、何が問題なのかが分からない状況です。
ネットでエラーメッセージを検索してみましたが、私の環境とは異なるようで解決には至りませんでした。

発生している問題・エラーメッセージ

fatal: unknown configuration directive 'function' on line 44 of '/opt/lampp/etc/proftpd.conf'

該当のソースコード

proftpd.conf

1# This is a basic ProFTPD configuration file (rename it to 2# 'proftpd.conf' for actual use. It establishes a single server 3# and a single anonymous login. It assumes that you have a user/group 4# "daemon" and "ftp" for normal operation and anon. 5 6ServerName "ProFTPD" 7ServerType standalone 8DefaultServer on 9 10# Port 21 is the standard FTP port. 11Port 21 12# Umask 022 is a good standard umask to prevent new dirs and files 13# from being group and world writable. 14Umask 022 15 16# To prevent DoS attacks, set the maximum number of child processes 17# to 30. If you need to allow more than 30 concurrent connections 18# at once, simply increase this value. Note that this ONLY works 19# in standalone mode, in inetd mode you should use an inetd server 20# that allows you to limit maximum number of processes per service 21# (such as xinetd) 22MaxInstances 30 23 24# Set the user and group that the server normally runs at. 25User daemon 26#Group daemon 27 28# Normally, we want files to be overwriteable. 29<Directory /opt/lampp/htdocs/*> 30 AllowOverwrite on 31</Directory> 32 33# only for the web servers content 34DefaultRoot /opt/lampp/htdocs 35 36<Limit SITE_CHMOD> 37 DenyAll 38</Limit> 39 40# daemon gets the password "xampp" 41# commented out by xampp security 42#UserPassword daemon ************ 43UserPassword daemon <? 44 function make_seed() { 45 list($usec, $sec) = explode(' ', microtime()); 46 return (float) $sec + ((float) $usec * 100000); 47 } 48 srand(make_seed()); 49 $random=rand(); 50 $chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz./"; 51 $salt=substr($chars,$random % 64,1).substr($chars,($random/64)%64,1); 52 $pass=$argv[1]; 53 $crypted = crypt($pass,$salt); 54 echo $crypted." 55"; 56?> 57 58# daemon is no normal user so we have to allow users with no real shell 59RequireValidShell off 60 61# daemon may be in /etc/ftpusers so we also have to ignore this file 62UseFtpUsers off

試したこと

事前に下記のコマンドにてlamppのセキュリティ設定を行いました。

[root@<サーバー名> ~]# /opt/lampp/lampp security

この処理の中で、ProFTPDのユーザー「daemon」に対するパスワードを初期値「xampp」から別のパスワードに変更しました。

補足情報(FW/ツールのバージョンなど)

XAMPP環境は一通り構築済み(https://teratail.com/questions/sdqe8lh9f5is0s)で、ProFTPDは使用予定が無かったので、
セキュリティ設定等は変更していなかったのですが、
Apacheでweb表示に使用するソースファイルをhtdocsにアップロードするために急遽使用することにしました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決に至りました。

まず、サービスが起動しない要因としては、lampp securityの実行でdaemonに対するパスワードを変更した時、
該当のソースコード(/opt/lampp/etc/proftpd.conf)の42行目がコメントアウトとなり、43~56行目までが書き加えられるという挙動が発生していました。
この記述自体が正常に動作しないバグであるという報告をネット検索で見つけました。(Apache Friends)
よって、追記部分を丸ごとコメントアウトあるいは削除して、40行目のコメントアウトを解除することでProFTPDのサービスは起動できました。
また、passwd daemonを実行してパスワードを元のxamppに戻しました。
これで元通りという状況ですが、このままだとdaemonのパスワードが標準のままでセキュリティ的によろしくないので、下記にて対応しました。

パスワード変更に対応する手順

参考URL:https://stackoverflow.com/questions/68677283/xampp-starting-proftpd-fail-with-password
・パスワードを変更 … 再度lampp securityを実行し、任意のパスワードに変更しました。(passwdでも大丈夫そう?)
・/opt/lampp/etc/proftpd.confの書き加えられた部分を次のように編集して保存。

proftpd.conf

12UserPassword daemon <?php 3 function make_seed() { 4 list($usec, $sec) = explode(' ', microtime()); 5 return (float) $sec + ((float) $usec * 100000); 6 } 7 srand(make_seed()); 8 $random=rand(); 9 $chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz./"; 10 $salt=substr($chars,$random % 64,1).substr($chars,($random/64)%64,1); 11 $pass=<daemonに設定したパスワード>; 12 $crypted = crypt($pass,$salt); 13 echo $crypted." 14"; 15?> 16

変更箇所と内容は、下記のとおりです。
・1行目…<? → <?php
・10行目…$pass=$argv[1] → 直接パスワード編集

保存後、ターミナルでphpコマンドを実行します。

/opt/lampp/bin/php /opt/lampp/etc/proftpd.conf
proftpd.confの内容がPHPで実行された結果が表示されますが、
Userpasswordの個所に、$passに任意していたパスワード文字列のハッシュ値(?)が表示されます。

この文字列をコピーして、再度proftpd.confを編集し、securityで追記された部分は丸々削除して、

UserPassword daemon <コピーしたパスワードハッシュ値>
と編集して保存します。

これにより、securityで記述された内容は消去されているのでサービスは正常に起動し、
かつ変更したパスワードでFTPログインができるようになりました。

以上となります。

投稿2023/07/19 03:17

編集2023/07/19 04:01
ysk1118

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問