Why cannot `ftp` program read a file in /tmp directory?

2

While making an automated ftp upload script, I noticed a very strange behaviour of ftp program: if I want to send a file which belongs to /tmp directory, ftp will always fail and give an error message: cannot create file.

See this:

^_^ ~ > touch /tmp/file1

^_^ ~ > touch file2

^_^ ~ > ftp <server>
Connected to <server> (<server ip>).
220 (vsFTPd 2.2.2)
Name (<server:username>): <username>
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> put /tmp/file1
local: /tmp/file1 remote: /tmp/file1
227 Entering Passive Mode (<ip>).
553 Could not create file.

ftp> put file2
local: file2 remote: file2
227 Entering Passive Mode (<ip>).
150 Ok to send data.
226 Transfer complete.
ftp> 

What is wrong with ftp reading a file from /tmp?

There is no SELinux or AppArmor on the server nor on the ftp client.

Howard

Posted 2013-02-20T23:41:37.793

Reputation: 1 646

Does the /tmp directory exist on the ftp server and do you have access to it? Can you cd into both the remote and local /tmp directories and put file1? – Nicole Hamilton – 2013-02-21T00:24:59.377

Answers

1

The problem isn’t reading the file from /tmp –– read the error message: “553 Could not create file.”  When you say

put a_single_file_name

that is equivalent to

put  single_file_name   that_same_file_name_again

So put /tmp/file1 is equivalent to put /tmp/file1 /tmp/file1, and this fails if the FTP server doesn’t have a writable /tmp directory configured.  Try put /tmp/file1 file1, or maybe put /tmp/file1 ./file1.

Scott

Posted 2013-02-20T23:41:37.793

Reputation: 17 653

1

Note that when you run ftp you are connected to a remote machine. Use the lcd to change directories on your local machine; cd will change directories on the remote machine. In your case

lcd /tmp
put file1
lcd <to original directory>

dinesh

Posted 2013-02-20T23:41:37.793

Reputation: 581

1

Use ls -l to view the permissions on the folder. Does the user you authenticate as have write access to that directory? If not, you need to use chmod to ensure that it does, or it will never work.

Often, FTP accounts have limited access to areas close to / In fact, some systems are set up so they can ONLY write to /home/ftpUserName

kmort

Posted 2013-02-20T23:41:37.793

Reputation: 1 609