Are you facing the error '500 oops vsftpd refusing to run with writable root inside chroot()'?
This guide is for you.
500 oops vsftpd refusing to run with writable root inside chroot() happens when attempting to connect to a vsftpd FTP server that is configured to jail (prevent from accessing other directories) each FTP user.
In this context, we shall look into the cause of this error to occur and also see how to fix it.
What causes '500 oops vsftpd refusing to run with writable root inside chroot()' error ?
Generally, this error mainly occurs when you have newly installed the vsftpd on a Linux server and trying to FTP to it.
Also, after upgrading the vsftpd or vsftpd-ext, you may come across this error message while connecting to FTP.
Tips to fix vsftpd refusing error ?
The best fix is to create a separate Linux user specifically for FTP only that can't log in via SSH.
In case, if you wish to remove the SSH access for a test user then you can run the below command:
$ usermod -s /sbin/nologin testuser
However, this will not completely fix the error.
So we need to modify the user's home directory to read-only.
Here, we are assuming the username to be testuser and the home directory to be /home/testuser.
Then we run the below command:
$ chmod a-w /home/testuser
Finally, restart the vsftpd by running the below command.
$ systemctl restart vsftpd
Alternatively, you can try bypassing the writable check in the vsftpd config file by executing the below command:
$ echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf && systemctl restart vsftpd