2014-05-16 19 views
5

Ich lerne Web-Programmierung mit Python, und immer noch im Grunde durch Vorlesungen/Tutorial.error_perm: 550 Berechtigung verweigert

Ich versuche, eine Datei auf einen Server hochzuladen. Dies ist mein Code:

import ftplib 
import sys 

filename = sys.argv[1] 
connect = ftplib.FTP("***.**.***.**") 
connect.login("testuser","pass") 
file = open(filename, "rb") 
connect.storbinary("STOR " + filename, file) 
connect.quit() 

und das ist der Fehler, den ich habe:

File "C:\Users\test\putfile.py", line 8, in <module> 
    connect.storbinary("STOR " + filename, file) 
File "C:\Python27\lib\ftplib.py", line 471, in storbinary 
    conn = self.transfercmd(cmd, rest) 
File "C:\Python27\lib\ftplib.py", line 376, in transfercmd 
    return self.ntransfercmd(cmd, rest)[0] 
File "C:\Python27\lib\ftplib.py", line 339, in ntransfercmd 
    resp = self.sendcmd(cmd) 
File "C:\Python27\lib\ftplib.py", line 249, in sendcmd 
    return self.getresp() 
File "C:\Python27\lib\ftplib.py", line 224, in getresp 
    raise error_perm, resp 
ftplib.error_perm: 550 Permission denied. 

Testuser die Berechtigung Dateien zu schreiben haben sollte, da der Ordner von ihm gehört, und er hat root-Privilegien (wurde in sudoer Datei hinzugefügt).

das gleiche passiert, wenn ich die Zeile:

connect.cwd('/testfolder') 

I erhalten error_perm: 550 Verzeichnis ändern fehlgeschlagen.

aber ich kann immer noch die vorhandenen Dateien ganz gut (mit connect.retrlines („RETR“ + Dateiname))

lesen bin ich ziemlich neu zu Python sowie Linux, so habe ich nicht Idee, was ich mache. Ich brauche Hilfe.

Antwort

4

Ich würde prüfen, ob Sie an der richtigen Stelle sind. Ich habe das gleiche Problem, und dann erkannte ich, dass ich an einem anderen Ort war, den ich beabsichtigte, im Stammordner, über "/public_html", also gab es keinen Ordner, den ich eingeben wollte, und ich tat es nicht haben Berechtigungen zum Speichern von Dateien.

Sie können überprüfen, wo Sie diese Art und Weise sind:

print connect.pwd() 

und was der Inhalt des aktuellen Verzeichnisses sind:

print ftplib.FTP.dir(connect) 

Also, wenn Sie in dem Stammordner sind (“/ "), über dem" /public_html "und Sie möchten das aktuelle Verzeichnis ändern in" /testfolder "müssen Sie verwenden:

connect.cwd('/public_html/testfolder') 
+1

Und don‘ t pass ein Variabl e zu 'rebbinary()' oder 'storbinary()', das den Dateipfad hat, in dem Sie die Datei auf Ihrem ** lokalen ** Rechner herunterladen, statt eine Variable mit nur dem Namen der Datei auf dem Server, wie ich es tat. : p – binarysubstrate

3

Vielleicht kann dies helfen:

Mit FTP nicht ausreichend sein Besitzer von Dateien und Verzeichnissen ist. Der Dienst und der Daemon FTP müssen korrekt konfiguriert sein, um Dateien schreiben und erstellen zu können usw.

Zum Beispiel in Ubuntu:
bearbeiten /etc/vsftpd.conf

Und in der Zeile starten Sie das Semikolon

;write_enable=YES 

löschen

schließlich den Dienst:

sudo service vsftpd restart 
Verwandte Themen