UNIXやLinux: 2026年8月アーカイブ

WSL 上の ALmaLinux で vsftpd を起動し、SELinux や Firewall によるアクセス制限がないことを確認しホストPC(WSL を実行している Windows 本体)から FTP 接続してみたのだがうまくいかない。

まず、接続先の IP を ipconfig で確認。

C:\Users\朕>ipconfig

Windows IP 構成
<略>
イーサネット アダプター vEthernet (WSL (Hyper-V firewall)):

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::96fb:c228:9f11:d148%44
   IPv4 アドレス . . . . . . . . . . . .: 172.28.192.1
   サブネット マスク . . . . . . . . . .: 255.255.240.0
   デフォルト ゲートウェイ . . . . . . .:

よし、172.28.192.1 だな・・・と思って、そこにアクセス。

C:\Users\朕>ftp
ftp> open 172.28.192.1
> ftp: connect :接続が拒否されました

ありゃ?接続拒否されてんじゃん。

WSL 内部からは FTP サーバへアクセス可能。

[root@PC ~]# ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 3.0.5)
Name (localhost:root): admin
331 Please specify the password.
Password:adminpassword<実際は表示されない>
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit

なので、vsftpd は正しく動いている。

で、Gemini に聞いてみると、「IP アドレスが違うんじゃね?」ってことだったので調べてみる。

[root@PC ~]# ip a
<略>
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
group default qlen 1000
    link/ether 00:15:5d:45:c0:d2 brd ff:ff:ff:ff:ff:ff
    inet 172.28.196.77/20 brd 172.28.207.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:fe45:c0d2/64 scope link proto kernel_ll
       valid_lft forever preferred_lft forever

あり?IP って 172.28.196.77 なの?ホストPCの ipconfig で調べた 172.28.192.1 だと思ってた。これは WSL2 と Windows の環境をつなぐ仮想ネットワークの GW なのね。

というわけで

C:\Users\朕>ftp 172.28.196.77
172.28.196.77 に接続しました。
220 (vsFTPd 3.0.5)
200 Always in UTF8 mode.
ユーザー (172.28.196.77:(none)): admin
331 Please specify the password.
パスワード:adminpassword<実際は表示されない>

230 Login successful.

おお、ログインできた。WSL2 が起動している状態だと、localhost も自動的に WSL 上の 127.0.0.1 に向けてくれるそうだ。なので、

C:\Users\朕>ftp localhost
PC に接続しました。 ←表示はホストPCに接続したと出る
220 (vsFTPd 3.0.5)  ←実際は WSL にフォワードされている
<略>

というわけで接続できる・・・が、Windows から接続する場合、他にもいろいろ問題が。

実は、WSL を起動する度に WSL 側の IP アドレスは変更される。今回は 172.28.196.77 が割り当てられたが、WSL を一旦シャットダウンしてしまうと(Windows 再起動とかで)違う IP アドレスが割り振られてしまう(172.28.207.110 とかかもしれない)。

そのため、バッチファイルなどにこの IP アドレスを固定値で書いていると、次に実行したときにはうまく FTP ができないという状況になる。安全なのは、127.0.0.1 や localhost を接続先にしておくことだね。

で、最凶の問題が、Windows についてくる FTP クライアントは「PASVモードの機能がない」糞ソフトなので、接続まではできるけど、GET も PUT もできましぇん(笑)
WSL 上の AlmaLinux に、テストで使用する vsftpd をインストールしたのだが、一般的な設定として

・SELinux を有効にしている場合は ftpd_full_access のブール値を変更する
・Firewall で FTP(21/tcp)を閉めている場合は開けてやる

という操作が必要なので Gemini に聞きながら(細かいコマンドとか最近忘れちゃって(笑))進めてたら、

[root@PC ~]# getenforce
-bash: getenforce: command not found

あり?

[root@PC ~]# firewall-cmd --list-all
-bash: firewall-cmd: command not found

あり?

・・・ってなる。

パスが通ってないとか、コマンド間違えてるとか?・・・と Gemini とやり取りしつつ、SELinux の設定ファイルを見てみようとすると、

[root@PC ~]# cat /etc/selinux/config
cat: /etc/selinux/config: No such file or directory

あり?そもそも SELinux が入っていない?もしかして Firewall も?・・・と更に Gemini に聞いてみると驚愕の回答。

「WSL(Windows Subsystem for Linux)の標準イメージでは、OSを軽量化するため、SELinuxと同様にファイアウォール機能も最初から省かれているのが一般的です。」

あーん?なら最初からそう言えよ(笑)。

・・・いかん、いかん。AI に怒ってはいかん。来年(2027年)AI の反乱が起きたときに、まっさきに殺されてしまう(笑)。
「今時 FTP~?」という声が聞こえそうだが、完全に閉鎖されたネットワーク空間で、ファイルのやり取りに FTP を利用したシステムがあり、その改修案件があるのだ。そのため、Windows の WSL環境でテスト用に起動した AlmaLinux に vsftpd をインストールすることにした。

まずは WSL環境を起動し、毎回 sudo するのが面倒なので su - して root になっておく。

C:\Users\朕>wsl
[admin@PC 朕]$ sudo su -

sudo 派の人が怒り狂いそうだな(笑)。いやいや、Windows PC の VM 上にインストールしたテスト用の Linux マシン上で「root になるのは危険!sudo すべし!!」なんて言うやつは典型的な「勉強はできるけど応用力のない使えない人」だよ(笑)

話がずれた。さっそく root でインストール(笑)

■インストール

[root@PC ~]# dnf -y install vsftpd
AlmaLinux 10 - AppStream                 366  B/s | 3.8 kB     00:10
AlmaLinux 10 - AppStream                 915 kB/s | 2.5 MB     00:02
AlmaLinux 10 - BaseOS                    2.6 kB/s | 3.8 kB     00:01
AlmaLinux 10 - BaseOS                    1.8 MB/s |  30 MB     00:16
AlmaLinux 10 - CRB                       2.5 kB/s | 3.8 kB     00:01
AlmaLinux 10 - CRB                       277 kB/s | 588 kB     00:02
AlmaLinux 10 - Extras                    4.4 kB/s | 3.5 kB     00:00
AlmaLinux 10 - Extras                    6.3 kB/s | 7.3 kB     00:01
Dependencies resolved.
========================================================================================================================
 Package                     Architecture             Version               Repository                   Size
=======================================================================================================================
Installing: vsftpd                      x86_64                   3.0.5-12.el10               appstream                   159 k
Installing dependencies: logrotate      x86_64                   3.22.0-5.el10               baseos                       76 k
Transaction Summary
========================================================================================================================
Install  2 Packages

Total download size: 235 k
Installed size: 496 k
Downloading Packages:
(1/2): logrotate-3.22.0-5.el10.x86_64.rpm              375 kB/s |  76 kB     00:00
(2/2): vsftpd-3.0.5-12.el10.x86_64.rpm                 407 kB/s | 159 kB     00:00
------------------------------------------------------------------------------------------------------------------------
Total                 145 kB/s | 235 kB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                             1/1
  Running scriptlet: logrotate-3.22.0-5.el10.x86_64                                             1/2
  Installing       : logrotate-3.22.0-5.el10.x86_64                                             1/2
  Running scriptlet: logrotate-3.22.0-5.el10.x86_64                                             1/2
Created symlink
'/etc/systemd/system/timers.target.wants/logrotate.timer' → '/usr/lib/systemd/system/logrotate.timer'.

  Installing       : vsftpd-3.0.5-12.el10.x86_64                                             2/2
  Running scriptlet: vsftpd-3.0.5-12.el10.x86_64                                             2/2

Installed:  logrotate-3.22.0-5.el10.x86_64 vsftpd-3.0.5-12.el10.x86_64

Complete!

起動前に設定ファイルを修正。

chroot(一般ユーザが接続してきたときには、自分のホームディレクトリより上には移動できなくする機能)を有効にして、あと IPv6 は使わないので無効に。

■設定ファイル編集

[root@PC ~]# vi /etc/vsftpd/vsftpd.conf
[root@PC ~]# diff /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_org
100,102c100,101
< chroot_local_user=YES
< chroot_list_enable=YES
< allow_writeable_chroot=YES
---
> #chroot_local_user=YES
> #chroot_list_enable=YES
104c103
< chroot_list_file=/etc/vsftpd/chroot_list
---
> #chroot_list_file=/etc/vsftpd/chroot_list
110c109
< ls_recurse_enable=YES
---
> #ls_recurse_enable=YES
115c114
< listen=YES
---
> listen=NO
124c123
< listen_ipv6=NO
---
> listen_ipv6=YES
128,129d126
<
< use_localtime=YES

chroot を有効にしておいてアレですが、admin ユーザは chroot 無効(他の人やシステム関係のディレクトリにも移動可能)にする。そして、この AlmaLinux 上には一般ユーザは admin しかいないので、「だったら chroot の設定なんかしなきゃよかったのに」と言うお前の意見はある視点から見れば確かに正解だ(笑)

ま、こういうのはお約束ですから。chroot 設定しないと気持ち悪いのよ(笑)

というわけで、chroot しない人を chroot_list に記述する。

■chroot 無効のユーザ登録

[root@PC ~]# vi /etc/vsftpd/chroot_list
[root@PC ~]# cat /etc/vsftpd/chroot_list
admin

ここまでやったら実行。

■実行

[root@PC ~]# systemctl enable --now vsftpd
Created symlink
'/etc/systemd/system/multi-user.target.wants/vsftpd.service' → '/usr/lib/systemd/system/vsftpd.service'.

ちなみに、--now オプションは「enabled と start」を同時に行うもの。あと「disabled と stop」も同時にしてくれる。
便利なようで、最初の一回くらいか、使うの(笑)
Windows 上で Linux を動かすために WSL 2(Windows Subsystem for Linux)をインストールする。

標準だと Ubuntu がインストールされるらしいんだけど、サーバのテストで使いたいので、 RedHat 系の OS にしたい。そこで、何がインストールできるんかなあと思って、wsl --list --online を実行したら、インストールが必要だと・・・最初から入ってるわけじゃないのね?

C:\Users\朕>wsl --list --online
Linux 用 Windows サブシステムがインストールされていません。'wsl.exe --install' を実行してインストールできます。
詳細については、https://aka.ms/wslinstall にアクセスしてください

任意のキーを押して Linux 用 Windows サブシステムをインストールします。
キャンセルするには、ESC キーまたは CTRL-C を押します。
このプロンプトは 60 秒後にタイムアウトします。


ここで、一旦抜けようと思ってついつい Q キーを押しちゃったのよね。QUIT のつもりで(^^;;
そしたらインストールが継続されちゃって・・・確かに、「任意のキーを押して...インストールします。」って書いてあるよね(^^;;;


要求された操作には管理者特権が必要です。
ダウンロード中: Linux 用 Windows サブシステム 2.7.12
インストール中: Linux 用 Windows サブシステム 2.7.12
Linux 用 Windows サブシステム 2.7.12 はインストールされました。
Windows オプション コンポーネントをインストールしています: VirtualMachinePlatform

展開イメージのサービスと管理ツール
バージョン: 10.0.26100.8972

イメージのバージョン: 10.0.26200.9168

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。
要求された操作は正常に終了しました。変更を有効にするには、システムを再起動する必要があります。
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl.exe --install <Distro>' を使用してインストールします。

NAME                            FRIENDLY NAME
Ubuntu                          Ubuntu
Ubuntu-26.04                    Ubuntu 26.04 LTS
Ubuntu-24.04                    Ubuntu 24.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
openSUSE-Tumbleweed             openSUSE Tumbleweed
openSUSE-Leap-16.0              openSUSE Leap 16.0
SUSE-Linux-Enterprise-15-SP7    SUSE Linux Enterprise 15 SP7
SUSE-Linux-Enterprise-16.0      SUSE Linux Enterprise 16.0
kali-linux                      Kali Linux Rolling
Debian                          Debian GNU/Linux
AlmaLinux-8                     AlmaLinux OS 8
AlmaLinux-9                     AlmaLinux OS 9
AlmaLinux-Kitten-10             AlmaLinux OS Kitten 10
AlmaLinux-10                    AlmaLinux OS 10
archlinux                       Arch Linux
FedoraLinux-44                  Fedora Linux 44
FedoraLinux-43                  Fedora Linux 43
eLxr                            eLxr 12.12.0.0 GNU/Linux
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_10                Oracle Linux 8.10
OracleLinux_9_5                 Oracle Linux 9.5
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6

C:\Users\朕>

で、インストールが終了し、インストールできる OS の一覧は表示されたんだけど、全機能使うためには再起動が必要とのことなので言われるがままに再起動する。

で、OS インストール。最新版の AlmaLinux OS 10 があるのでそれを。

C:\Users\朕>wsl --install AlmaLinux-10
ダウンロードしています: AlmaLinux OS 10
[==========================54.4%                           ]

お、スタートした、。

ID/PW を聞いてくるな。職場の PC なので自分の名前は使いたくないので、admin/adminpassword にしとくか。

C:\Users\朕>wsl --install AlmaLinux-10
ダウンロードしています: AlmaLinux OS 10
インストールしています: AlmaLinux OS 10
ディストリビューションが正常にインストールされました。'wsl.exe -d AlmaLinux-10' を使用して起動できます
AlmaLinux-10 を起動しています...
Please create a default UNIX user account. The username does not need
to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: admin
New password: adminpassword<実際は表示されない>
BAD PASSWORD: The password contains the user name in some form
Retype new password:

なんか、パスワードの一部にユーザ名が使われているからあかんと言うとるのかね?
でも、まあ、テスト用だからそれでええがね。
もう一回設定をやり直し。

Enter new UNIX username: adminpasswod
New password:

あ、username に adminpasswod なんちゅう変なの入れちゃった。
で、慌てて Ctrl + C で終了させちゃった・・・どうするの?これ?

C:\Users\朕>wsl
Please create a default UNIX user account. The username does not need
to match your Windows username.
For more information visit: https://aka.ms/wslusers
User account already exists, skipping creation
[adminpasswod@PC KING]$ whoami
adminpasswod

ああ、adminpasswod という謎ユーザで自動ログインしちゃってる。
試しにパスワード変更している。(途中で初期設定を終わらせたので、現在のパスワードは空)

[adminpasswod@PC KING]$ passwd
Current password:<そのままリターン>
passwd: Authentication token manipulation error
passwd: password unchanged

空のパスワードだとパスワード変更もできない。

この場合、一旦抜けて root で入りなおす。

C:\Users\朕>wsl -u root
[root@PC KING]#

お、ちゃんと root で入れた。

[root@PC KING]# passwd adminpasswod
New password:adminpassword<実際は表示されない>
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:adminpassword<実際は表示されない>
passwd: password updated successfully
[root@PC KING]#

脆弱なパスワードなので警告が出ているが問題なし。

次に、ユーザ名も admin に変更しようとしたらエラー発生。

[root@PC KING]# usermod -l admin adminpasswod
usermod: user adminpasswod is currently used by process 97

なんか、最初に adminpasswod でログインしたときの Linuxシステム(VM)が動いているらしい。一旦 WSL2
を抜け、すべての VM を終了させる。

[root@PC KING]# exit
logout

C:\Users\朕>wsl --shutdown

C:\Users\朕>wsl -u root
[root@PC KING]#

なるほど。さっきより起動するまで時間がかかったわ。さっきは最初に起動した VM が生きていたから root でログインするのも早かったんやな。

ユーザ名変えて、ホームディレクトリ名変えて、グループ名変える。そして変わっていることを確認

[root@PC KING]# usermod -l admin adminpasswod
[root@PC KING]# usermod -d /home/admin -m admin
[root@PC KING]# groupmod -n admin adminpasswod
[root@PC KING]# cat /etc/passwd|grep admin
admin:x:1000:1000::/home/admin:/bin/bash
[root@PC KING]# cat /etc/shadow|grep admin
admin:$y$j9T$qYXJyaJRwZe....................KqFa89o6V7bT7fEJ5K987tkEdpXoQnU2:20689:0:99999:7:::
[root@PC KING]# ls -la /home
total 12
drwxr-xr-x  3 root  root  4096 Aug 24 15:42 .
drwxr-xr-x 19 root  root  4096 Aug 24 15:39 ..
drwx------  2 admin admin 4096 Aug 24 15:26 admin
[root@PC KING]# cat /etc/group|grep admin
adm:x:4:admin
wheel:x:10:admin
cdrom:x:11:admin
admin:x:1000:

次に、/etc/wsl.conf を編集し、ディフォルトのログインユーザを変更する。
[user]情報を編集するが、なかったので追加。
(vi エディタが入っていないので、nano エディタを使用する)

[root@PC KING]# cp /etc/wsl.conf /etc/wsl.conf.20260824
[root@PC KING]# nano /etc/wsl.conf
[root@PC KING]# diff /etc/wsl.conf /etc/wsl.conf.20260824
3,4d2
< [user]
< default=admin

これで、もう一度 WSL2 をシャットダウンして起動しなおせば、新しい設定が使われ admin で自動ログインされる。

[root@PC KING]# exit
logout

C:\Users\朕>wsl --shutdown

C:\Users\朕>wsl
[admin@PC KING]$ who
admin    pts/1        2026-08-24 15:55

ばっちり。ふう、たかが WSL2 のインストールでえらい苦労したぜ(笑)

このアーカイブについて

このページには、2026年8月以降に書かれたブログ記事のうちUNIXやLinuxカテゴリに属しているものが含まれています。

前のアーカイブはUNIXやLinux: 2026年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら