kz21_ym
2023年2月8日 9時57分
お世話になります。
armadillo-460 atmark-dist-20180330 を使用しています。
現象としてはftpサーバを元々の/bin/ftpd から
バイナリパッケージの ftpd_0.17-33_armel.deb の
/usr/sbin/in.ftpd に置換えしたところ
クライアントからlsコマンドが実行できなくなるというものです。
/etc/ftpchroot でftpのユーザを指定されているときに
この状態になります。
ftpchrootのユーザを無効にした場合はアクセス可能になります。
/home/ftp/bin にはlsのハードリンクは存在しているのですが
ftpサーバを替えるとクライアントから見えなくなるようです。
原因ご教示いただけると助かります。
サーバ置換えるのはIPv6で動作させようとしているためです。
ftprootのユーザ無効の状態ではIPv6でも正常にアクセスできる
ことは確認できています。
環境としては
---------------
armadillo-460
atmark-dist-20180330 ベース
linux-2.6.26-at30
ftpサーバ
ftpd_0.17-33_armel.deb
inetd
openbsd-inetd_0.20080125-6_armel.deb
ftpのユーザは都合によりftp1に変更しています
ホームは /home/ftp のまま
ftpクライアント
ffftp-v5.7-x64
WinSCP 5.21.7
CarotDAV 1.16.1
(WinSCP,CarotDAVはlsが不可なのかまでは不明アクセスができなくなる)
---------------
という内容になっています。
ftpサーバとinetdを入れ替えています。
inetdは同じで
/etc/inetd.conf の設定を元の /bin/ftpd の指定に戻すと
/etc/ftpchrootのユーザ有効でもこれまで通りアクセスできます。
サーバ入れ替える時に何か必要な手順など
あるでしょうか?
よろしくお願いします。
コメント
kz21_ym
kz21_ym
at_akihito.irie
kz21_ym
以下のようになっています。
cat /etc/ftpchroot の結果です。
---------------------------------------------------
[root@test (ttyp1) /]# cat /etc/ftpchroot
ftp1
[root@test (ttyp1) /]#
---------------------------------------------------
find /home/の結果になります。
---------------------------------------------------
[root@test (ttyp1) /]# find /home/
/home/
/home/www-data
/home/www-data/images
/home/www-data/images/ui-icons_222222_256x240.png
/home/www-data/images/ui-icons_888888_256x240.png
/home/www-data/images/ui-bg_glass_75_dadada_1x400.png
/home/www-data/images/ui-bg_glass_55_fbf9ee_1x400.png
/home/www-data/images/ui-bg_glass_65_ffffff_1x400.png
/home/www-data/images/ui-icons_2e83ff_256x240.png
/home/www-data/images/ui-icons_cd0a0a_256x240.png
/home/www-data/images/ui-bg_highlight-soft_75_cccccc_1x100.png
/home/www-data/images/Thumbs.db
/home/www-data/images/ui-bg_glass_75_e6e6e6_1x400.png
/home/www-data/images/ui-bg_glass_95_fef1ec_1x400.png
/home/www-data/images/ui-icons_454545_256x240.png
/home/www-data/encoding.js
/home/www-data/icoER.png
/home/www-data/icoCM.png
/home/www-data/cgi-bin
/home/www-data/cgi-bin/RevCgi2.cgi
/home/www-data/cgi-bin/download.cgi
/home/www-data/cgi-bin/RevCgi3.cgi
/home/www-data/cgi-bin/RevCgi.cgi
/home/www-data/td2.css
/home/www-data/admin
/home/www-data/admin/.htpasswd
/home/www-data/external
/home/www-data/external/jquery
/home/www-data/external/jquery/jquery.js
/home/www-data/icoEM.png
/home/www-data/line01.png
/home/www-data/tbar.png
/home/www-data/jquery-ui.css
/home/www-data/icoEMb.png
/home/www-data/index.html
/home/www-data/jquery-ui.js
/home/www-data/line02.png
/home/guest
/home/ftp
/home/ftp/etc
/home/ftp/etc/group
/home/ftp/etc/passwd
/home/ftp/bin
/home/ftp/bin/ls
/home/ftp/lib
/home/ftp/lib/libm.so.6
/home/ftp/lib/libcrypt.so.1
/home/ftp/lib/libc.so.6
/home/ftp/lib/libgcc_s.so.1
/home/ftp/lib/ld-linux.so.3
/home/ftp/pub
/home/ftp/pub/lost+found
/home/ftp/pub/lost+found/.cor00
[root@test (ttyp1) /]#
---------------------------------------------------
at_akihito.irie
kz21_ym
ftpユーザ /etc/ftpchroot に追加しても
ftp1のときと同じでした。
ファイル一覧取得のところで実行できなくなります。
ちなみにですが
/etc/inetd.confを
---------------------
#ftp stream tcp nowait root /bin/ftpd ftpd -l
ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd -l
ftp stream tcp6 nowait root /usr/sbin/in.ftpd in.ftpd -l
---------------------
という内容にしているのですが
これを /bin/ftpd の方有効に戻すとユーザftp1でもftpで正常にアクセスできます。
サーバだけが替わった状態だと思うのですが。。
at_akihito.irie
kz21_ym
遅くなってすみません。
環境作成の手順と関連ファイルを添付します。
手順にはあまり関係ないものも含まれているかもしれませんが
この手順で一応再現するかと思います。
ただこの環境だと前と少し違っていて
ユーザがftpのままだと ftpchroot 無しでも ls が実行できないようです。
ユーザ ftp1 にしたとき ftpchroot 無しなら ls 実行でき
有りだと実行できない状態になっています。
よろしくお願いいたします。
ファイル | ファイルの説明 |
---|---|
関連ファイル.zip | |
手順まとめ.txt |
saitoh
kz21_ym
コメントありがとうございます。
nlistの結果だけですが、nlistは正常なようです。
--------------------------------------------------------
ftp> nlist
200 PORT command successful.
150 Opening ASCII mode data connection for 'file list'.
etc
bin
lib
pub
226 Transfer complete.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for '/bin/ls'.
--------------------------------------------------------
続けてls実行するとこのまま止まってしまいます。
linux-ftpd_0.17.orig.tarが対応するソースなのかと思って見てみましたが
ユーザのホームディレクトリへ chrootしているように見えるので
なにか問題あるのか分かりませんでした。
chootが正しく行えていないとすると何か考えられる原因
あるでしょうか?
at_akihito.irie
入江です。
/home/ftp/ ディレクトリと、その下のファイル群の権限の問題かもしれません。
chmodとchownコマンドを使用して、以下のように権限と所有者を変更した上でお試し頂けますでしょうか。
1. /home/ftp ディレクトリの所有者をrootにし、権限を555にする
[armadillo]# chown root:root /home/ftp [armadillo]# chmod 555 /home/ftp
2. /home/ftp/bin ディレクトリの所有者をrootにし、権限を511にする
[armadillo]# chown root:root /home/ftp/bin [armadillo]# chmod 511 /home/ftp/bin
3. /home/ftp/bin ディレクトリ内のlsファイルの権限を111にする
[armadillo]# chmod 111 /home/ftp/bin/ls
以上を実施した上で動作確認していただけますでしょうか。
参考: https://manpages.debian.org/testing/manpages-ja/in.ftpd.8.ja.html
at_dominique.m…
よこからすみません。
マルティネです。
こちらは armadillo-a460 を手元になかったので、手っ取り早くコンテナで試してみました。
https://armadillo.atmark-techno.com/news/20180402/software-update-a400 から romfs-a460-1.08.img.gz を取得して別の環境で生かしました(コンテナって便利ですね…)
in.ftpd 等の deb を展開して起動させたら、ログインの際に pam_unix が「libselinux.so.1」を見つからなくて失敗します。
同じ時代のlibselinux を http://archive.debian.org/debian/pool/main/libs/libselinux/libselinux1_… から展開させたら、無事に ftp1 のユーザーでログインできました。
ftpchroot 無しでは使えていますので、そこは手順の問題だけと思って話を続きます。
その段階では in.ftpd が正常に動いています:
* ftp ユーザーを /etc/ftpusers から外したら、in.ftpd でもログインできて chroot されます(/etc/ftpchroot にないのでちょっと変わった動きですが…)し、/etc/init.d/checkftp の /home/ftp の初期化で ls も実行できました。
* ftp1 ユーザーを作成して /etc/ftpchroot に入れない場合にログインできて、ls も実行できます。
* ftp1 ユーザーを /etc/ftpchroot に追加したところ、/home/ftp1 に chroot されました. /home/ftp1 に /home/ftp をコピーしたところで ls も実行できましたし、ftp1 の home directory を /home/ftp にしたら /home/ftp をそのまま使ってくれました。
再現できなかった理由はいくつか考えられます:
* 手順と言ってもまったく同じやり方で展開してないかもしれません。chroot無しでは動きますので、そこは考えにくいですが、一応どこかで違うことを試した可能性があります。ちなみにこちらは ipv6 で試そうとして /etc/inetd.conf に tcp6 を追加したところ busybox の inetd では listen しなかったので、inetd も更新しましたか?
* カーネルの適合性の問題 ? chroot と chroot無しの差は少ないと思うので、これもちょっと考えがたい…
strace もインストールして、inetd を strace -f で follow すればどこで失敗しているのは分かると思います。
本件では関係あるかどうかは何ともいえませんが、一般的に、atmark-dist と debian/ubuntu が根本なところでかなり変わってますので、dpkg を使うのは難しいと思います。思わないところに適合性の問題がでて不具合につながりますので、できれば atmark-dist をビルドした環境で in.ftpd をビルドした方がいいと思います。
よろしくお願いします。
kz21_ym
kz21_ym
kz21_ym
at_akihito.irie
2023年2月15日 17時16分
入江です。
回答が遅くなってしまい申し訳ございません。
/bin/lsのハードリンク以外にも、lsの実行に必要なライブラリのハードリンクも必要ですが、
これらも/home/ftp/lib/以下に用意されましたでしょうか?
https://www.si-linux.co.jp/catwiki/index.php?ftpchroot%E3%81%AB%E3%81%A…