.. _systemdsocket: Socket-Aktivierung ################## Anstelle auf die altbekannten Superserver (x)inetd zu setzen, soll hier eine Socket-Unitdatei für vsftpd auf Debian 11 verwendet werden. Die erforderliche Software ist mit ``apt install vsftpd ftp`` schnell installiert. Weitere Voraussetzungen sind, dass weder solch ein Superserver läuft, noch ``tcpd`` ausbremst und außerdem der vsftpd-Server nicht im standalone listening Modus arbeitet: .. highlight:: shell-session :: root@debra:~# pgrep -alfi inet root@debra:~# root@debra:~# grep -Ev '^#|^$' /etc/hosts.deny root@debra:~# root@debra:~# grep '^listen' /etc/vsftpd.conf listen=NO listen_ipv6=NO root@debra:~# root@debra:~# pkill -9 ftp root@debra:~# root@debra:~# pgrep -alfi ftp Nun erstellen wir die beiden Dateien ``vsftpd.socket`` sowie ``vsftpd@.service`` und geben ihnen den im Folgenden dargestellten Inhalt. Zuerst wollen wir die Datei ``/etc/systemd/system/vsftpd.socket`` erzeugen: .. highlight:: ini :: [Unit] Description=Open port 21 for FTP PartOf=vsftpd.service [Socket] ListenStream=21 Accept=yes [Install] WantedBy=sockets.target Als zweites ist die Datei ``/etc/systemd/system/vsftpd@.service`` dran (auf das @-Zeichen achten, das ist signifikant): :: [Unit] Description=vsftpd FTP server [Service] Type=forking ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf ExecReload=/bin/kill -HUP $MAINPID ExecStartPre=-/bin/mkdir -p /var/run/vsftpd/empty StandardInput=socket StandardOutput=socket [Install] WantedBy=default.target Nun müssen wir uns nur noch um das Starten der Services kümmern: .. highlight:: shell-session :: root@debra:~# systemctl daemon-reload root@debra:~# systemctl enable vsftpd.socket root@debra:~# systemctl start vsftpd.socket root@debra:~# root@debra:~# systemctl --full --no-pager status vsftpd.socket ● vsftpd.socket - Open port 21 for FTP Loaded: loaded (/etc/systemd/system/vsftpd.socket; enabled; vendor preset: enabled) Active: active (listening) since Wed 2022-03-30 15:52:27 CEST; 2min 18s ago Listen: [::]:21 (Stream) Accepted: 19; Connected: 0; Tasks: 0 (limit: 1841) Memory: 4.0K CPU: 706us CGroup: /system.slice/vsftpd.socket Mär 30 15:52:27 debra.dom1.test systemd[1]: Listening on Open port 21 for FTP. root@debra:~# Und schon kann es ans Testen gehen: :: root@debra:~# ftp localhost Connected to localhost. 220 (vsFTPd 3.0.3) Name (localhost:tux): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> dir 200 EPRT command successful. Consider using EPSV. 150 Here comes the directory listing. -rw-r--r-- 1 0 0 20 Mar 28 17:11 welcome.txt 226 Directory send OK. ftp> get welcome.txt local: welcome.txt remote: welcome.txt 200 EPRT command successful. Consider using EPSV. 150 Opening BINARY mode data connection for welcome.txt (20 bytes). 226 Transfer complete. 20 bytes received in 0.00 secs (14.7740 kB/s) ftp> by 221 Goodbye. root@debra:~# Siehe dazu auch https://mgdm.net/weblog/systemd-socket-activation/ Have a lot of fun!