kazulog@sv1:~$ cat /etc/os-release | head -2 PRETTY_NAME="Ubuntu 26.04 LTS" NAME="Ubuntu" kazulog@sv1:~$ sudo apt install -y vsftpd | cat WARNING: apt does not have a stable CLI interface. Use with caution in scripts. Reading package lists... Building dependency tree... Reading state information... Solving dependencies... Installing: vsftpd Installing dependencies: ssl-cert Summary: Upgrading: 0, Installing: 2, Removing: 0, Not Upgrading: 96 Download size: 141 kB Space needed: 385 kB / 63.1 GB available Get:1 http://archive.ubuntu.com/ubuntu resolute/main amd64 ssl-cert all 1.1.3ubuntu2 [18.8 kB] Get:2 http://archive.ubuntu.com/ubuntu resolute/main amd64 vsftpd amd64 3.0.5-0.4 [122 kB] Preconfiguring packages ... Fetched 141 kB in 2s (72.9 kB/s) Selecting previously unselected package ssl-cert. (Reading database ... 91400 files and directories currently installed.) Preparing to unpack .../ssl-cert_1.1.3ubuntu2_all.deb ... Unpacking ssl-cert (1.1.3ubuntu2) ... Selecting previously unselected package vsftpd. Preparing to unpack .../vsftpd_3.0.5-0.4_amd64.deb ... Unpacking vsftpd (3.0.5-0.4) ... Setting up ssl-cert (1.1.3ubuntu2) ... Created symlink '/etc/systemd/system/multi-user.target.wants/ssl-cert.service' → '/usr/lib/systemd/system/ssl-cert.service'. Setting up vsftpd (3.0.5-0.4) ... Created symlink '/etc/systemd/system/multi-user.target.wants/vsftpd.service' → '/usr/lib/systemd/system/vsftpd.service'. /usr/lib/tmpfiles.d/vsftpd.conf:1: Line references path below legacy directory /var/run/, updating /var/run/vsftpd/empty → /run/vsftpd/empty; please update the tmpfiles.d/ drop-in file accordingly. Processing triggers for man-db (2.13.1-1build1) ... Scanning processes... Scanning linux images... Running kernel seems to be up-to-date. No services need to be restarted. No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host. kazulog@sv1:~$ grep -vE '^(#|$)' /etc/vsftpd.conf listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=NO kazulog@sv1:~$ grep -n 'write_enable\|local_umask\|chroot_local_user\|ssl_enable' /etc/vsftpd.conf 31:#write_enable=YES 35:#local_umask=022 44:#anon_mkdir_write_enable=YES 112:# the possible risks in this before using chroot_local_user or 114:#chroot_local_user=YES 117:# directory. If chroot_local_user is YES, then this list becomes a list of 122:#chroot_local_user=YES 151:ssl_enable=NO kazulog@sv1:~$ systemctl status vsftpd --no-pager | head -6 | cat ● vsftpd.service - vsftpd FTP server Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; preset: enabled) Active: active (running) since Sat 2026-09-12 10:16:30 JST; 7s ago Invocation: 6e752ef8a1d14ad8895116d39f89c1bf Process: 2759 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS) Main PID: 2761 (vsftpd) kazulog@sv1:~$ sudo ss -tlnp 'sport = :21' State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 32 *:21 *:* users:(("vsftpd",pid=2761,fd=3))