How to Properly Start, Stop and Debug ProFTPD Server Running in inetd Mode


4 views

When ProFTPD shows ServerType inetd in its configuration, this indicates it's running under the internet superserver (inetd/xinetd) rather than as a standalone daemon. This explains why you can't find it in typical init scripts or process listings.

Since it's started by inetd/xinetd, ProFTPD only spawns when an FTP connection is made. Try these verification methods:

# Check xinetd configuration
grep -r "proftpd" /etc/xinetd.d/ 

# Alternative inetd check
cat /etc/inetd.conf | grep ftp

# Verify via netstat
netstat -tulnp | grep ftp

# Check recent connections
journalctl -u xinetd --since "1 hour ago" | grep ftp

For inetd-controlled services, you need to either:

  1. Disable the service in xinetd/inetd configuration
  2. Restart the superserver itself
# Method 1: Disable in xinetd
sudo sed -i 's/disable.*/disable = yes/' /etc/xinetd.d/proftpd
sudo systemctl restart xinetd

# Method 2: Direct inetd restart
sudo /etc/init.d/inetd restart

For better control, consider switching to standalone mode:

# Edit proftpd.conf
sudo nano /etc/proftpd.conf
# Change: ServerType standalone

# Create init script (Debian/Ubuntu example)
sudo cp /usr/share/doc/proftpd/examples/init.d/proftpd /etc/init.d/
sudo chmod +x /etc/init.d/proftpd
sudo update-rc.d proftpd defaults

# Start service
sudo systemctl start proftpd

For deeper troubleshooting, run ProFTPD in debug mode:

# Standalone debug mode
proftpd -n -d 5

# For inetd debugging
Modify /etc/xinetd.d/proftpd to add:
server_args = -n -d 5
Then restart xinetd

When dealing with ProFTPD running in inetd mode, traditional service management commands won't work because the daemon isn't running as a standalone service. Your observations about missing init scripts and empty process listings are expected behavior for inetd services.

First, verify if ProFTPD is configured in your system's inetd or xinetd configuration:

# For traditional inetd:
grep proftpd /etc/inetd.conf

# For xinetd systems:
grep -r proftpd /etc/xinetd.d/

To restart ProFTPD when running under inetd, you need to restart the super-server:

# For systems using inetd:
sudo /etc/init.d/inetd restart

# For systems using xinetd:
sudo systemctl restart xinetd
# or
sudo service xinetd restart

If you prefer ProFTPD as a standalone service, modify /etc/proftpd.conf:

ServerType standalone

Then create an init script or systemd unit. For systemd:

# /etc/systemd/system/proftpd.service
[Unit]
Description=ProFTPD FTP Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/proftpd
ExecStop=/usr/bin/pkill proftpd
Restart=on-failure

[Install]
WantedBy=multi-user.target

To confirm ProFTPD is accepting connections regardless of mode:

telnet localhost 21
netstat -tulnp | grep 21
ss -tulnp | grep 21

Enable verbose logging in proftpd.conf:

LogLevel debug

Then monitor logs in real-time:

tail -f /var/log/proftpd/proftpd.log

For systems with systemd managing xinetd:

# Check status
sudo systemctl status xinetd

# Restart service
sudo systemctl restart xinetd

# Enable at boot
sudo systemctl enable xinetd