My developer team requesting me to mount an external FTP account into our web server so they can do file manipulation process between them. To achieve this, I need to mount FTP as file system, so they transparently not realized that they are browsing to an FTP account which has been localized into the server.
I will be using CurlFTPFS, a FTP filesystem based on cURL and FUSE. Variable as below:
OS: CentOS 6 64bit
FTP host: ftp.mydear.org
FTP directory: public_html
FTP username: [email protected]
FTP password: By55k#ds
Mount directory: /mnt/ftp/ftpuser
1. Lets install all requirements via yum:
$ yum install fuse* libcurl* glib* glibc.i686 file-libs file-devel file-static curl -y |
2. Download and install CurlFTPFS:
$ cd /usr/local/src $ wget http://cdnetworks-kr-2.dl.sourceforge.net/project/curlftpfs/curlftpfs/0.9.1/curlftpfs-0.9.1.tar.gz $ tar -xzf curlftpfs-0.9.1.tar.gz $ cd curlftpfs-* $ ./configure $ make $ make install |
3. We will use .netrc capabilities in storing FTP credentials. Use text editor and create one file called /root/.netrc (if still not exist) and enter following information:
machine ftp.mydear.org login [email protected] password By55k#ds |
4. Change the permission so it will not accessible by others and prepare the mount directory:
$ chmod 600 /root/.netrc $ mkdir -p /mnt/ftp/ftpuser |
5. Since the developer team need to browse the mounted directory, I need to create a specific user and assign correct permission and ownership to the directory:
$ useradd -m developer -p 'develPASS' $ chown developer.developer /mnt/ftp/ftpuser -Rf |
6. Lets get the UID and GID of user/group developer to be used when mounting the FTP account:
$ id -u developer 501 $ id -g developer 502 |
7. Mount the FTP account into directory with ownership and allowing other (since we mount it as root) option:
$ curlftpfs ftp.mydear.org /mnt/ftp/ftpuser -o uid=501 -o gid=502 -o allow_other |
Done! My developer team now can browse /mnt/ftp/ftpuser in the server and do their file manipulation work. To allow this FTP to be mounted automatically after reboot, you can put following line into /etc/fstab:
curlftpfs#ftp.mydear.org /mnt/ftp/ftpuser fuse rw,uid=501,gid=502,user,noauto,allow_other 0 0 |
And also, if you want to unmount it, simply run following command:
$ fusermount -uz /mnt/ftp/ftpuser |
Notes: You might encounter unmount error if using above command. Depending on kernel and fuse version, upgrading the them might solve the problem.