Tìm hiểu về FTP


1. Giới thiệu
FTP là chữ viết tắc của File Transfer Protocol - Giao thức truyền file. FTP là một giao thức truyền file trên mạng dựa trên chuẩn TCP nên rất đáng tin cậy!

2. Một số lệnh phổ biến của FTP
Sau đây là danh sách một số lệnh thường dùng kèm theo hướng dẫn mà bạn cần biết!
ascii chuyển sang chế độ truyền file theo dạng văn bản
binary chuyển sang chế độ truyền file theo dạng nhị phân
cd [directory] chuyển vào thư mục directory
cdup chuyển lên thư mục cấp trên một cấp
close ngắt kết nối với máy chủ
del [remote-file] xóa 1 file trên máy chủ
dir [remote-directory|file] liệt kê nội dung của thư mục hoặc danh sách các file trên máy chủ
help [command] cho biết hướng dẫn về lệnh command
lcd [local-directory] đặt lại thư mục làm việc trên client là local-directory
ls [remote-directory|file] [-la] liệt kê nội dung của thư mục hoặc danh sách các file trên máy chủ; tham số -la sẽ liệt kê tất cả có kèm theo mô tả về quyền
mdelete [remote-files] xóa nhiều file trên máy chủ
mget [remote-files] download các files trên máy chủ về
mkdir tạo thư mục có tên directory-name
mput [local-files] upload các files lên máy chủ
open host [port] kết nối đến máy chủ FTP có hostname là host và đang chạy dịch vụ FTP ở cổng port
put [remote-file] upload local-file lên máy chủ với tên mới là remote-file nếu được
pwd cho biết thư mục đang làm việc hiện thời
quit thoát
recv [local-file] nhận remote-file trên máy chủ và lưu trên máy tính với tên local-file nếu được
rename [from] [to] đổi tên file hoặc thư mục from thành to
rmdir directory-name xóa thư mục có tên directory-name
send local-file [remote-file] gởi local-file từ máy tính lên máy chủ với tên mới là remote-file nếu được
status cho biết trạng thái của phiên làm việc hiện tại
system cho biết hệ điều hành của máy chủ
user user-name [password] [account] login vào với tên là user-name, mật khẩu là password, tài khoản là account
? gọi hướng dẫn

3. Các ví dụ
Để dễ hiểu, các bạn hãy xem các ví dụ sau:(tôi sử dụng các này để upload mấy file lên website đó, không cần dùng các chương trình FTP mạnh như WS_FTP Pro, FTPNet, CuteFTP, AbsoluteFTP, ...!) Tôi lưu trang web cần tải lên server trong c:\website! Bây giờ tôi sẽ tải nó lên!
C:\website>ftp myftpsrv // kết nối đến máy chủ myftpsrv
Connected to myftpsrv.
User (ftpsrv:(none)): dt
331 User name okay, need password.
Password:
230 User logged in, proceed.
ftp> pwd // cho biết thư mục hiện tại đang làm việc!
257 "/home/dt" is current directory.
ftp> status // xem trạng thái hiện tại
Type: ascii; Verbose: On ; Bell: Off ; Prompting: On ; Globbing: On
Debugging: Off ; Hash mark printing: Off . // ascii=1
ftp> cd www // chuyển vào thư mục www
250 Directory changed to /home/dt/www
ftp> put index.html // upload file index.html lên server
200 PORT Command successful.
150 Opening ASCII mode data connection for index.html.
226 Transfer complete.
ftp: 2095 bytes sent in 0.00Seconds 2095000.00Kbytes/sec.
ftp> mkdir tools // tạo thư mục /home/dt/www/tools
257 "/home/dt/www/tools" directory created.
ftp> cd tools // chuyển vào thư mục tools
250 Directory changed to /home/dt/www/tools
ftp> lcd c:\website\tools // thay đổi lại local directory = c:\website\tools
Local directory now C:\website\tools.
ftp> bin // chuyển sang chế độ truyền file nhị phân
200 Type set to I.
ftp> mput *.* // upload tất cả các file trong c:\website\tools lên server, vào /home/www/tools/
mput test.zip? y
200 PORT Command successful.
150 Opening BINARY mode data connection for test.zip.
226 Transfer complete.
ftp: 10168 bytes sent in 0.06Seconds 169.47Kbytes/sec.
mput test.exe? y
200 PORT Command successful.
150 Opening BINARY mode data connection for test.exe.
226 Transfer complete.
ftp: 54625 bytes sent in 0.11Seconds 496.59Kbytes/sec.
ftp> ls -la // liệt kê nội dung của /home/www/tools
200 PORT Command successful.
150 Opening ASCII mode data connection for /bin/ls.
drwxr--r-- 1 dt group 0 Sep 30 14:13 .
drwxr--r-- 1 dt group 0 Sep 30 14:13 ..
-rwxr--r-- 1 dt group 54625 Sep 30 14:14 test.exe
-rwxr--r-- 1 dt group 10168 Sep 30 14:14 test.zip
226 Transfer complete.
ftp: 247 bytes received in 0.00Seconds 247000.00Kbytes/sec.
ftp> del test.exe // tôi lỡ tay upload lên file test.exe, bây giờ tôi cần phải xóa nó
250 DELE command successful.
ftp> cd .. // chuyển lên thư mục cấp trên
250 Directory changed to /home/dt/www
ftp> mkdir cgi-bin2 // tạo thư mục mới
257 "/home/dt/www/cgi-bin2" directory created.
ftp> rename cgi-bin2 cgi-bin // tôi đã nhập vào sai mất rồi, bây giờ phải đổi tên lại thôi!
350 File or directory exists, ready for destination name
250 RNTO command successful.
ftp> cd cgi-bin // chuyển vào thư mục cgi-bin
250 Directory changed to /home/dt/www/cgi-bin
ftp> lcd c:\website\cgi-bin // đặt lại local directory!
Local directory now C:\website\cgi-bin.
ftp> ascii // chuyển sang chế độ truyền file văn bản vì tôi cần upload một số file .cgi + .pl
200 Type set to A.
ftp> put test.cgi // upload file test.cgi
200 PORT Command successful.
150 Opening ASCII mode data connection for test.cgi.
226 Transfer complete.
ftp: 222 bytes sent in 0.00Seconds 222000.00Kbytes/sec.
ftp> ls -la // xem nội dung của /home/www/cgi-bin
200 PORT Command successful.
150 Opening ASCII mode data connection for /bin/ls.
drwxr--r-- 1 dt group 0 Sep 30 14:16 .
drwxr--r-- 1 dt group 0 Sep 30 14:16 ..
-rwxr--r-- 1 dt group 222 Sep 30 14:17 test.cgi
226 Transfer complete.
ftp: 182 bytes received in 0.00Seconds 182000.00Kbytes/sec.
ftp> site chmod 755 test.cgi // đặt quyền 755(wrxx-xr-x) cho file test.cgi
ftp> ls -la // tôi liệt kê lại thư mục cgi một lần nữa
200 PORT Command successful.
150 Opening ASCII mode data connection for /bin/ls.
drwxr-xr-x 1 dt group 0 Sep 30 14:16 .
drwxr-xr-x 1 dt group 0 Sep 30 14:16 ..
-rwxr-xr-x 1 dt group 222 Sep 30 14:17 test.cgi
226 Transfer complete.
ftp: 182 bytes received in 0.00Seconds 182000.00Kbytes/sec.
ftp> bye // tất cả đã xong, bây giờ tôi có thể ngắt kết nối được rồi!
221 Goodbye!
C:\website>
Hi vọng là bạn hiểu được ví dụ trên!


4. Nói thêm về FTP
Làm thế nào để kết nối với một máy chủ FTP qua một proxy-server, chẳng hạn như Wingate? Chỉ cần ftp đến proxy-server này và gõ vào như dạng sau, user@host[:port]. Ví dụ máy tôi đang chạy Wingate-FTP ở cổng 21 và Serv-U FTP-Server v2.5i ở cổng 2121, tôi có thể kết nối đến Serv-U FTP-Server v2.5i qua Wingate-FTP như sau:
C:\>ftp localhost
Connected to dt.
220 WinGate Engine FTP Gateway ready
User (dt:(none)): dt@localhost:2121
331 User name okay, need password.
Password:
230 User logged in, proceed.
ftp>
Okay, bây giờ tôi upload và download file như bình thường được rồi!
5. Hack với FTP
Đôi khi FTP cũng cho biết một số thông tin rất quan trọng! Bạn dễ dàng đoán được hệ điều hành của máy chủ FTP! Hãy xem các ví dụ sau:
C:\>ftp localhost
Connected to dt.
220 dt Microsoft FTP Service (Version 1.0).
User (dt:(none)): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230-Windows 95 FTP Service.
230 Anonymous user logged in as anonymous.
Yeah! Chắc ăn là server này là PWS chạy trên Windows!
Nếu như admin vô hiệu hóa dòng quảng cáo trên thì sao!? Vẫn còn cách khác! Bạn login vào và phát lệnh syst như sau:
ftp> literal syst
215 Windows_NT version 4.10

Hình như hệ điều hành của máy chủ là Win9.x hoặc WinNT thì phải!
(Nếu bạn đang chạy Linux* thì chỉ cần gõ syst).