merge from 3.3

Fix #17967: For ftp urls CWD to target instead of hopping to each directory
towards target. This fixes a bug where target is accessible, but parent
directories are restricted.
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index fdb1ec8..1de6aae 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -2303,8 +2303,7 @@
         self.ftp = ftplib.FTP()
         self.ftp.connect(self.host, self.port, self.timeout)
         self.ftp.login(self.user, self.passwd)
-        for dir in self.dirs:
-            self.ftp.cwd(dir)
+        self.ftp.cwd(os.path.join(*self.dirs))
 
     def retrfile(self, file, type):
         import ftplib