導航:首頁 > 程序命令 > 命令RNFR

命令RNFR

發布時間:2022-11-13 05:47:59

Ⅰ 利用ftp登錄linux系統報錯!怎麼解決,求解!

配置ftp服務了嗎?配置完後,還要開啟這個服務。

以下內容為復制的:
/etc/vsftpd/vsftpd.conf 主配置文件
/etc/vsftpd.ftpusers 指定哪些用戶不能訪問FTP伺服器
/etc/vsftpd.user_list 可以根據vsftpd.conf文件中的設置來決定該文件中指定的用戶是否可以訪問ftp伺服器
/etc/rc.d/init.d/vsftpd vsftpd的啟動腳本文件
2.修改/etc/vsftpd/vsftpd.conf文件
#vi /etc/vsftpd/vsftpd.conf
功能:設置FTP伺服器相關選項
文件格式:#說明語句
...........
...........
配置選項
...........
...........
說明:在vsftpd. Conf文件中主要由各種配置選項組成,具體以分為以下類別:
2.1連接選項
2.1.1.監聽地址與控制埠
listen_address=ip address
定義了在主機的哪個IP地址上監聽FTP請求(應用於獨立啟動方式的多IP主機默認值為無)
listen_port=port_value
指定FTP伺服器監聽的埠號(控制埠),默認值為21。此選項在standalone模式下生效
2.1.2.FTP模式與數據埠
port_enable=YES|NO
指定數據連接時模式,默認值為YES(PORT模式,NO為PASV模式)
connect_from_port_20=YES|NO
控制以PORT模式進行數據傳輸時是否使用20埠(ftp-data),(YES使用,NO不使用,默認值為NO)
ftp_data_port=port number
設定ftp數據傳輸埠(ftp-data)值。默認值為20。此參數用於PORT FTP模式。
port_promiscuous=YES|NO
默認值為NO。為YES時,取消PORT安全檢查。該檢查確保外出的數據只能連接到客戶端上。小心打開此選項。
pasv_enable=YES|NO
YES,允許數據傳輸時使用PASV模式。NO,不允許使用PASV模式。默認值為YES。
pasv_min_port=port number
pasv_max_port=port number
設定在PASV模式下,建立數據傳輸所可以使用port范圍的下界和上界,0 表 示任意。默認值為0。把埠范圍設在比較高的一段范圍內,比如50000-60000,將有助於安全性的提高
pasv_promiscuous=YES|NO
此選項激活時,將關閉PASV模式的安全檢查。該檢查確保數據連接和控制連接是來自同一個IP地址。小心打開此選項。此選項唯一合理的用法是存在於由安全隧道方案構成的組織中。默認值為NO
pasv_address= ip address
此選項為一個數字IP地址,作為PASV命令的響應。默認值為none,即地址是從呼入的連接套接字(incoming connectd socket)中獲取。
2.1.3.ASCII模式
ascii_upload_enable=YES|NO
控制是否允許使用ascii模式上傳文件,YES允許,NO不允許,默認為NO
ascii_download_enable=YES|NO
控制是否允許使用ascii模式下載文件,YES允許,NO不允許,默認為NO。
2.2.性能與負載控制
2.2.1.超時選項
idle_session_timeout= numerical value
空閑(發呆)用戶會話的超時時間,若是超出這時間沒有數據的傳送或是指令的輸入,則會強迫斷線。單位為秒,默認值為300。
data_connection_timeout= numerical value
空閑的數據連接的超時時間。默認值為300 秒。
accept_timeout=numerical value
接受建立聯機的超時設定,單位為秒。默認值為60。
connect_timeout=numerical value
響應PORT方式的數據聯機的超時設定,單位為秒。默認值為60。以上兩個選項針對客戶端的,將使客戶端空閑1分鍾後自動中斷連接,並在中斷1分鍾後自動激活連接
2.2.2.負載控制
max_clients=numerical value
此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義了FTP伺服器最大的並發連接數,當超過此連接數時,伺服器拒絕客戶端連接。默認值為0,表示不限最大連接數。
max_per_ip=numerical value
此參數在VSFTPD使用單獨(standalone)模式下有效。此參數定義每個IP地址最大的並發連接數目。超過這個數目將會拒絕連接。此選項的設置將影響到象網際快車這類的多進程下載軟體。默認值為0,表示不限制。
anon_max_rate=value
設定匿名用戶的最大數據傳輸速度value,以Bytes/s為單位。默認無。
local_max_rate=value
設定用戶的最大數據傳輸速度value,以Bytes/s為單位。默認無。此選項對所有的用戶都生效
2.3.用戶選項
2.3.1.匿名用戶
anonymous_enable=YES|NO
控制是否允許匿名用戶登錄,YES允許,NO不允許,默認值為YES。
ftp_username= username
匿名用戶所使用的系統用戶名。默認下,此參數在配置文件中不出現,值為ftp
no_anon_password=YES|NO
控制匿名用戶登入時是否需要密碼,YES不需要,NO需要。默認值為NO。
deny_email_enable=YES|NO
此參數默認值為NO。當值為YES時,拒絕使用banned_email_file參數指定文件中所列出的e-mail地址進行登錄的匿名用戶。即,當匿名用戶使用banned_email_file文件中所列出的e-mail進行登錄時,被拒絕。顯然,這對於阻擊某些Dos攻擊有效。當此參數生效時,需追加banned_email_file參數
banned_email_file=/etc/vsftpd.banned_emails
指定包含被拒絕的e-mail地址的文件,默認文件為/etc/vsftpd.banned_emails。
anon_root=path
設定匿名用戶的根目錄,即匿名用戶登入後,被定位到此目錄下。主配置文件中默認無此項,默認值為/var/ftp/。
anon_world_readable_only=YES|NO
控制是否只允許匿名用戶下載可閱讀文檔。YES,只允許匿名用戶下載可閱讀的文件。NO,允許匿名用戶瀏覽整個伺服器的文件系統。默認值為YES。
anon_upload_enable=YES|NO
控制是否允許匿名用戶上傳文件,YES允許,NO不允許,默認是不設值,即為NO。除了這個參數外,匿名用戶要能上傳文件,還需要兩個條件:一,write_enable參數為YES;二,在文件系統上,FTP匿名用戶對某個目錄有寫許可權。
anon_mkdir_write_enable=YES|NO
控制是否允許匿名用戶創建新目錄,YES允許,NO不允許,默認是不設值,即為NO。當然在文件系統上,FTP匿名用戶必需對新目錄的上層目錄擁有寫許可權。
anon_other_write_enable=YES|NO
控制匿名用戶是否擁有除了上傳和新建目錄之外的其他許可權,如刪除、更名等。YES擁有,NO不擁有,默認值為NO。
chown_uploads=YES|NO
是否修改匿名用戶所上傳文件的所有權。YES,匿名用戶所上傳的文件的所有權將改為另外一個不同的用戶所有,用戶由chown_username參數指定。此選項默認值為NO。
chown_username=whoever
指定擁有匿名用戶上傳文件所有權的用戶。此參數與chown_uploads聯用。不推薦使用root用戶。
2.3.2.本地用戶
local_enable=YES|NO
控制vsftpd所在的系統的用戶是否可以登錄vsftpd。默認值為YES。
local_root=
定義所有本地用戶的根目錄。當本地用戶登入時,將被更換到此目錄下。默認值為無。
user_config_dir=
定義用戶個人配置文件所在的目錄。用戶的個人配置文件為該目錄下的同名文件。個人配置文件的格式與vsftpd.conf格式相同。例如定義user_config_dir=/etc/vsftpd/userconf,並且主機上有用戶xiaowang,lisi,那我們可以在user_config_dir的目錄新增名為xiaowang、lisi的兩個文件。當用戶lisi 登入時,VSFTPD則會讀取user_config_dir下lisi這個文件中的設定值,應用於用戶lisi。默認值為無。
2.3.3.虛擬用戶
guest_enable=YES|NO
若是啟動這項功能,所有的非匿名登入者都視為guest。默認值為關閉
guest_username=
定義VSFTPD的guest用戶在系統中的用戶名。默認值為ftp
2.4.安全措施
2.4.1.用戶登錄控制
pam_service_name=vsftpd
指出VSFTPD進行PAM認證時所使用的PAM配置文件名,默認值是vsftpd,默認PAM配置文件是/etc/pam.d/vsftpd。
/etc/vsftpd.ftpusers
VSFTPD禁止列在此文件中的用戶登錄FTP伺服器。這個機制是在/etc/pam.d/vsftpd中默認設置的。
userlist_enable=YES|NO
此選項被激活後,VSFTPD將讀取userlist_file參數所指定的文件中的用戶列表。當列表中的用戶登錄FTP伺服器時,該用戶在提示輸入密碼之前就被禁止了。即該用戶名輸入後,VSFTPD查到該用戶名在列表,VSFTPD就直接禁止掉該用戶,不會再進行詢問密碼等後續步聚。默認值為NO。
userlist_file=/etc/vsftpd.user_list
指出userlist_enable選項生效後,被讀取的包含用戶列表的文件。默認值是/etc/vsftpd.user_list。
userlist_deny=YES|NO
決定禁止還是只允許由userlist_file指定文件中的用戶登錄FTP伺服器。此選項在userlist_enable 選項啟動後才生效。YES,默認值,禁止文件中的用戶登錄,同時也不向這些用戶發出輸入口令的提示。NO,只允許在文件中的用戶登錄FTP伺服器。
tcp_wrappers=YES|NO
在VSFTPD中使用TCP_Wrappers遠程訪問控制機制,默認值為YES。
2.4.2.目錄訪問控制
chroot_list_enable=YES|NO
鎖定某些用戶在自家目錄中。即當這些用戶登錄後,不可以轉到系統的其他目錄,只能在自家目錄(及其子目錄)下。具體的用戶在chroot_list_file參數所指定的文件中列出。默認值為NO。
chroot_list_file=/etc/vsftpd/chroot_list
指出被鎖定在自家目錄中的用戶的列表文件。文件格式為一行一用戶。通常該文件是/etc/vsftpd/chroot_list。此選項默認不設置。
chroot_local_users=YES|NO
將本地用戶鎖定在自家目錄中。當此項被激活時,chroot_list_enable和chroot_local_users參數的作用將發生變化,chroot_list_file所指定文件中的用戶將不被鎖定在自家目錄。本參數被激活後,可能帶來安全上的沖突,特別是當用戶擁有上傳、shell訪問等許可權時。因此,只有在確實了解的情況下,才可以打開此參數。默認值為NO。
passwd_chroot_enable =YES|NO
當此選項激活時,與chroot_local_user選項配合,chroot()容器的位置可以在每個用戶的基礎上指定。每個用戶的容器來源於/etc/passwd中每個用戶的自家目錄欄位。默認值為NO。
2.4.3.文件操作控制
hide_ids=YES|NO
是否隱藏文件的所有者和組信息。YES,當用戶使用"ls -al"之類的指令時,在目錄列表中所有文件的擁有者和組信息都顯示為ftp。默認值為NO。
ls_recurse_enable=YES|NO
YES,允許使用"ls -R" 指令。這個選項有一個小的安全風險,因為在一個大型FTP站點的根目錄下使用"ls -R"會消耗大量系統資源。默認值為NO。
write_enable=YES|NO
控制是否允許使用任何可以修改文件系統的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默認值為NO,不過自帶的簡單配置文件中打開了該選項。
secure_chroot_dir=
這選項指向一個空目錄,並且ftp用戶對此目錄無寫許可權。當vsftpd不需要訪問文件系統時,這個目錄將被作為一個安全的容器,用戶將被限制在此目錄中。默認目錄為/usr/share/empty。
2.4.4.新增文件許可權設定
anon_umask=
匿名用戶新增文件的umask 數值。默認值為077。
file_open_mode=
上傳檔案的許可權,與chmod 所使用的數值相同。如果希望上傳的文件可以執行,設此值為0777。默認值為0666。
local_umask=
本地用戶新增檔案時的umask 數值。默認值為077。不過,其他大多數的FTP伺服器都是使用022。如果您的用戶希望的話,可以修改為022。在自帶的配置文件中此項就設為了022。
2.5.提示信息
ftpd_banner=login banner string
此參數定義了login banner string(登錄歡迎語字元串)。用戶可以自行修改。預設值為無。當ftpd_banner設置後,將取代系統原來的歡迎詞。
banner_file=/directory/vsftpd_banner_file
此項指定一個文本文件,當使用者登入時,會顯示此該文件的內容,通常為歡迎話語或是說明。默認值為無。與ftpd_banner相比,banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file選項將取代ftpd_banner選項。
dirmessage_enable=YES|NO
控制是否啟用目錄提示信息功能。YES啟用,NO不啟用,默認值為YES。此功能啟用後,當用戶進入某一個目錄時,會檢查該目錄下是否有message_file選項所指定的文檔,若是有,則會出現此文檔的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。
message_file=
此選項,僅在dirmessage_enable選項激活方生效。默認值為.message。

Ⅱ ftp命令中有沒有刪除文件夾,包括該文件夾下的文件一起刪除的命令(VC)

命令 描述
ABOR 中斷數據連接程序
ACCT <account> 系統特權帳號
ALLO <bytes> 為伺服器上的文件存儲器分配位元組
APPE <filename> 添加文件到伺服器同名文件
CDUP <dir path> 改變伺服器上的父目錄
CWD <dir path> 改變伺服器上的工作目錄
DELE <filename> 刪除伺服器上的指定文件
HELP <command> 返回指定命令信息
LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表
MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在伺服器上建立指定目錄
NLST <directory> 列出指定目錄內容
NOOP 無動作,除了來自伺服器上的承認
PASS <password> 系統登錄密碼
PASV 請求伺服器等待數據連接
PORT <address> IP 地址和兩位元組的埠 ID
PWD 顯示當前工作目錄
QUIT 從 FTP 伺服器上退出登錄
REIN 重新初始化登錄狀態連接
REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從伺服器上找回(復制)文件
RMD <directory> 在伺服器上刪除指定目錄
RNFR <old path> 對舊路徑重命名
RNTO <new path> 對新路徑重命名
SITE <params> 由伺服器提供的站點特殊參數
SMNT <pathname> 掛載指定文件結構
STAT <directory> 在當前程序或目錄上返回信息
STOR <filename> 儲存(復制)文件到伺服器上
STOU <filename> 儲存文件到伺服器名稱上
STRU <type> 數據結構(F=文件,R=記錄,P=頁面)
SYST 返回伺服器使用的操作系統
TYPE <data type> 數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統登錄的用戶名
這就是FTP協議的命令集,是有刪除指令的,我們老師以前讓我們自己對照著自己編寫過FTP協議,刪除文件時候不分文件或者文件夾的,只要路徑正確就可以刪除,跟你電腦上點右鍵刪除東西一樣,如果是文件夾,內部所有也都會刪除的。

Ⅲ 怎麼用java實現FTP上傳

sun.net.ftp.FtpClient.,該類庫主要提供了用於建立FTP連接的類。利用這些類的方法,編程人員可以遠程登錄到FTP伺服器,列舉該伺服器上的目錄,設置傳輸協議,以及傳送文件。FtpClient類涵蓋了幾乎所有FTP的功能,FtpClient的實例變數保存了有關建立"代理"的各種信息。下面給出了這些實例變數:
public static boolean useFtpProxy
這個變數用於表明FTP傳輸過程中是否使用了一個代理,因此,它實際上是一個標記,此標記若為TRUE,表明使用了一個代理主機。
public static String ftpProxyHost
此變數只有在變數useFtpProxy為TRUE時才有效,用於保存代理主機名。
public static int ftpProxyPort此變數只有在變數useFtpProxy為TRUE時才有效,用於保存代理主機的埠地址。
FtpClient有三種不同形式的構造函數,如下所示:
1、public FtpClient(String hostname,int port)
此構造函數利用給出的主機名和埠號建立一條FTP連接。
2、public FtpClient(String hostname)
此構造函數利用給出的主機名建立一條FTP連接,使用默認埠號。
3、FtpClient()
此構造函數將創建一FtpClient類,但不建立FTP連接。這時,FTP連接可以用openServer方法建立。
一旦建立了類FtpClient,就可以用這個類的方法來打開與FTP伺服器的連接。類ftpClient提供了如下兩個可用於打開與FTP伺服器之間的連接的方法。
public void openServer(String hostname)
這個方法用於建立一條與指定主機上的FTP伺服器的連接,使用默認埠號。
public void openServer(String host,int port)
這個方法用於建立一條與指定主機、指定埠上的FTP伺服器的連接。
打開連接之後,接下來的工作是注冊到FTP伺服器。這時需要利用下面的方法。
public void login(String username,String password)
此方法利用參數username和password登錄到FTP伺服器。使用過Intemet的用戶應該知道,匿名FTP伺服器的登錄用戶名為anonymous,密碼一般用自己的電子郵件地址。
下面是FtpClient類所提供的一些控制命令。
public void cd(String remoteDirectory):該命令用於把遠程系統上的目錄切換到參數remoteDirectory所指定的目錄。
public void cdUp():該命令用於把遠程系統上的目錄切換到上一級目錄。
public String pwd():該命令可顯示遠程系統上的目錄狀態。
public void binary():該命令可把傳輸格式設置為二進制格式。
public void ascii():該命令可把傳輸協議設置為ASCII碼格式。
public void rename(String string,String string1):該命令可對遠程系統上的目錄或者文件進行重命名操作。
除了上述方法外,類FtpClient還提供了可用於傳遞並檢索目錄清單和文件的若干方法。這些方法返回的是可供讀或寫的輸入、輸出流。下面是其中一些主要的方法。
public TelnetInputStream list()
返回與遠程機器上當前目錄相對應的輸入流。
public TelnetInputStream get(String filename)
獲取遠程機器上的文件filename,藉助TelnetInputStream把該文件傳送到本地。
public TelnetOutputStream put(String filename)
以寫方式打開一輸出流,通過這一輸出流把文件filename傳送到遠程計算機

package myUtil;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import sun.net.TelnetInputStream;
import sun.net.TelnetOutputStream;
import sun.net.ftp.FtpClient;

/**
* ftp上傳,下載

*
* @author why 2009-07-30
*
*/
public class FtpUtil {
private String ip = "";
private String username = "";
private String password = "";
private int port = -1;
private String path = "";
FtpClient ftpClient = null;
OutputStream os = null;
FileInputStream is = null;
public FtpUtil(String serverIP, String username, String password) {
this.ip = serverIP;
this.username = username;
this.password = password;
}
public FtpUtil(String serverIP, int port, String username, String password) {
this.ip = serverIP;
this.username = username;
this.password = password;
this.port = port;
}
/**
* 連接ftp伺服器
*
* @throws IOException
*/
public boolean connectServer() {
ftpClient = new FtpClient();
try {
if (this.port != -1) {
ftpClient.openServer(this.ip, this.port);
} else {
ftpClient.openServer(this.ip);
}
ftpClient.login(this.username, this.password);
if (this.path.length() != 0) {
ftpClient.cd(this.path);// path是ftp服務下主目錄的子目錄
}
ftpClient.binary();// 用2進制上傳、下載
System.out.println("已登錄到\"" + ftpClient.pwd() + "\"目錄");
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
/**
* 斷開與ftp伺服器連接
*
* @throws IOException
*/
public boolean closeServer() {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
if (ftpClient != null) {
ftpClient.closeServer();
}
System.out.println("已從伺服器斷開");
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
/**
* 檢查文件夾在當前目錄下是否存在
*
* @param dir
*@return
*/
private boolean isDirExist(String dir) {
String pwd = "";
try {
pwd = ftpClient.pwd();
ftpClient.cd(dir);
ftpClient.cd(pwd);
} catch (Exception e) {
return false;
}
return true;
}
/**
* 在當前目錄下創建文件夾
*
* @param dir
* @return
* @throws Exception
*/
private boolean createDir(String dir) {
try {
ftpClient.ascii();
StringTokenizer s = new StringTokenizer(dir, "/"); // sign
s.countTokens();
String pathName = ftpClient.pwd();
while (s.hasMoreElements()) {
pathName = pathName + "/" + (String) s.nextElement();
try {
ftpClient.sendServer("MKD " + pathName + "\r\n");
} catch (Exception e) {
e = null;
return false;
}
ftpClient.readServerResponse();
}
ftpClient.binary();
return true;
} catch (IOException e1) {
e1.printStackTrace();
return false;
}
}
/**
* ftp上傳 如果伺服器段已存在名為filename的文件夾,該文件夾中與要上傳的文件夾中同名的文件將被替換
*
* @param filename
* 要上傳的文件(或文件夾)名
* @return
* @throws Exception
*/
public boolean upload(String filename) {
String newname = "";
if (filename.indexOf("/") > -1) {
newname = filename.substring(filename.lastIndexOf("/") + 1);
} else {
newname = filename;
}
return upload(filename, newname);
}
/**
* ftp上傳 如果伺服器段已存在名為newName的文件夾,該文件夾中與要上傳的文件夾中同名的文件將被替換
*
* @param fileName
* 要上傳的文件(或文件夾)名
* @param newName
* 伺服器段要生成的文件(或文件夾)名
* @return
*/
public boolean upload(String fileName, String newName) {
try {
String savefilename = new String(fileName.getBytes("GBK"),
"GBK");
File file_in = new File(savefilename);// 打開本地待長傳的文件
if (!file_in.exists()) {
throw new Exception("此文件或文件夾[" + file_in.getName() + "]有誤或不存在!");
}
if (file_in.isDirectory()) {
upload(file_in.getPath(), newName, ftpClient.pwd());
} else {
uploadFile(file_in.getPath(), newName);
}
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
return true;
} catch (Exception e) {
e.printStackTrace();
System.err.println("Exception e in Ftp upload(): " + e.toString());
return false;
} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 真正用於上傳的方法
*
* @param fileName
* @param newName
* @param path
* @throws Exception
*/
private void upload(String fileName, String newName, String path)
throws Exception {
String savefilename = new String(fileName.getBytes("ISO-8859-1"), "GBK");
File file_in = new File(savefilename);// 打開本地待長傳的文件
if (!file_in.exists()) {
throw new Exception("此文件或文件夾[" + file_in.getName() + "]有誤或不存在!");
}
if (file_in.isDirectory()) {
if (!isDirExist(newName)) {
createDir(newName);
}
ftpClient.cd(newName);
File sourceFile[] = file_in.listFiles();
for (int i = 0; i < sourceFile.length; i++) {
if (!sourceFile[i].exists()) {
continue;
}
if (sourceFile[i].isDirectory()) {
this.upload(sourceFile[i].getPath(), sourceFile[i]
.getName(), path + "/" + newName);
} else {
this.uploadFile(sourceFile[i].getPath(), sourceFile[i]
.getName());
}
}
} else {
uploadFile(file_in.getPath(), newName);
}
ftpClient.cd(path);
}
/**
* upload 上傳文件
*
* @param filename
* 要上傳的文件名
* @param newname
* 上傳後的新文件名
* @return -1 文件不存在 >=0 成功上傳,返迴文件的大小
* @throws Exception
*/
public long uploadFile(String filename, String newname) throws Exception {
long result = 0;
TelnetOutputStream os = null;
FileInputStream is = null;
try {
java.io.File file_in = new java.io.File(filename);
if (!file_in.exists())
return -1;
os = ftpClient.put(newname);
result = file_in.length();
is = new FileInputStream(file_in);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
}
} finally {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
}
return result;
}
/**
* 從ftp下載文件到本地
*
* @param filename
* 伺服器上的文件名
* @param newfilename
* 本地生成的文件名
* @return
* @throws Exception
*/
public long downloadFile(String filename, String newfilename) {
long result = 0;
TelnetInputStream is = null;
FileOutputStream os = null;
try {
is = ftpClient.get(filename);
java.io.File outfile = new java.io.File(newfilename);
os = new FileOutputStream(outfile);
byte[] bytes = new byte[1024];
int c;
while ((c = is.read(bytes)) != -1) {
os.write(bytes, 0, c);
result = result + c;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
}
if (os != null) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 取得相對於當前連接目錄的某個目錄下所有文件列表
*
* @param path
* @return
*/
public List getFileList(String path) {
List list = new ArrayList();
DataInputStream dis;
try {
dis = new DataInputStream(ftpClient.nameList(this.path + path));
String filename = "";
while ((filename = dis.readLine()) != null) {
list.add(filename);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public static void main(String[] args) {
FtpUtil ftp = new FtpUtil("192.168.11.11", "111", "1111");
ftp.connectServer();
boolean result = ftp.upload("C:/Documents and Settings/ipanel/桌面/java/Hibernate_HQL.docx", "amuse/audioTest/music/Hibernate_HQL.docx");
System.out.println(result ? "上傳成功!" : "上傳失敗!");
ftp.closeServer();
/**
* FTP遠程命令列表 USER PORT RETR ALLO DELE SITE XMKD CDUP FEAT PASS PASV STOR
* REST CWD STAT RMD XCUP OPTS ACCT TYPE APPE RNFR XCWD HELP XRMD STOU
* AUTH REIN STRU SMNT RNTO LIST NOOP PWD SIZE PBSZ QUIT MODE SYST ABOR
* NLST MKD XPWD MDTM PROT
* 在伺服器上執行命令,如果用sendServer來執行遠程命令(不能執行本地FTP命令)的話,所有FTP命令都要加上\r\n
* ftpclient.sendServer("XMKD /test/bb\r\n"); //執行伺服器上的FTP命令
* ftpclient.readServerResponse一定要在sendServer後調用
* nameList("/test")獲取指目錄下的文件列表 XMKD建立目錄,當目錄存在的情況下再次創建目錄時報錯 XRMD刪除目錄
* DELE刪除文件
*/
}
}

Ⅳ 請解釋一下FTP連接的命令及響應

FTP命令
命令 描述
ABOR 中斷數據連接程序
ACCT <account> 系統特權帳號
ALLO <bytes> 為伺服器上的文件存儲器分配位元組
APPE <filename> 添加文件到伺服器同名文件
CDUP <dir path> 改變伺服器上的父目錄
CWD <dir path> 改變伺服器上的工作目錄
DELE <filename> 刪除伺服器上的指定文件
HELP <command> 返回指定命令信息
LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表
MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在伺服器上建立指定目錄
NLST <directory> 列出指定目錄內容
NOOP 無動作,除了來自伺服器上的承認
PASS <password> 系統登錄密碼
PASV 請求伺服器等待數據連接
PORT <address> IP 地址和兩位元組的埠 ID
PWD 顯示當前工作目錄
QUIT 從 FTP 伺服器上退出登錄
REIN 重新初始化登錄狀態連接
REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從伺服器上找回(復制)文件
RMD <directory> 在伺服器上刪除指定目錄
RNFR <old path> 對舊路徑重命名
RNTO <new path> 對新路徑重命名
SITE <params> 由伺服器提供的站點特殊參數
SMNT <pathname> 掛載指定文件結構
STAT <directory> 在當前程序或目錄上返回信息
STOR <filename> 儲存(復制)文件到伺服器上
STOU <filename> 儲存文件到伺服器名稱上
STRU <type> 數據結構(F=文件,R=記錄,P=頁面)
SYST 返回伺服器使用的操作系統
TYPE <data type> 數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統登錄的用戶名

FTP響應碼

響應代碼 解釋說明
110 新文件指示器上的重啟標記
120 伺服器准備就緒的時間(分鍾數)
125 打開數據連接,開始傳輸
150 打開連接
200 成功
202 命令沒有執行
211 系統狀態回復
212 目錄狀態回復
213 文件狀態回復
214 幫助信息回復
215 系統類型回復
220 服務就緒
221 退出網路
225 打開數據連接
226 結束數據連接
227 進入被動模式(IP 地址、ID 埠)
230 登錄網際網路
250 文件行為完成
257 路徑名建立
331 要求密碼
332 要求帳號
350 文件行為暫停
421 服務關閉
425 無法打開數據連接
426 結束連接
450 文件不可用
451 遇到本地錯誤
452 磁碟空間不足
500 無效命令
501 錯誤參數
502 命令沒有執行
503 錯誤指令序列
504 無效命令參數
530 未登錄網路
532 存儲文件需要帳號
550 文件不可用
551 不知道的頁類型
552 超過存儲分配
553 文件名不允許

Ⅳ 名詞解釋----文件傳輸協議

文件傳輸協議(FTP)使得主機間可以共享文件。 FTP 使用 TCP 生成一個虛擬連接用於控制信息,然後再生成一個單獨的 TCP 連接用於數據傳輸。控制連接使用類似 TELNET 協議在主機間交換命令和消息。

FTP 的主要功能如下:

提供文件的共享(計算機程序 / 數據);
支持間接使用遠程計算機;
使用戶不因各類主機文件存儲器系統的差異而受影響;
可靠且有效的傳輸數據。
FTP ,盡管可以直接被終端用戶使用,但其應用主要還是通過程序實現。

FTP 控制幀即指 TELNET 交換信息,包含 TELNET 命令和選項。然而,大多數 FTP 控制幀是簡單的 ASCII 文本,可以分為 FTP 命令或 FTP 消息。 FTP 消息是對 FTP 命令的響應,它由帶有解釋文本的應答代碼構成。

協議結構

命令 描述
ABOR 中斷數據連接程序
ACCT <account> 系統特權帳號
ALLO <bytes> 為伺服器上的文件存儲器分配位元組
APPE <filename> 添加文件到伺服器同名文件
CDUP <dir path> 改變伺服器上的父目錄
CWD <dir path> 改變伺服器上的工作目錄
DELE <filename> 刪除伺服器上的指定文件
HELP <command> 返回指定命令信息
LIST <name> 如果是文件名列出文件信息,如果是目錄則列出文件列表
MODE <mode> 傳輸模式(S=流模式,B=塊模式,C=壓縮模式)
MKD <directory> 在伺服器上建立指定目錄
NLST <directory> 列出指定目錄內容
NOOP 無動作,除了來自伺服器上的承認
PASS <password> 系統登錄密碼
PASV 請求伺服器等待數據連接
PORT <address> IP 地址和兩位元組的埠 ID
PWD 顯示當前工作目錄
QUIT 從 FTP 伺服器上退出登錄
REIN 重新初始化登錄狀態連接
REST <offset> 由特定偏移量重啟文件傳遞
RETR <filename> 從伺服器上找回(復制)文件
RMD <directory> 在伺服器上刪除指定目錄
RNFR <old path> 對舊路徑重命名
RNTO <new path> 對新路徑重命名
SITE <params> 由伺服器提供的站點特殊參數
SMNT <pathname> 掛載指定文件結構
STAT <directory> 在當前程序或目錄上返回信息
STOR <filename> 儲存(復制)文件到伺服器上
STOU <filename> 儲存文件到伺服器名稱上
STRU <type> 數據結構(F=文件,R=記錄,P=頁面)
SYST 返回伺服器使用的操作系統
TYPE <data type> 數據類型(A=ASCII,E=EBCDIC,I=binary)
USER <username>> 系統登錄的用戶名

標准 FTP 信息如下:

響應代碼 解釋說明
110 新文件指示器上的重啟標記
120 伺服器准備就緒的時間(分鍾數)
125 打開數據連接,開始傳輸
150 打開連接
200 成功
202 命令沒有執行
211 系統狀態回復
212 目錄狀態回復
213 文件狀態回復
214 幫助信息回復
215 系統類型回復
220 服務就緒
221 退出網路
225 打開數據連接
226 結束數據連接
227 進入被動模式(IP 地址、ID 埠)
230 登錄網際網路
250 文件行為完成
257 路徑名建立
331 要求密碼
332 要求帳號
350 文件行為暫停
421 服務關閉
425 無法打開數據連接
426 結束連接
450 文件不可用
451 遇到本地錯誤
452 磁碟空間不足
500 無效命令
501 錯誤參數
502 命令沒有執行
503 錯誤指令序列
504 無效命令參數
530 未登錄網路
532 存儲文件需要帳號
550 文件不可用
551 不知道的頁類型
552 超過存儲分配
553 文件名不允許

Ⅵ 為什麼我下載了KB登錄不上

驅動程序建議你到www.mydrivers.com驅動之家去下載

用LINUX架設FTP伺服器
http://www.chinaunix.net 作者:level 發表於:2004-02-27 13:35:50

以前自己弄的東西,現在帖出來,希望對大家有點用:)

1.1 什麼是FTP:文件傳輸協議原理
1.1.1 命令選擇
1.1.2 命令格式
1.2 wu-Ftpd的安裝
1.3 讓FTP伺服器運轉起來
1.4 配置文件的設置
1.4.1 /etc/ftpaccess的設置
1.4.2 /etc/ftpusers和/etc/ftphosts的設置
1.4.3 /etc/ftpconversions設置
1.4.1 wu-ftp的相關程序
1.5 開設只能FTP的帳戶
1.6 設置虛擬FTP主機

什麼是FTP:文件傳輸協議原理
互聯網文件傳輸協議(File Transfer Protocol ,FTP) 標準是在RFC959說明的。該協議定義了一個從遠程計算機系統和本地計算機系統之間傳輸文件的一個標准。一般來說,傳輸文件的用戶需要先經過認證以後才能登錄網站,然後方能訪問在遠程伺服器的文件。而大多數的FTP伺服器往往提供一個GUEST的公共帳戶來允許沒有遠程伺服器的用戶可以訪問該FTP伺服器。

一個FTP會話通常包括五個軟體元素的交互。

用戶介面 提供了一個用戶介面並使用客戶端協議解釋器的服務
客戶 PI 客戶協議解釋器,其項遠程伺服器協議機發送命令並且驅動客戶數據傳輸過程
伺服器PI 伺服器協議解釋器,響應客戶協議機發出的命令並驅動伺服器端數據傳輸過程
客戶 DTP 客戶數據傳輸過程,其負責完成和伺服器數據傳輸過程及客戶端本地文件系統的通信
服務DTP 伺服器數據傳輸過程,其負責完成和客戶數據傳輸過程及伺服器端文件系統的通信

在RFC 959中,一般使用用戶這個名詞來指代客戶。RFC 959定義了客戶PI和伺服器PI交互的方式和規范。用戶介面與PI和DTP交互的機理都並不是協議標準的一部分。PI和DTP往往通常是在同一個程序模塊中實現的。

在FTP會話中,一共會存在有兩個獨立的網路連接,一個是由兩端的PI使用的,另一個是由兩端的DTP使用的。PI之間的連接一般被稱作控制連接(control connection),DTP之間的連接被稱做數據連接(data connection)

使用TCP服務的控制和數據連接

通常情況下,FTO伺服器監聽埠號21來等待控制連接建立請求。而數據連接埠號的選擇依賴於控制連接上命令。通常是客戶發送一個控制消息來指定客戶監聽並等待伺服器端發送數據連接建立請求的埠號。

對數據傳輸和控制命令傳輸來使用不同的獨立連接有如下優點:兩個連接可以選擇不同的合適服務質量,如:對控制連接來說高需要更小的延遲時間,對數據連接來說需要更大的數據吞吐量;而且可以避免實現數據流中的命令的通明性及逃逸。

當傳輸建立時,總是由客戶端首先發起。然而客戶和伺服器都可能是數據發送者。除了傳輸用戶請求下載文件,數據傳輸過程同樣在客戶端請求列伺服器端目錄結構時建立。

1.1.1 命令選擇
當一個傳輸建立時,一般通常需要指定四個方面的屬性:

文件類型
該屬性指定如何將文件的數據匹配成適於傳輸的格式,一共有四種可能的選擇:

ASCII文件類型
在發送端,文件從本地文本文件格式轉換為 NVT ASCII格式,每行結束有一個CR/LF對來標識。 在接收端,再被轉換為本地的文本格式。

這說明了為什麼Unix主機之間傳輸文本文件為何傳輸的數據量要大於文件的實際大小。若傳輸一段端或傳輸兩端都不使用ASCII文本編碼,則是應該由數據傳輸過程來實現本地編碼和NVT ASCII 編碼之間的轉換。

EBCDIC文件類型
類似於ASCII,區別僅僅上使用EBCDIC字元編碼

圖象 (或二進制)文件類型
文件以本地傳輸內容傳輸,在遠端以同本地完全相同的內容存儲。

本地文件系統
用在位元組大小不是8位的環境下。沒位元組位數由發送者指定。

在實際應用中,只有ASCII和圖象格式使用的較多。

格式控制
該屬性是和將文本文件最後傳送到列印設備相關的,其中有多種方式來實現將垂直格式信息編碼到文件中,包括指示一個新頁開始的方式。有如下方式可供選擇:

無須列印格式控制,這是預設值
Telnet列印控制,在telnet協議中定義的控制字元包含在數據流中。.
Fortran列印控制,
該屬性在實際中很少使用。

結構
文件可以擁有內部結構,在傳輸中該結構被保留。由數據傳輸過程來負責在傳輸中的結構及本地結構之間相互匹配,有三種可能性:

文件結構
這實際上意味著文件被看作沒有內部結構的連續的位元組流。

記錄結構
文件是有一系列記錄組成的結構。這只適用於文本文件。

頁面結構
也可以稱做塊結構。每一頁都伴隨一個頁號來傳輸,從而以順序的方式來完成傳輸。

頁面結構很少在實際中遇到。記錄結構也不是很常見。對於文本文件使用ASCII文件類型可以獲得相同的效果。

傳輸模式
該屬性可以取三個不同的值:

流模式
文件的以位元組流的方式傳輸。

塊模式
文件以一個塊連接一個塊的方式傳輸,每個塊的開頭都有一個頭。

壓縮模式
一個簡單的運程長度壓縮編碼被應用,來壓縮連續的相同的位元組。

實際中,一般只有流模式被使用。而壓縮一般通過使用各種其他的工具程序來獲得。

當一次傳輸被建立,客戶端一般指定一個或多個前面說明的屬性。若伺服器端不能支持某個選項,伺服器將用一個錯誤信息來響應客戶端,並不具有協商機制。

FTP提供了充足的命令來使用戶和遠程建立連接並訪問遠程文件系統。

1.1.2 命令格式
命令以NVT ASCII串的格式被傳輸。每個命令以三個或四個大寫的NVT ASCII字元開始,後面帶有選項參數和一個CR/LF對來標識命令結束

應答由三個NVT ASCII數字及一個選項消息組成。

一個長的應答也許會有多個消息組成,第一個消息的三個數字後帶有一個破折號,最後的消息不帶有破折號。中間的消息無須攜帶三個數字,但是如果帶了三個數字,則也需要破折號。

下面是所有的命令的列表。帶有星號的命令一般很少使用,所以往往在具體實現中不支持。

String Meaning
ABOR 放棄傳輸
*ACCT 某些系統將帳號和用戶與文件系統相關聯
*ALLO 為即將傳送的文件分配空間。後面攜帶的參數來確定位元組數
*APPE 將文件附加到已經存在的文件後面
CDUP 在遠程系統上將當前目錄切換到上級父目錄
CWD 改變遠程系統的工作目錄
DELE 刪除遠程系統的文件
HELP 讀取伺服器的幫助信息,如:支持的命令的列表
LIST 在一個新建立的數據連接上發送當前工作目錄下的文件名列表
MKD 創建目錄
MODE 指定傳輸模式,可攜帶的參數是:S、B或 C.
NLST 在一個新建立的數據連接上發送一個當前目錄下的「完全」的目錄列表
NOOP 空操作,防止連接斷掉
PASS 提供一個用戶登錄密碼,必須立即跟隨在USER命令後
*PASV 指定伺服器數據傳輸過程監聽等待客戶端的數據連接連接建立請求
PORT 指定客戶端監聽等待伺服器端建立的連接的埠號
PWD 顯示伺服器端的當前工作目錄名
QUIT 退出登錄並終止連接
*REIN 重新初始化,退出登錄但是並不斷開連接,後面必須隨後發出一個新的USER命令
*REST 從伺服器的一個標識處重新開始傳輸
RETR 從遠程系統取回一個文件
RMD 刪除一個目錄
*RNFR 指定要被命名的文件的老的路徑名,隨後必須是一個RNTO命令
*RNTO 指定要被命名的文件的新的路徑名
*SITE 站點特有的伺服器提供的服務
*SMNT 結構載入,提供一個文件系統結構的遠程系統路徑名
*STAT 狀態信息
STOR 上載一個文件到伺服器上,若文件已經存在則覆蓋
*STOU 上載一個文件到伺服器上,不覆蓋已經存在的文件
STRU 指定文件結構,參數可以是F、R或P.
*SYST 報告遠程系統的操作系統類型
TYPE 指定文件類型,參數可以是A、E、I、L只有TYPE A和TYPE I常用

控制連接命令應答有如下形式:

Type Description
1yz 主動初步應答,在發送另一個命令以前等待另一個應答
2yz 主動最後應答,最後一個命令成功結束
3yz 主動中間應答,必須再發送一個命令
4yz 暫時被動應答,要求的動作當時不能完成,但可以重試
5yz 永久被動應答,要求的動作不能完成,不應該重試

"y"數字編碼進一步的信息

Digit Meaning
0 語法錯誤
1 信息
2 連接狀態
3 認證和記帳
4 保留
5 File s文件系統狀態

下面是一些典型的消息:

Number Meaning
125 數據連接打開,傳輸開始
200 命令OK
331 用戶名OK 需要輸入密碼
425 不能打開數據連接
452 錯誤寫文件
500 語法錯誤-不可識別的命

具體的詳細情況可以參見RFC

wu-Ftpd的官方權威站點地址是:http://www.wu-ftpd.org/。

1.2 wu-Ftpd的安裝
當前,Linux環境下有許多ftp伺服器軟體可供選擇,但是目前最常見的仍然是wu-Ftpd伺服器。這里主要討論該軟體的安裝和配置。

一般來說,在安裝了linux時,預設都會自動安裝wu-ftpd伺服器,但是有時候為了某種需要也需要自己親自重新安裝該伺服器軟體。安裝wu-Ftpd有兩方式,一種是安裝rpm形式的發布包;一種是自己動手去編譯生成Ftp伺服器。

rpm包可以在http://rpmfind.net/linux/RPM/WByName.html處下載得到,以rpm包方式安裝非常簡單,只需要在按下面的簡單的幾個步驟就可以完成,假設下載得到的rpm包存放在/tmp目錄下:

#cd /tmp
#rpm -ivh wu-ftpd-1.6.0-9.i386.rpm

壓縮的源代碼可以在ftp://ftp.wu-ftpd.org/pub/wu-ftpd/出得到。這里我們以最新的1.6.0為例說明如何編譯安裝wu-ftpd。

1、解開源代碼

1) 將壓縮的源代碼拷貝到/usr/src下

#cp wu-ftpd.1.6.0.tar.gz /usr/src

2) 對壓縮文檔進行解壓縮:

#tar xvfz wu-ftpd.1.6.0.tar.gz
#cd wu-ftpd-1.6.0

2、敲入命令 "./build xxx" ,可以在這里指定一個C語言編譯器:"./build CC=yyy xxx" yyy 指用來替代 "cc" 的其他的編譯器。對於linux環境下的gcc編譯器,命令應該為:"./build CC=gcc xxx"

#build CC=gcc lnx

xxx可以取下面的值:
gen : 通用make(當移植到心得系統時需要拷貝它)
aix : IBM AIX
aux : AU/X
bdi : BSD/OS
bsd : BSD
dec : DEC Unix 3.X
4 : DEC Unix 4.X or later
dyn : Dynix
fbs : FreeBSD 1.0 or later
hiu : Hitachi Unix
hpx : HP-UX
lnx : Linux (tested on 1.0.30)
nbs : NetBSD 1.X
nx2 : NeXTstep 1.x
nx3 : NeXTstep 3.x
osf : OSF/1
osx : Mac OS X
ptx : ???
sco : SCO Unix 3.2v4.2/SCO OpenServer 5
sgi : SGI Irix 4.0.5a
sny : Sony NewsOS
sol : SunOS 5.x / Solaris 1.x
s41 : SunOS 4.1.x
ult : Ultrix 4.x
uxw : UnixWare 1.1 or later
clean : Clean up object files and such to rece disk space after building.
install: Install ftpd

Copying Makefiles.

Linking src/config.h

Making support library.
gcc -O3 -fomit-frame-pointer -fno-strength-rece -pipe -c strcasestr.c
gcc -O3 -fomit-frame-pointer -fno-strength-rece -pipe -c authuser.c
gcc -O3 -fomit-frame-pointer -fno-strength-rece -pipe -c snprintf.c
rm -f libsupport.a
ar cq libsupport.a strcasestr.o authuser.o snprintf.o
ranlib libsupport.a
: : :
: : :
: : :

編譯成功以後將生成如下幾個可執行文件:

ftpd FTP伺服器程序
ftpshut 用於關閉FTP守護進程的程序
ftpcount 記數程序,顯示目前ftp登錄的人數
ftpwho 查看當前FTP伺服器的連線情況,類似與系統的who命令,只不過是查看ftp登錄的用戶
ckconfig 檢查FTP的設置是否正確
ftprestart 重新啟動ftp伺服器
privatepw 改變wu_ftpd組訪問文件信息

3、若只是升級到一個新的版本,應該首先備份系統所有的舊的配置文件。否則這些配置文件將被覆蓋。為了適應自己的需求,應當編輯樣本配置文件來滿足自己的要求,具體配置文件的需求參見後面的內容。

4、以超級用戶身份敲入命令"./build install"

#build install

installing binaries.
install -c -o bin -g bin -m 110 bin/ftpd /usr/sbin/in.ftpd
install -c -o bin -g bin -m 111 bin/ftpshut /usr/bin/ftpshut
install -c -o bin -g bin -m 111 bin/ftprestart /usr/bin/ftprestart
install -c -o bin -g bin -m 111 bin/ftpcount /usr/bin/ftpcount
install -c -o bin -g bin -m 111 bin/ftpwho /usr/bin/ftpwho
install -c -o bin -g bin -m 111 bin/privatepw /usr/bin/privatepw
installing manpages.
install -c -o bin -g bin -m 444 doc/ftpcount.1 /usr/man/man1/ftpcount.1
install -c -o bin -g bin -m 444 doc/ftpwho.1 /usr/man/man1/ftpwho.1
install -c -o bin -g bin -m 444 doc/ftpaccess.5 /usr/man/man5/ftpaccess.5
install -c -o bin -g bin -m 444 doc/ftpconversions.5 /usr/man/man5/ftpconversio5
install -c -o bin -g bin -m 444 doc/ftphosts.5 /usr/man/man5/ftphosts.5
install -c -o bin -g bin -m 444 doc/xferlog.5 /usr/man/man5/xferlog.5
install -c -o bin -g bin -m 444 doc/ftpd.8 /usr/man/man8/ftpd.8

5、編輯 "/etc/inetd.conf" 文件,指向新的ftpd守護進程,大多數情況下,這一步是不必的,因為在build install時,會將新的守護進程拷貝覆蓋老的守護進程。若希望使用ftpd的增強的擴展功能,應該在這行最後加上"-a"選項。

ftpd守護進程一般可以攜帶如下參數,也可以不帶任何參數:

-d debug參數,當ftpd守護進程出現錯誤時,會將錯誤信息寫入到系統記錄文件/usr/adm/syslog中
-l 記錄每次ftp會話信息到/usr/adm/messages中
-t 設置當FTP客戶端多久無操作就自動斷線,這個參數後面指定等待的時間,如 -t 600 表示若客戶
端若連續10分鍾沒有動作就自動斷線,預設值是15分鍾
-a 使用ftpaccess配置文件內容對ftpd進行更詳細復雜的設置
-A 不使用ftpaccess配置文件的設置,預設值是-A
-i 當客戶端有上載文件的動作時,就記錄在文件xferlog中
-L 使用戶連接ftp伺服器期間使用的所有命令都被記錄到/usr/adm/messages中

6、拷貝tar、gzip、gunzip、compress、uncompress等文件到 "~ftp/bin"中,拷貝"ls"為"~ftp/bin/ls"。

7、若是第一次安裝,使用"ckconfig"程序查找ftpd的各種配置文件存放目錄:ftpconversions、ftpusers、 和ftpgroups。在"doc/examples"目錄下有樣本文件。"ckconfig"是一個可執行程序,確保修復該程序檢測到的任何問題。

1.3 讓FTP伺服器運轉起來
一般來說,只要正確地編譯安裝了wu-ftpd,該伺服器就可以正常運行。用戶可以通過FTP命令從各種系統上連接該伺服器。

1.4 配置文件的設置

1.4.1 /etc/ftpaccess的設置
這個配置文件是FTP伺服器最重要的配置文件,這個文件的設置決定了FTP是否可以正常工作及許多訪問許可權的設置。如下面的例子所示:
class all real,guest,anonymous *

limit all 10 Any /etc/msgs/msg.dead

readme README* login
readme README* cwd=*

message /welcome.msg login
message .message cwd=*

compress yes all
tar yes all

log commands real
log transfers anonymous,real inbound,outbound

shutdown /etc/shutmsg

email user@hostname

下面是設置文件各個指示(directive)的詳細說明:

指示: loginfails n
密碼輸入n次就自動斷開連接

指示:autogroup 組名 類別 [ ...]
若一個匿名用戶屬於任何一個參數類別的類,則FTP伺服器將實施setegid()調用使其屬於這個組名定義的組,這樣做是為了實現某些特定類別的匿名用戶可以訪問一些只允許本組及擁有者可以訪問的文件。組名必須是/etc/group內定義的有效組。

指示: class 類名 類別(real、guest、anonumous) IP地址
這個指示是設定FTP伺服器用戶的類別。
FTP伺服器的用戶可以分為以下三種類別:
real 在該FTP伺服器上擁有合法帳戶的用戶;
guest 另外定義某些特定組的用戶;
anonymous 匿名用戶;

舉例說明:
class outworld real,guest,anonymous *
定義一個名為outworld的類,該類包含三種類型的用戶:real,guest,anonymous。該類在後面的指示中使用。其中"*"是類定義中的IP地址部分,表示網路上的所用主機。也就是說明允許任何主機連接FTP伺服器。若希望對訪問FTP的主機進行一定的許可權設置,可以這樣做:
class friend real,guest,anonymous *.linuxaid.com.cn 201.101.13.*
指定義一個friend類,該類從*.linuxaid.com.cn 及201.101.13.*訪問FTP伺服器時有特定的許可權設定。

指示: limit 類別 人數 時間 文件名
該指示設定在某個類在某個時間內允許連接FTP伺服器的人數的限制,並指定當連接人數超過限制,後面的用戶連接時顯示給用戶的消息信息。

舉例說明:
limit local 20 Any /tmp/message/msg.toomany
上面的例子限定local這個類中的擁護同一時間只能有20人同時上網連接這台FTP伺服器,若超過20人則顯示/tmp/message/msg.toomany的文件的內容
limit outworld 100 MoTu|Any 2200-0800 /tmp/message/msg.limit
這個例子限制outworld這個類的用戶只能在周一周二或每天的晚上10點到第二天早上的8點之間訪問該FTP伺服器,而且同時連線的人數不可以超過100人,若超過100人,則顯示/tmp/message/msg.limit的文件的內容

/tmp/message/msg.limit的內容為:
對不起!本伺服器只允許匿名用戶在周一周二全天及其他每天晚上10點到第二天早上的8點之間訪問,當前時間為%T;而且只允許同時有%M個匿名用戶訪問,當前有%N個用戶在訪問該伺服器。請在合適的時間訪問本FTP伺服器,謝謝!
這里的%M是一個變數,代表同時允許連接的人數的上限,FTP伺服器可以用前面設置的值自動替代該變數,其他允許的變數包括:
%T 本地當前時間;
%F CWD所在分區剩餘空間,以KB為單位。但該變數不是所有系統都支持。
%C 當前工作目錄;
%E 定義在/etc/ftpaccess文件中的系統管理員的E-mail地址;
%R 遠端主機名;
%L 本地主機名;
%U 登錄時所給的用戶名;
%N 這個類別當前連接的用戶數目;
利用這些參數,可以編輯一個詳細的說明文件,這樣可以讓用戶清楚當前伺服器資源使用情況。

指示: readme 說明文件 指令
當用戶執行指定的"指令"時,系統就會自動顯示所設置的說明文件;
舉例說明:
readme README* login
當用戶執行登錄動作時,只要以README開頭的文件內容就會顯示給用戶。
readme README* cwd=*
表示用戶切換目錄時(cwd),只要以README開頭的文件內容就會顯示給用戶。
通常README*應該是該目錄下文件的說明,讓登錄的用戶可以清楚地知道目錄中存放了那些文件;

指示: message 文件名 指令
使當用戶執行特定的"指令"時,系統就將指定的文件內容顯示給用戶;
舉例說明:
message /msg.welcome login
指定當用戶登錄時,將自動顯示/tmp/message/msg.welcome的內容給用戶,注意這里的/msg.welcome指ftp根目錄下的msg.welcome文件,即/home/ftp/msg.welcome。
message /welcome cwd=*
指定當用戶切換另一個目錄時,只要目錄中有msg.welcome文件,就顯示給用戶

指示: compress (yes/no) 類別
設置哪個類別的用戶可以使用壓縮功能;
舉例: compress yes local outworld
允許local 和outworld兩個類別的 用戶使用壓縮功能

指示: tar (yes/no) 類別
指定哪個類別的用戶可以使用tar功能;

指示: passwd-check (none/trivial/rfc822) (enforce/warn)
設定當用戶以匿名方式登錄伺服器時密碼的方式:
none 表示不對密碼進行驗證,任何密碼都可以登錄;
trival 表示只要密碼中包含@就可以登錄;
rfc822 表示密碼一定要符合rfc822中規定的E-mail格式才能登錄。如:[email protected]
enforce 表示輸入的密碼不符合指定格式就不允許登錄;
warn 表示輸入的密碼不符合指定格式顯示警告信息,但仍然允許登錄;

指示: log commands 類別(read/guest/anonumous)
設定那些用戶登錄時,所使用的操作會被記錄在文件/usr/adm/xferlog中。

指示: log transfer 類別(read/guest/anonumous) (inbound/outbound)
設定指定的用戶類別在上載還是下載時的相關信息被記錄到/usr/adm/xferlog中。
舉例說明:
log transfer anonymous,real inbound,outbound
當anonymous或real用戶登錄後,上載和下載的操作會被記錄在文件/usr/adm/xferlog中。

指示: shutdown 文件名
FTP伺服器關閉的時間可以後面的文件名中指定的文件中指定,設定的時間一到,便無法登錄FTP伺服器了,只有將這個文件刪除才能恢復FTP伺服器。文件的格式可以由命令ftpshut來建立。

指示: delete (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用delete命令。
舉例說明:
delete no guest,anonymous
設定大概內登錄的用戶為guest或anonymous上不允許執行delete命令。

指示: overwrite (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用overwrite指令。

指示: reame (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用readme指令。

指示: chmod (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用chmod指令。

指示: umask (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用umask指令。

指示: upload [absolute|relative] [class=]... [-]

["dirs"|"nodirs"] []

定義允許用來上載的目錄。若允許上載,所有新上載的文件的所有者及組由和定義 ,訪問許可權將為。對於覆蓋老文件的上載文件將保持原來的所有者及訪問許可權信息。文件上載的許可權信息由最大匹配目錄項定義,如:
upload /var/ftp * no
upload /var/ftp /incoming yes ftp daemon 0666
upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs
would only allow uploads into /incoming and /incom-
:
將只允許/incoming和/incom-ing/gifs目錄上載。上載到/incoming目錄下的文件將屬於ftp/daemon,訪問許可權為0666;而上載到/incoming/gifs下的文件將屬於jlc/guest,訪問許可權為0600。應該注意的是 必須匹配"ftp"用戶的passwd文件中的主目錄。
"dirs"和"nodirs"選項用來設定是否允許在該目錄下創建新的子目錄。但是預設是允許創建子目錄的。
設定新創建的目錄的訪問許可權,預設為0777。
上載指示只能施用於用戶主目錄(chroot()的參數)等同於的用戶,可以為*來表示匹配任何主目錄。
和也可能指定為*,在這種情況下,任何上載的文件或創建的目錄的所有者都等於起父目錄的所有者。
選項[absolute|relative]指定是是絕對路徑還是相對於chroot()參數指定的目錄的相對路徑。預設是絕對路徑。也可以指定任意多個class='來進行進一步限定。若指定了任何目錄,則該上載指示隻影響這些組的用戶。

指示: alias 目錄別名 目錄路徑
給指定目錄設置一個別名,當切換目錄時可以使用別名。
舉例說明:
alias xwin /pub/linux/xwindows
為/pub/linux/xwindows設置別名xwin,登錄以後只要輸入命令cd xwin就可以進入該目錄。

指示: cdpath 目錄
該功能和系統的PATH環境變數設置類似,當cd /etc時,FTP首先查看當前目錄下是否有etc子目錄,無則看是否有別名,若沒有則根據該指示設定的路徑查詢。

舉例說明:
cdpath /pub/linux
cdpath /pub
cdpath /
搜索順序為:/pub/linux /pub /

指示: path-filter 類別(real/anonymous/guest) 目錄
設定上載文件名限制。
舉例說明:
path-filter anonymous /etc/pathmsg^[-A-Za-z0-9_\.]*$^\.^-
path-filter guest /etc/pathmsg^[-A-Za-z0-9_\.]*$^\.^-
設置限制anonymous和guest用戶上載的文件名只能包含A-Z、a-z、0-9和._-,名字以"."和"-"開頭的文件不能上載到伺服器上。

指示: guestgroup [ ...]
guestuser [ ...]
realgroup [ ...]
realuser [ ...]
對於guestgroup指示,若一個真實(real)用戶屬於任何一個所指定的組,則其FTP會話都被FTP伺服器以匿名的方式進行處理。也就是說,chroot()被調用,用戶不再允許發出USER和 PASS 命令。必須是有效的組。
這里用戶的home目錄必須被爭取的設置,要確實和匿名用戶一致,/etc/passwd中的相關項的home目錄被分割為兩個部分,第一部分是chroot()調用的根目錄參數,第二個是用戶相對於根目錄的主目錄,兩部分之間以"/./分隔",如:
guest1::100:92:Guest Account:/ftp/./incoming:/etc/ftponly
當guest1成功登錄進入,FTP伺服器將調用chroot("/ftp")然後調用chdir("/incoming")。則guest1就如同匿名用戶

Ⅶ 誰能給我一些Liunx的驅動

驅動程序建議你到www.mydrivers.com驅動之家去下載

用LINUX架設FTP伺服器
http://www.chinaunix.net 作者:level 發表於:2004-02-27 13:35:50

以前自己弄的東西,現在帖出來,希望對大家有點用:)

1.1 什麼是FTP:文件傳輸協議原理
1.1.1 命令選擇
1.1.2 命令格式
1.2 wu-Ftpd的安裝
1.3 讓FTP伺服器運轉起來
1.4 配置文件的設置
1.4.1 /etc/ftpaccess的設置
1.4.2 /etc/ftpusers和/etc/ftphosts的設置
1.4.3 /etc/ftpconversions設置
1.4.1 wu-ftp的相關程序
1.5 開設只能FTP的帳戶
1.6 設置虛擬FTP主機

什麼是FTP:文件傳輸協議原理
互聯網文件傳輸協議(File Transfer Protocol ,FTP) 標準是在RFC959說明的。該協議定義了一個從遠程計算機系統和本地計算機系統之間傳輸文件的一個標准。一般來說,傳輸文件的用戶需要先經過認證以後才能登錄網站,然後方能訪問在遠程伺服器的文件。而大多數的FTP伺服器往往提供一個GUEST的公共帳戶來允許沒有遠程伺服器的用戶可以訪問該FTP伺服器。

一個FTP會話通常包括五個軟體元素的交互。

用戶介面 提供了一個用戶介面並使用客戶端協議解釋器的服務
客戶 PI 客戶協議解釋器,其項遠程伺服器協議機發送命令並且驅動客戶數據傳輸過程
伺服器PI 伺服器協議解釋器,響應客戶協議機發出的命令並驅動伺服器端數據傳輸過程
客戶 DTP 客戶數據傳輸過程,其負責完成和伺服器數據傳輸過程及客戶端本地文件系統的通信
服務DTP 伺服器數據傳輸過程,其負責完成和客戶數據傳輸過程及伺服器端文件系統的通信

在RFC 959中,一般使用用戶這個名詞來指代客戶。RFC 959定義了客戶PI和伺服器PI交互的方式和規范。用戶介面與PI和DTP交互的機理都並不是協議標準的一部分。PI和DTP往往通常是在同一個程序模塊中實現的。

在FTP會話中,一共會存在有兩個獨立的網路連接,一個是由兩端的PI使用的,另一個是由兩端的DTP使用的。PI之間的連接一般被稱作控制連接(control connection),DTP之間的連接被稱做數據連接(data connection)

使用TCP服務的控制和數據連接

通常情況下,FTO伺服器監聽埠號21來等待控制連接建立請求。而數據連接埠號的選擇依賴於控制連接上命令。通常是客戶發送一個控制消息來指定客戶監聽並等待伺服器端發送數據連接建立請求的埠號。

對數據傳輸和控制命令傳輸來使用不同的獨立連接有如下優點:兩個連接可以選擇不同的合適服務質量,如:對控制連接來說高需要更小的延遲時間,對數據連接來說需要更大的數據吞吐量;而且可以避免實現數據流中的命令的通明性及逃逸。

當傳輸建立時,總是由客戶端首先發起。然而客戶和伺服器都可能是數據發送者。除了傳輸用戶請求下載文件,數據傳輸過程同樣在客戶端請求列伺服器端目錄結構時建立。

1.1.1 命令選擇
當一個傳輸建立時,一般通常需要指定四個方面的屬性:

文件類型
該屬性指定如何將文件的數據匹配成適於傳輸的格式,一共有四種可能的選擇:

ASCII文件類型
在發送端,文件從本地文本文件格式轉換為 NVT ASCII格式,每行結束有一個CR/LF對來標識。 在接收端,再被轉換為本地的文本格式。

這說明了為什麼Unix主機之間傳輸文本文件為何傳輸的數據量要大於文件的實際大小。若傳輸一段端或傳輸兩端都不使用ASCII文本編碼,則是應該由數據傳輸過程來實現本地編碼和NVT ASCII 編碼之間的轉換。

EBCDIC文件類型
類似於ASCII,區別僅僅上使用EBCDIC字元編碼

圖象 (或二進制)文件類型
文件以本地傳輸內容傳輸,在遠端以同本地完全相同的內容存儲。

本地文件系統
用在位元組大小不是8位的環境下。沒位元組位數由發送者指定。

在實際應用中,只有ASCII和圖象格式使用的較多。

格式控制
該屬性是和將文本文件最後傳送到列印設備相關的,其中有多種方式來實現將垂直格式信息編碼到文件中,包括指示一個新頁開始的方式。有如下方式可供選擇:

無須列印格式控制,這是預設值
Telnet列印控制,在telnet協議中定義的控制字元包含在數據流中。.
Fortran列印控制,
該屬性在實際中很少使用。

結構
文件可以擁有內部結構,在傳輸中該結構被保留。由數據傳輸過程來負責在傳輸中的結構及本地結構之間相互匹配,有三種可能性:

文件結構
這實際上意味著文件被看作沒有內部結構的連續的位元組流。

記錄結構
文件是有一系列記錄組成的結構。這只適用於文本文件。

頁面結構
也可以稱做塊結構。每一頁都伴隨一個頁號來傳輸,從而以順序的方式來完成傳輸。

頁面結構很少在實際中遇到。記錄結構也不是很常見。對於文本文件使用ASCII文件類型可以獲得相同的效果。

傳輸模式
該屬性可以取三個不同的值:

流模式
文件的以位元組流的方式傳輸。

塊模式
文件以一個塊連接一個塊的方式傳輸,每個塊的開頭都有一個頭。

壓縮模式
一個簡單的運程長度壓縮編碼被應用,來壓縮連續的相同的位元組。

實際中,一般只有流模式被使用。而壓縮一般通過使用各種其他的工具程序來獲得。

當一次傳輸被建立,客戶端一般指定一個或多個前面說明的屬性。若伺服器端不能支持某個選項,伺服器將用一個錯誤信息來響應客戶端,並不具有協商機制。

FTP提供了充足的命令來使用戶和遠程建立連接並訪問遠程文件系統。

1.1.2 命令格式
命令以NVT ASCII串的格式被傳輸。每個命令以三個或四個大寫的NVT ASCII字元開始,後面帶有選項參數和一個CR/LF對來標識命令結束

應答由三個NVT ASCII數字及一個選項消息組成。

一個長的應答也許會有多個消息組成,第一個消息的三個數字後帶有一個破折號,最後的消息不帶有破折號。中間的消息無須攜帶三個數字,但是如果帶了三個數字,則也需要破折號。

下面是所有的命令的列表。帶有星號的命令一般很少使用,所以往往在具體實現中不支持。

String Meaning
ABOR 放棄傳輸
*ACCT 某些系統將帳號和用戶與文件系統相關聯
*ALLO 為即將傳送的文件分配空間。後面攜帶的參數來確定位元組數
*APPE 將文件附加到已經存在的文件後面
CDUP 在遠程系統上將當前目錄切換到上級父目錄
CWD 改變遠程系統的工作目錄
DELE 刪除遠程系統的文件
HELP 讀取伺服器的幫助信息,如:支持的命令的列表
LIST 在一個新建立的數據連接上發送當前工作目錄下的文件名列表
MKD 創建目錄
MODE 指定傳輸模式,可攜帶的參數是:S、B或 C.
NLST 在一個新建立的數據連接上發送一個當前目錄下的「完全」的目錄列表
NOOP 空操作,防止連接斷掉
PASS 提供一個用戶登錄密碼,必須立即跟隨在USER命令後
*PASV 指定伺服器數據傳輸過程監聽等待客戶端的數據連接連接建立請求
PORT 指定客戶端監聽等待伺服器端建立的連接的埠號
PWD 顯示伺服器端的當前工作目錄名
QUIT 退出登錄並終止連接
*REIN 重新初始化,退出登錄但是並不斷開連接,後面必須隨後發出一個新的USER命令
*REST 從伺服器的一個標識處重新開始傳輸
RETR 從遠程系統取回一個文件
RMD 刪除一個目錄
*RNFR 指定要被命名的文件的老的路徑名,隨後必須是一個RNTO命令
*RNTO 指定要被命名的文件的新的路徑名
*SITE 站點特有的伺服器提供的服務
*SMNT 結構載入,提供一個文件系統結構的遠程系統路徑名
*STAT 狀態信息
STOR 上載一個文件到伺服器上,若文件已經存在則覆蓋
*STOU 上載一個文件到伺服器上,不覆蓋已經存在的文件
STRU 指定文件結構,參數可以是F、R或P.
*SYST 報告遠程系統的操作系統類型
TYPE 指定文件類型,參數可以是A、E、I、L只有TYPE A和TYPE I常用

控制連接命令應答有如下形式:

Type Description
1yz 主動初步應答,在發送另一個命令以前等待另一個應答
2yz 主動最後應答,最後一個命令成功結束
3yz 主動中間應答,必須再發送一個命令
4yz 暫時被動應答,要求的動作當時不能完成,但可以重試
5yz 永久被動應答,要求的動作不能完成,不應該重試

"y"數字編碼進一步的信息

Digit Meaning
0 語法錯誤
1 信息
2 連接狀態
3 認證和記帳
4 保留
5 File s文件系統狀態

下面是一些典型的消息:

Number Meaning
125 數據連接打開,傳輸開始
200 命令OK
331 用戶名OK 需要輸入密碼
425 不能打開數據連接
452 錯誤寫文件
500 語法錯誤-不可識別的命

具體的詳細情況可以參見RFC

wu-Ftpd的官方權威站點地址是:http://www.wu-ftpd.org/。

1.2 wu-Ftpd的安裝
當前,Linux環境下有許多ftp伺服器軟體可供選擇,但是目前最常見的仍然是wu-Ftpd伺服器。這里主要討論該軟體的安裝和配置。

一般來說,在安裝了linux時,預設都會自動安裝wu-ftpd伺服器,但是有時候為了某種需要也需要自己親自重新安裝該伺服器軟體。安裝wu-Ftpd有兩方式,一種是安裝rpm形式的發布包;一種是自己動手去編譯生成Ftp伺服器。

rpm包可以在http://rpmfind.net/linux/RPM/WByName.html處下載得到,以rpm包方式安裝非常簡單,只需要在按下面的簡單的幾個步驟就可以完成,假設下載得到的rpm包存放在/tmp目錄下:

#cd /tmp
#rpm -ivh wu-ftpd-1.6.0-9.i386.rpm

壓縮的源代碼可以在ftp://ftp.wu-ftpd.org/pub/wu-ftpd/出得到。這里我們以最新的1.6.0為例說明如何編譯安裝wu-ftpd。

1、解開源代碼

1) 將壓縮的源代碼拷貝到/usr/src下

#cp wu-ftpd.1.6.0.tar.gz /usr/src

2) 對壓縮文檔進行解壓縮:

#tar xvfz wu-ftpd.1.6.0.tar.gz
#cd wu-ftpd-1.6.0

2、敲入命令 "./build xxx" ,可以在這里指定一個C語言編譯器:"./build CC=yyy xxx" yyy 指用來替代 "cc" 的其他的編譯器。對於linux環境下的gcc編譯器,命令應該為:"./build CC=gcc xxx"

#build CC=gcc lnx

xxx可以取下面的值:
gen : 通用make(當移植到心得系統時需要拷貝它)
aix : IBM AIX
aux : AU/X
bdi : BSD/OS
bsd : BSD
dec : DEC Unix 3.X
4 : DEC Unix 4.X or later
dyn : Dynix
fbs : FreeBSD 1.0 or later
hiu : Hitachi Unix
hpx : HP-UX
lnx : Linux (tested on 1.0.30)
nbs : NetBSD 1.X
nx2 : NeXTstep 1.x
nx3 : NeXTstep 3.x
osf : OSF/1
osx : Mac OS X
ptx : ???
sco : SCO Unix 3.2v4.2/SCO OpenServer 5
sgi : SGI Irix 4.0.5a
sny : Sony NewsOS
sol : SunOS 5.x / Solaris 1.x
s41 : SunOS 4.1.x
ult : Ultrix 4.x
uxw : UnixWare 1.1 or later
clean : Clean up object files and such to rece disk space after building.
install: Install ftpd

Copying Makefiles.

Linking src/config.h

Making support library.
gcc -O3 -fomit-frame-pointer -fno-strength-rece -pipe -c strcasestr.c
gcc -O3 -fomit-frame-pointer -fno-strength-rece -pipe -c authuser.c
gcc -O3 -fomit-frame-pointer -fno-strength-rece -pipe -c snprintf.c
rm -f libsupport.a
ar cq libsupport.a strcasestr.o authuser.o snprintf.o
ranlib libsupport.a
: : :
: : :
: : :

編譯成功以後將生成如下幾個可執行文件:

ftpd FTP伺服器程序
ftpshut 用於關閉FTP守護進程的程序
ftpcount 記數程序,顯示目前ftp登錄的人數
ftpwho 查看當前FTP伺服器的連線情況,類似與系統的who命令,只不過是查看ftp登錄的用戶
ckconfig 檢查FTP的設置是否正確
ftprestart 重新啟動ftp伺服器
privatepw 改變wu_ftpd組訪問文件信息

3、若只是升級到一個新的版本,應該首先備份系統所有的舊的配置文件。否則這些配置文件將被覆蓋。為了適應自己的需求,應當編輯樣本配置文件來滿足自己的要求,具體配置文件的需求參見後面的內容。

4、以超級用戶身份敲入命令"./build install"

#build install

installing binaries.
install -c -o bin -g bin -m 110 bin/ftpd /usr/sbin/in.ftpd
install -c -o bin -g bin -m 111 bin/ftpshut /usr/bin/ftpshut
install -c -o bin -g bin -m 111 bin/ftprestart /usr/bin/ftprestart
install -c -o bin -g bin -m 111 bin/ftpcount /usr/bin/ftpcount
install -c -o bin -g bin -m 111 bin/ftpwho /usr/bin/ftpwho
install -c -o bin -g bin -m 111 bin/privatepw /usr/bin/privatepw
installing manpages.
install -c -o bin -g bin -m 444 doc/ftpcount.1 /usr/man/man1/ftpcount.1
install -c -o bin -g bin -m 444 doc/ftpwho.1 /usr/man/man1/ftpwho.1
install -c -o bin -g bin -m 444 doc/ftpaccess.5 /usr/man/man5/ftpaccess.5
install -c -o bin -g bin -m 444 doc/ftpconversions.5 /usr/man/man5/ftpconversio5
install -c -o bin -g bin -m 444 doc/ftphosts.5 /usr/man/man5/ftphosts.5
install -c -o bin -g bin -m 444 doc/xferlog.5 /usr/man/man5/xferlog.5
install -c -o bin -g bin -m 444 doc/ftpd.8 /usr/man/man8/ftpd.8

5、編輯 "/etc/inetd.conf" 文件,指向新的ftpd守護進程,大多數情況下,這一步是不必的,因為在build install時,會將新的守護進程拷貝覆蓋老的守護進程。若希望使用ftpd的增強的擴展功能,應該在這行最後加上"-a"選項。

ftpd守護進程一般可以攜帶如下參數,也可以不帶任何參數:

-d debug參數,當ftpd守護進程出現錯誤時,會將錯誤信息寫入到系統記錄文件/usr/adm/syslog中
-l 記錄每次ftp會話信息到/usr/adm/messages中
-t 設置當FTP客戶端多久無操作就自動斷線,這個參數後面指定等待的時間,如 -t 600 表示若客戶
端若連續10分鍾沒有動作就自動斷線,預設值是15分鍾
-a 使用ftpaccess配置文件內容對ftpd進行更詳細復雜的設置
-A 不使用ftpaccess配置文件的設置,預設值是-A
-i 當客戶端有上載文件的動作時,就記錄在文件xferlog中
-L 使用戶連接ftp伺服器期間使用的所有命令都被記錄到/usr/adm/messages中

6、拷貝tar、gzip、gunzip、compress、uncompress等文件到 "~ftp/bin"中,拷貝"ls"為"~ftp/bin/ls"。

7、若是第一次安裝,使用"ckconfig"程序查找ftpd的各種配置文件存放目錄:ftpconversions、ftpusers、 和ftpgroups。在"doc/examples"目錄下有樣本文件。"ckconfig"是一個可執行程序,確保修復該程序檢測到的任何問題。

1.3 讓FTP伺服器運轉起來
一般來說,只要正確地編譯安裝了wu-ftpd,該伺服器就可以正常運行。用戶可以通過FTP命令從各種系統上連接該伺服器。

1.4 配置文件的設置

1.4.1 /etc/ftpaccess的設置
這個配置文件是FTP伺服器最重要的配置文件,這個文件的設置決定了FTP是否可以正常工作及許多訪問許可權的設置。如下面的例子所示:
class all real,guest,anonymous *

limit all 10 Any /etc/msgs/msg.dead

readme README* login
readme README* cwd=*

message /welcome.msg login
message .message cwd=*

compress yes all
tar yes all

log commands real
log transfers anonymous,real inbound,outbound

shutdown /etc/shutmsg

email user@hostname

下面是設置文件各個指示(directive)的詳細說明:

指示: loginfails n
密碼輸入n次就自動斷開連接

指示:autogroup 組名 類別 [ ...]
若一個匿名用戶屬於任何一個參數類別的類,則FTP伺服器將實施setegid()調用使其屬於這個組名定義的組,這樣做是為了實現某些特定類別的匿名用戶可以訪問一些只允許本組及擁有者可以訪問的文件。組名必須是/etc/group內定義的有效組。

指示: class 類名 類別(real、guest、anonumous) IP地址
這個指示是設定FTP伺服器用戶的類別。
FTP伺服器的用戶可以分為以下三種類別:
real 在該FTP伺服器上擁有合法帳戶的用戶;
guest 另外定義某些特定組的用戶;
anonymous 匿名用戶;

舉例說明:
class outworld real,guest,anonymous *
定義一個名為outworld的類,該類包含三種類型的用戶:real,guest,anonymous。該類在後面的指示中使用。其中"*"是類定義中的IP地址部分,表示網路上的所用主機。也就是說明允許任何主機連接FTP伺服器。若希望對訪問FTP的主機進行一定的許可權設置,可以這樣做:
class friend real,guest,anonymous *.linuxaid.com.cn 201.101.13.*
指定義一個friend類,該類從*.linuxaid.com.cn 及201.101.13.*訪問FTP伺服器時有特定的許可權設定。

指示: limit 類別 人數 時間 文件名
該指示設定在某個類在某個時間內允許連接FTP伺服器的人數的限制,並指定當連接人數超過限制,後面的用戶連接時顯示給用戶的消息信息。

舉例說明:
limit local 20 Any /tmp/message/msg.toomany
上面的例子限定local這個類中的擁護同一時間只能有20人同時上網連接這台FTP伺服器,若超過20人則顯示/tmp/message/msg.toomany的文件的內容
limit outworld 100 MoTu|Any 2200-0800 /tmp/message/msg.limit
這個例子限制outworld這個類的用戶只能在周一周二或每天的晚上10點到第二天早上的8點之間訪問該FTP伺服器,而且同時連線的人數不可以超過100人,若超過100人,則顯示/tmp/message/msg.limit的文件的內容

/tmp/message/msg.limit的內容為:
對不起!本伺服器只允許匿名用戶在周一周二全天及其他每天晚上10點到第二天早上的8點之間訪問,當前時間為%T;而且只允許同時有%M個匿名用戶訪問,當前有%N個用戶在訪問該伺服器。請在合適的時間訪問本FTP伺服器,謝謝!
這里的%M是一個變數,代表同時允許連接的人數的上限,FTP伺服器可以用前面設置的值自動替代該變數,其他允許的變數包括:
%T 本地當前時間;
%F CWD所在分區剩餘空間,以KB為單位。但該變數不是所有系統都支持。
%C 當前工作目錄;
%E 定義在/etc/ftpaccess文件中的系統管理員的E-mail地址;
%R 遠端主機名;
%L 本地主機名;
%U 登錄時所給的用戶名;
%N 這個類別當前連接的用戶數目;
利用這些參數,可以編輯一個詳細的說明文件,這樣可以讓用戶清楚當前伺服器資源使用情況。

指示: readme 說明文件 指令
當用戶執行指定的"指令"時,系統就會自動顯示所設置的說明文件;
舉例說明:
readme README* login
當用戶執行登錄動作時,只要以README開頭的文件內容就會顯示給用戶。
readme README* cwd=*
表示用戶切換目錄時(cwd),只要以README開頭的文件內容就會顯示給用戶。
通常README*應該是該目錄下文件的說明,讓登錄的用戶可以清楚地知道目錄中存放了那些文件;

指示: message 文件名 指令
使當用戶執行特定的"指令"時,系統就將指定的文件內容顯示給用戶;
舉例說明:
message /msg.welcome login
指定當用戶登錄時,將自動顯示/tmp/message/msg.welcome的內容給用戶,注意這里的/msg.welcome指ftp根目錄下的msg.welcome文件,即/home/ftp/msg.welcome。
message /welcome cwd=*
指定當用戶切換另一個目錄時,只要目錄中有msg.welcome文件,就顯示給用戶

指示: compress (yes/no) 類別
設置哪個類別的用戶可以使用壓縮功能;
舉例: compress yes local outworld
允許local 和outworld兩個類別的 用戶使用壓縮功能

指示: tar (yes/no) 類別
指定哪個類別的用戶可以使用tar功能;

指示: passwd-check (none/trivial/rfc822) (enforce/warn)
設定當用戶以匿名方式登錄伺服器時密碼的方式:
none 表示不對密碼進行驗證,任何密碼都可以登錄;
trival 表示只要密碼中包含@就可以登錄;
rfc822 表示密碼一定要符合rfc822中規定的E-mail格式才能登錄。如:[email protected]
enforce 表示輸入的密碼不符合指定格式就不允許登錄;
warn 表示輸入的密碼不符合指定格式顯示警告信息,但仍然允許登錄;

指示: log commands 類別(read/guest/anonumous)
設定那些用戶登錄時,所使用的操作會被記錄在文件/usr/adm/xferlog中。

指示: log transfer 類別(read/guest/anonumous) (inbound/outbound)
設定指定的用戶類別在上載還是下載時的相關信息被記錄到/usr/adm/xferlog中。
舉例說明:
log transfer anonymous,real inbound,outbound
當anonymous或real用戶登錄後,上載和下載的操作會被記錄在文件/usr/adm/xferlog中。

指示: shutdown 文件名
FTP伺服器關閉的時間可以後面的文件名中指定的文件中指定,設定的時間一到,便無法登錄FTP伺服器了,只有將這個文件刪除才能恢復FTP伺服器。文件的格式可以由命令ftpshut來建立。

指示: delete (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用delete命令。
舉例說明:
delete no guest,anonymous
設定大概內登錄的用戶為guest或anonymous上不允許執行delete命令。

指示: overwrite (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用overwrite指令。

指示: reame (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用readme指令。

指示: chmod (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用chmod指令。

指示: umask (yes/no) 類別(real/anonymous/guest)
設定是否允許指定用戶使用umask指令。

指示: upload [absolute|relative] [class=]... [-]

["dirs"|"nodirs"] []

定義允許用來上載的目錄。若允許上載,所有新上載的文件的所有者及組由和定義 ,訪問許可權將為。對於覆蓋老文件的上載文件將保持原來的所有者及訪問許可權信息。文件上載的許可權信息由最大匹配目錄項定義,如:
upload /var/ftp * no
upload /var/ftp /incoming yes ftp daemon 0666
upload /var/ftp /incoming/gifs yes jlc guest 0600 nodirs
would only allow uploads into /incoming and /incom-
:
將只允許/incoming和/incom-ing/gifs目錄上載。上載到/incoming目錄下的文件將屬於ftp/daemon,訪問許可權為0666;而上載到/incoming/gifs下的文件將屬於jlc/guest,訪問許可權為0600。應該注意的是 必須匹配"ftp"用戶的passwd文件中的主目錄。
"dirs"和"nodirs"選項用來設定是否允許在該目錄下創建新的子目錄。但是預設是允許創建子目錄的。
設定新創建的目錄的訪問許可權,預設為0777。
上載指示只能施用於用戶主目錄(chroot()的參數)等同於的用戶,可以為*來表示匹配任何主目錄。
和也可能指定為*,在這種情況下,任何上載的文件或創建的目錄的所有者都等於起父目錄的所有者。
選項[absolute|relative]指定是是絕對路徑還是相對於chroot()參數指定的目錄的相對路徑。預設是絕對路徑。也可以指定任意多個class='來進行進一步限定。若指定了任何目錄,則該上載指示隻影響這些組的用戶。

指示: alias 目錄別名 目錄路徑
給指定目錄設置一個別名,當切換目錄時可以使用別名。
舉例說明:
alias xwin /pub/linux/xwindows
為/pub/linux/xwindows設置別名xwin,登錄以後只要輸入命令cd xwin就可以進入該目錄。

指示: cdpath 目錄
該功能和系統的PATH環境變數設置類似,當cd /etc時,FTP首先查看當前目錄下是否有etc子目錄,無則看是否有別名,若沒有則根據該指示設定的路徑查詢。

舉例說明:
cdpath /pub/linux
cdpath /pub
cdpath /
搜索順序為:/pub/linux /pub /

指示: path-filter 類別(real/anonymous/guest) 目錄
設定上載文件名限制。
舉例說明:
path-filter anonymous /etc/pathmsg^[-A-Za-z0-9_\.]*$^\.^-
path-filter guest /etc/pathmsg^[-A-Za-z0-9_\.]*$^\.^-
設置限制anonymous和guest用戶上載的文件名只能包含A-Z、a-z、0-9和._-,名字以"."和"-"開頭的文件不能上載到伺服器上。

指示: guestgroup [ ...]
guestuser [ ...]
realgroup [ ...]
realuser [ ...]
對於guestgroup指示,若一個真實(real)用戶屬於任何一個所指定的組,則其FTP會話都被FTP伺服器以匿名的方式進行處理。也就是說,chroot()被調用,用戶不再允許發出USER和 PASS 命令。必須是有效的組。
這里用戶的home目錄必須被爭取的設置,要確實和匿名用戶一致,/etc/passwd中的相關項的home目錄被分割為兩個部分,第一部分是chroot()調用的根目錄參數,第二個是用戶相對於根目錄的主目錄,兩部分之間以"/./分隔",如:
guest1::100:92:Guest Account:/ftp/./incoming:/etc/ftponly
當guest1成功登錄進入,FTP伺服器將調用chroot("/ftp")然後調用chdir("/incoming")。則guest1就如同匿名用戶

Ⅷ 想在學校區域網里利用自己的PC機,搭建一個ftp伺服器,希望有高手可以指點一下

如果是 linux ,可以用vsftp
1、這個例子是RedHat的預設範例,直接啟動vsftp。
[root@relay vsftpd]# /sbin/service vsftpd start
Starting vsftpd for vsftpd: OK ]
2、更換port 提供服務:將預設的port 21 更換為2121
為了安全,或是以port 來區隔不同的ftp 服務,我們可能會將ftp port 改為21 之外的port,那麼,可參考以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下一行
listen_port=2121
Step2. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
3、 特定使用者peter、john 不得變更目錄
使用者的預設目錄為/home/username,若是我們不希望使用者在ftp 時能夠
切換到上一層目錄/home,則可參考以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf
將底下三行
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
改為
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
Step2. 新增一個檔案: /etc/vsftpd/chroot_list
內容增加兩行:
peter
john
Step3. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
若是peter 欲切換到根目錄以外的目錄,則會出現以下警告:
ftp> cd /home
550 Failed to change directory.
4、取消anonymous 登入
若是讀者的主機不希望使用者匿名登入,則可參考以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf

anonymous_enable=YES
改為
anonymous_enable=NO
Step2. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
5、安排歡迎話語
若是我們希望使用者在登入時,能夠看到歡迎話語,可能包括對該主機的說明,或是目錄的介紹,可參考以下步驟。
首先確定在/etc/vsftpd/vsftpd.conf 當中是否有底下這一行
dirmessage_enable=YES
RedHat9 的默認值是有上面這行的。
接著,在各目錄之中,新增名為.message 的檔案,再這邊假設有一個使用者test1,且此使用者的根目錄下有個目錄名為abc,那首先我們在/home/test1
之下新增.message,內容如下:
Hello~ Welcome to the home directory
This is for test only...
接著,在/home/test1/abc 的目錄下新增.message,內容如下:
Welcome to abc's directory
This is subdir...
那麼,當使用者test1 登入時,會看到以下訊息:
230- Hello~ Welcome to the home directory
230-
230- This is for test only...
230-
若是切換到abc 的目錄,則會出現以下訊息:
250- Welcome to abc's directory
250-
250- This is subdir ...
6、對於每一個聯機,以獨立的process 來運作
一般啟動vsftp 時,我們只會看到一個名為vsftpd 的process 在運作,但若是讀者希望每一個聯機,都能以獨立的process 來呈現,則可執行以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下一行
setproctitle_enable=YES
Step2. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
使用ps -ef 的指令,可以看告不同使用者聯機的情形,如下圖所示:
[root@home vsftpd]# ps -ef|grep ftp
root 2090 1 0 16:41 pts/0 00:00:00 vsftpd: LISTENER
nobody 2120 2090 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244:
connected
test1 2122 2120 0 17:18 ? 00:00:00 vsftpd: 192.168.10.244/test1:
IDLE
nobody 2124 2090 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244:
connected
test2 2126 2124 0 17:19 ? 00:00:00 vsftpd: 192.168.10.244/test2:
IDLE
root 2129 1343 0 17:20 pts/0 00:00:00 grep ftp
[root@home vsftpd]#
7、限制傳輸檔案的速度:
本機的使用者最高速度為200KBytes/s,匿名登入者所能使用的最高速度為50KBytes/s
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下兩行
anon_max_rate=50000
local_max_rate=200000
Step2. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
在這邊速度的單位為Bytes/s,其中anon_max_rate 所限制的是匿名登入的
使用者,而local_max_rate 所限制的是本機的使用者。VSFTPD 對於速度的限
制,范圍大概在80%到120%之間,也就是我們限制最高速度為100KBytes/s,
但實際的速度可能在80KBytes/s 到120KBytes/s 之間,當然,若是頻寬不足
時,數值會低於此限制。
8、針對不同的使用者限制不同的速度:
假設test1 所能使用的最高速度為250KBytes/s,test2 所能使用的最高速度為500KBytes/s。
Step1. 修改/etc/vsftpd/vsftpd.conf
新增底下一行
user_config_dir=/etc/vsftpd/userconf
Step2. 新增一個目錄:/etc/vsftpd/userconf
mkdir /etc/vsftpd/userconf
Step3. 在/etc/vsftpd/userconf 之下新增一個名為test1 的檔案
內容增加一行:
local_max_rate=250000
Step4. 在/etc/vsftpd/userconf 之下新增一個名為test2 的檔案
內容增加一行:
local_max_rate=500000
Step5. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
9、建置一個防火牆下的ftp server,使用PORT FTP mode:
預設的ftp port:21 以及ftp data port:20
啟動VSFTPD 之後執行以下兩行指令,只允許port 21 以及port 20 開放,其它關閉。
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
10、建置一個防火牆下的ftp server,使用PORT FTP mode:
ftp port:2121 以及ftp data port:2020
Step1. 執行以下兩行指令,只允許port 2121 以及port 2020 開放,其它關閉。
iptables -A INPUT -p tcp -m multiport --dport 2121,2020 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
Step2. 修改/etc/vsftpd/vsftpd.conf
新增底下兩行
listen_port=2121
ftp_data_port=2020
Step3. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
在這邊要注意,8、9 兩個例子中,ftp client(如cuteftp)的聯機方式不能夠選擇passive mode,否則無法建立數據的聯機。也就是讀者可以連上ftp
server,但是執行ls、get 等等的指令時,便無法運作。
11、建置一個防火牆下的ftp server,使用PASS FTP mode:
ftp port:2121 以及ftp data port 從9981 到9986。
Step1. 執行以下兩行指令,只允許port 2121 以及port 9981-9990 開放,其它關閉。
iptables -A INPUT -p tcp -m multiport --dport
2121,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
Step2. 修改/etc/vsftpd/vsftpd.conf
新增底下四行
listen_port=2121
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9986
Step3. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
在這邊要注意,在10 這個例子中,ftp client(如cuteftp)的聯機方式必須選擇passive mode,否則無法建立數據的聯機。也就是讀者可以連上ftp server,但是執行ls,get 等等的指令時,便無法運作。
12、將vsftpd 與TCP_wrapper 結合
若是讀者希望直接在/etc/hosts.allow 之中定義允許或是拒絕的來源地址,可執行以下步驟。這是簡易的防火牆設定。
Step1. 確定/etc/vsftpd/vsftpd.conf 之中tcp_wrappers 的設定為YES,如下圖所
示:
tcp_wrappers=YES
這是RedHat9 的默認值,基本上不需修改。
Step2. 重新啟動vsftpd
[root@home vsftpd]# /sbin/service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]
Step3. 設定/etc/hosts.allow,譬如提供111.22.33.4 以及10.1.1.1 到10.1.1.254 連
線,則可做下圖之設定:
vsftpd : 111.22.33.4 10.1.1. : allow
ALL : ALL : DENY
13、將vsftpd 並入XINETD
若是讀者希望將vsftpd 並入XINETD 之中,也就是7.x 版的預設設定,那
么讀者可以執行以下步驟。
Step1. 修改/etc/vsftpd/vsftpd.conf

listen=YES
改為
listen=NO
Step2. 新增一個檔案: /etc/xinetd.d/vsftpd
內容如下:
service vsftpd
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
port = 21
log_on_success += PID HOST DURATION
log_on_failure += HOST
}
Step3. 重新啟動xinetd
[root@home vsftpd]# /sbin/service xinetd restart
Stopping xinetd: OK ]
Starting xinetd: OK ]
說明:
在例子中,有些省略的設定可以在這邊找到,譬如聯機的總數、同一個位址的聯機數、顯示檔案擁有者的名稱等等,希望讀者細讀後,可以做出最適合自己的設定。
格式
vsftpd.conf 的內容非常單純,每一行即為一項設定。若是空白行或是開頭為#的一行,將會被忽略。內容的格式只有一種,如下所示
option=value
要注意的是,等號兩邊不能加空白,不然是不正確的設定。
===ascii 設定=====================
ascii_download_enable
管控是否可用ASCII 模式下載。默認值為NO。
ascii_upload_enable
管控是否可用ASCII 模式上傳。默認值為NO。
===個別使用者設定===================
chroot_list_enable
如果啟動這項功能,則所有的本機使用者登入均可進到根目錄之外的數據夾,除了列
在/etc/vsftpd.chroot_list 之中的使用者之外。默認值為NO。
userlist_enable
用法:YES/NO
若是啟動此功能,則會讀取/etc/vsftpd.user_list 當中的使用者名稱。此項功能可以在詢問密碼前就出現失敗訊息,而不需要檢驗密碼的程序。默認值為關閉。
userlist_deny
用法:YES/NO
這個選項只有在userlist_enable 啟動時才會被檢驗。如果將這個選項設為YES,則在/etc/vsftpd.user_list 中的使用者將無法登入 若設為NO , 則只有在
/etc/vsftpd.user_list 中的使用者才能登入。而且此項功能可以在詢問密碼前就出現錯誤訊息,而不需要檢驗密碼的程序。
user_config_dir
定義個別使用者設定文件所在的目錄,例如定義user_config_dir=/etc/vsftpd/userconf,且主機上有使用者 test1,test2,那我們可以在user_config_dir 的目錄新增文件名為test1 以及test2。若是test1 登入,則會讀取user_config_dir 下的test1 這個檔案內的設定。默認值為無。
===歡迎語設定=====================
dirmessage_enable
如果啟動這個選項,使用者第一次進入一個目錄時,會檢查該目錄下是否有.message這個檔案,若是有,則會出現此檔案的內容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。默認值為開啟。
banner_file
當使用者登入時,會顯示此設定所在的檔案內容,通常為歡迎話語或是說明。默認值為無。
ftpd_banner
這邊可定義歡迎話語的字元串,相較於banner_file 是檔案的形式,而ftpd_banner 是字串的格式。預設為無。
===特殊安全設定====================
chroot_local_user
如果設定為YES,那麼所有的本機的使用者都可以切換到根目錄以外的數據夾。預設值為NO。
hide_ids
如果啟動這項功能,所有檔案的擁有者與群組都為ftp,也就是使用者登入使用ls -al之類的指令,所看到的檔案擁有者跟群組均為ftp。默認值為關閉。
ls_recurse_enable
若是啟動此功能,則允許登入者使用ls -R 這個指令。默認值為NO。
write_enable
用法:YES/NO
這個選項可以控制FTP 的指令是否允許更改file system,譬如STOR、DELE、
RNFR、RNTO、MKD、RMD、APPE 以及SITE。預設是關閉。
setproctitle_enable
用法:YES/NO
啟動這項功能,vsftpd 會將所有聯機的狀況已不同的process 呈現出來,換句話說,使用ps -ef 這類的指令就可以看到聯機的狀態。默認值為關閉。
tcp_wrappers
用法:YES/NO
如果啟動,則會將vsftpd 與tcp wrapper 結合,也就是可以在/etc/hosts.allow 與/etc/hosts.deny 中定義可聯機或是拒絕的來源地址。
pam_service_name
這邊定義PAM 所使用的名稱,預設為vsftpd。
secure_chroot_dir
這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的許可權,當vsftpd 不需要file system 的許可權時,就會將使用者限制在此數據夾中。默認值為/usr/share/empty

===紀錄文件設定=====================
xferlog_enable
用法:YES/NO
如果啟動,上傳與下載的信息將被完整紀錄在底下xferlog_file 所定義的檔案中。預設為開啟。
xferlog_file
這個選項可設定紀錄文件所在的位置,默認值為/var/log/vsftpd.log。
xferlog_std_format
如果啟動,則紀錄文件將會寫為xferlog 的標准格式,如同wu-ftpd 一般。默認值為關閉。

===逾時設定======================
accept_timeout
接受建立聯機的逾時設定,單位為秒。默認值為60。
connect_timeout
響應PORT 方式的數據聯機的逾時設定,單位為秒。默認值為60。
data_connection_timeout
建立數據聯機的逾時設定。默認值為300 秒。
idle_session_timeout
發呆的逾時設定,若是超出這時間沒有數據的傳送或是指令的輸入,則會強迫斷線,單位為秒。默認值為300。
===速率限制======================
anon_max_rate
匿名登入所能使用的最大傳輸速度,單位為每秒多少bytes,0 表示不限速度。默認值為0。
local_max_rate
本機使用者所能使用的最大傳輸速度,單位為每秒多少bytes,0 表示不限速度。預設值為0。
===新增檔案許可權設定==================
anon_umask
匿名登入者新增檔案時的umask 數值。默認值為077。
file_open_mode
上傳檔案的許可權,與chmod 所使用的數值相同。默認值為0666。
local_umask
本機登入者新增檔案時的umask 數值。默認值為077。
===port 設定======================
connect_from_port_20
用法:YES/NO
若設為YES,則強迫ftp-data 的數據傳送使用port 20。默認值為YES。
ftp_data_port
設定ftp 數據聯機所使用的port。默認值為20。
listen_port
FTP server 所使用的port。默認值為21。
pasv_max_port
建立資料聯機所可以使用port 范圍的上界,0 表示任意。默認值為0。
pasv_min_port
建立資料聯機所可以使用port 范圍的下界,0 表示任意。默認值為0。
===其它========================
anon_root
使用匿名登入時,所登入的目錄。默認值為無。
local_enable
用法:YES/NO
啟動此功能則允許本機使用者登入。默認值為YES。
local_root
本機使用者登入時,將被更換到定義的目錄下。默認值為無。
text_userdb_names
用法:YES/NO
當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。默認值為NO。
pasv_enable
若是設為NO,則不允許使用PASV 的模式建立數據的聯機。默認值為開啟。
===更換檔案所有權===================
chown_uploads
用法:YES/NO
若是啟動,所有匿名上傳數據的擁有者將被更換為chown_username 當中所設定的使用者。這樣的選項對於安全及管理,是很有用的。默認值為NO。
chown_username
這里可以定義當匿名登入者上傳檔案時,該檔案的擁有者將被置換的使用者名稱。預設值為root。
===guest 設定=====================
guest_enable
用法:YES/NO
若是啟動這項功能,所有的非匿名登入者都視為guest。默認值為關閉。
guest_username
這里將定義guest 的使用者名稱。默認值為ftp。
===anonymous 設定==================
anonymous_enable
用法:YES/NO
管控使否允許匿名登入,YES 為允許匿名登入,NO 為不允許。默認值為YES。
no_anon_password
若是啟動這項功能,則使用匿名登入時,不會詢問密碼。默認值為NO。
anon_mkdir_write_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許新增目錄,當然,匿名使用者必須要有對上層目錄的寫入權。默認值為NO。
anon_other_write_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許更多於上傳與建立目錄之外的許可權,譬如刪除或是更名。默認值為NO。
anon_upload_enable
用法:YES/NO
如果設為YES,匿名登入者會被允許上傳目錄的許可權,當然,匿名使用者必須要有對上層目錄的寫入權。默認值為NO。
anon_world_readable_only
用法:YES/NO
如果設為YES,匿名登入者會被允許下載可閱讀的檔案。默認值為YES。
ftp_username
定義匿名登入的使用者名稱。默認值為ftp。
deny_email_enable
若是啟動這項功能,則必須提供一個檔案/etc/vsftpd.banner_emails,內容為email
address。若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不允許聯機。默認值為NO。
===Standalone 選項==================
listen
用法:YES/NO
若是啟動,則vsftpd 將會以獨立運作的方式執行,若是vsftpd 獨立執行,如RedHat9的默認值,則必須啟動 若是vsftpd 包含在xinetd 之中,則必須關閉此功能,如RedHat8。在RedHat9 的默認值為YES。
listen_address
若是vsftpd 使用standalone 的模式,可使用這個參數定義使用哪個IP address 提供這項服務,若是主機上只有定義一個IP address,則此選項不需使用,若是有多個IP address,可定義在哪個IP address 上提供ftp 服務。若是不設定,則所有的IP address均會提供此服務。默認值為無。
max_clients
若是vsftpd 使用standalone 的模式,可使用這個參數定義最大的總聯機數。超過這個數目將會拒絕聯機,0 表示不限。默認值為0。
max_per_ip
若是vsftpd 使用standalone 的模式,可使用這個參數定義每個ip address 所可以聯機的數目。超過這個數目將會拒絕聯機,0 表示不限。默認值為0。
=============================

3.2.4 FTP 數字代碼的意義
110 重新啟動標記應答。
120 服務在多久時間內ready。
125 數據鏈路埠開啟,准備傳送。
150 文件狀態正常,開啟數據連接埠。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制連接埠關閉,可以注銷。
225 數據連結開啟,但無傳輸動作。
226 關閉數據連接埠,請求的文件操作成功。
227 進入passive mode。
230 使用者登入。
250 請求的文件操作完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,需要密碼。
332 登入時需要賬號信息。
350 請求的操作需要進一部的命令。
421 無法提供服務,關閉控制連結。
425 無法開啟數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操作未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁碟空間不足。
500 格式錯誤,無法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶登入。
550 未執行請求的操作。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確。
=======================

如果是windows ,可以用iis 或者serv-u(此方法適合對用戶許可權控制要求不高的`)

iis設置ftp方法
第一步:安裝IIS組件。
一般系統安裝時都沒有安裝此組件的,所以請到控制面板,在「添加/刪除程序」里打開「添加/刪除Windows組件」一項,在彈出的窗口裡將「intenet信息服務(IIS)」選中;再點右下角「詳細信息」,勾選「文件傳輸協議(FTP)服務」,最後確定即可。

第二步:設定需要共享的目錄路徑。
此目錄就是別人訪問你的FTP伺服器時看到的文件列表。在控制面板的管理工具里,打開「internet信息服務」。在窗口左面找到「FTP站點」並打開下拉列表,之後在「默認FTP站點」上點右鍵選屬性,切換到如下圖所示的「主目錄」選項卡。在「本地路徑」框中的地址為默認FTP共享目錄,請點擊瀏覽指定到你的實際共享目錄;另外在這里還可以設置FTP伺服器的文件訪問許可權,為安全考慮,一般我們只開放讀取許可權,以防匿名用戶隨意修改目錄文件,合法用戶有需要時才針對性的打開「寫入」許可權。

主目錄路徑指定

第三步:完善配置。

在「默認FTP站點」窗口裡切換到「安全帳戶」,去掉「允許匿名連接」前的勾;在消息選項卡中可設定當用戶訪問、退出你的FTP伺服器時出現的提示信息,隨你喜歡寫吧!還有個「最大連接數」的設定,它是指同時連接本地FTP的最多主機台數,如果你的電腦配置不是很好的話,建議不要超過5。

經過以上三步正確的配置後,你的FTP伺服器應該已經在工作了。為保險起見,我們可以在本機先測試一下訪問是否正常,方法很簡單:在瀏覽器的地址欄里輸入(ftp://你在花生殼中申請的免費域名),如果能看到你在IIS「主目錄」中設定的路徑下的目錄和文件,那就成功了。

補充:在安全用戶設置中,IIS與其他專業的FTP伺服器軟體不同,它是基於Windows用戶帳號進行管理,而本身並不支持隨意設定允許訪問帳戶的;要添加或刪除某個允許訪問的帳戶,必須先在控制面板的「管理工具」中的「計算機管理」里去設置,然後再通過IIS「安全賬戶」選項卡中的「FTP站點操作員」選項添加或刪除。

Ⅸ 請教FTP命令

ftp命令大全

FTP命令是Internet用戶使用最頻繁的命令之一,不論是在DOS還是UNIX操作
系統下使用FTP,都會遇到大量的FTP內部命令,熟悉並靈活應用FTP的內部命令,可
以大大方便使用者,對於現在撥號上網的用戶,如果ISP提供了shell可以使用noh
up,那麼ftp將是你最省錢的上download方式,
ftp的命令行格式為:ftp -v -d -i -n -g[主機名]
-v 顯示遠程伺服器的所有響應信息。
-d 使用調試方式。
-n 限制ftp的自動登錄,即不使用.netrc文件。
-g 取消全局文件名。

ftp使用的內部命令如下(其中括弧表示可選項):
1.![cmd[args]在本地機中執行交互shell、exit回到ftp環境,如!ls*.zip 。
2.¥ macro-ame[args]執行宏定義macro-name。
3.account[password]提供登錄遠程系統成功後訪問系統資源所需的補充口令 。
4.appendlocal-file[remote-file]將本地文件追加到遠程系統主機,若未指定遠程系統文件名,則使用本地文件名。
5.ascii 使用ascii類型傳輸方式。
6.bell每個命令執行完畢後計算機響鈴一次。
7.bin使用二進制文件傳輸方式。
8.bye退出ftp會話過程。
9.case在使用mget時,將遠程主機文件名中的大寫轉為小寫字母。
10.cd remote-dir 進入遠程主機目錄。
11.cp進入遠程主機目錄的父目錄。
12.chmod modefile-name將遠程主機文件file-name的存取方式設置為mode,如chmod 777 a.out。
13.close中斷與遠程伺服器的ftp會話(與open對應)。
14.cr使用asscii方式傳輸文件時,將回車換行轉換為回行。
15.delete remote-file刪除遠程主機文件。
16.debug[debug-value]設置調試方式,顯示發送至遠程主機的每條命令,如debup3,若 設為0,表示取消debug。
17.dir[remote-dir][local-file]顯示遠程主機目錄,並將結果存入local-file。
18.disconnection同close。
19.form format將文件傳輸方式設置為format,預設為file方式。
20.getremote-file[local-file]將遠程主機的文件remote-file傳至本地硬碟的local-file。
21.glob設置mdelete、mget、mput的文件名擴展,預設時不擴展文件名,同命令行的-g參數。
22.hash每傳輸1024位元組,顯示一個hash符號(#)。
23.help[cmd]顯示ftp內部命令cmd的幫助信息,如help get。
24.idle[seconds]將遠程伺服器的休眠計時器設為[seconds]秒。
25.image設置二進制傳輸方式(同binary)
26.lcd[dir]將本地工作目錄切換至dir。
27.ls[remote-dir][local-file]顯示遠程目錄remote-dir,並存入本地local-file。
28.macdef macro-name定義一個宏,遇到macdef下的空行時,宏定義結束。
29.mdelete[remote-file]刪除遠程主機文件。
30.mdir remote-files local-file與dir類似,但可指定多個遠程文件,如mdir*.o.*. zipoutfile。
31.mget remote-files傳輸多個遠程文件。
32.mkdir dir-name 在遠程主機中建一目錄。
33.mls remote-file local-file同nlist,但可指定多個文件名。
34.mode[mode-name]將文件傳輸方式設置為mode-name,預設為stream方式。
35.modtime file-name顯示遠程主機文件的最後修改時間。
36.mput local-file將多個文件傳輸至遠程主機。
37.newerfile-name如果遠程機中file-name的修改時間比本地硬碟同名文件的時間更近,則重傳該文件。
38.nlist[remote-dir][local-file]顯示遠程主機目錄的文件清單,並存入本地硬碟的local-file。
39.nmap[inpatternoutpattern]設置文件名映射機制,使得文件傳輸時,文件中的某些字元相互轉換,
如nmap¥1.¥2.¥3[¥1,¥2].[¥2,¥3],則傳輸文件a1 .a2.a3時,文件名變為a1、a2,
該命令特別適用於遠程主機為非U-NIX機的情況。
40.ntrans[inchars[outchars]設置文件名字元的翻譯機制,如ntrans1R,則文件名LL L將變為RRR。
41.open host[port]建立指定ftp伺服器連接,可指定連接埠。
42.passive進入被動傳輸方式。
43.prompt設置多個文件傳輸時的交互提示。
44.proxyftp-cmd在次要控制連接中,執行一條ftp命令,該命令允許連接兩個ftp伺服器,以在兩個伺服器間傳輸文件。
第一條ftp命令必須為open,以首先建立兩個伺服器間的連接。
45.put local-file[remote-file]將本地文件local-file傳送至遠程主機。
46.pwd顯示遠程主機的當前工作目錄。
47.quit同bye,退出ftp會話。
48.quote arg1,arg2……將參數逐字發至遠程ftp伺服器,如quote syst。
49.recv remote-file[local-file]同get。
50.regetremote-file[local-file]類似於get,但若local-file存在,則從上次傳輸中斷處續傳。
51.rhelp[cmd-name]請求獲得遠程主機的幫助。
52.rstatus[file-name]若未指定文件名,則顯示遠程主機的狀態,否則顯示文件狀態。
53.rename[from][to]更改遠程主機文件名。
54.reset清除回答隊列。
55.restart marker從指定的標志marker處,重新開始get或put,如restart 130。
56.rmdir dir-name刪除遠程主機目錄。
57.runique設置文件名唯一性存儲,若文件存在,則在原文件後加後綴。
58.send local-file[remote-file]同put。
59.sendport設置PORT命令的使用。
60.site arg1,arg2……將參數作為SITE命令逐字發送至遠程ftp主機。
61.size file-name顯示遠程主機文件大小,如site idle 7200。
62.status顯示當前ftp狀態。
63.struct[struct-name]將文件傳輸結構設置為struct-name,預設時使用stream結構。
64.sunique將遠程主機文件名存儲設置為唯一(與runique對應)。
65.system顯示遠程主機的操作系統類型。
66.tenex將文件傳輸類型設置為TENEX機所需的類型。
67.tick設置傳輸時的位元組計數器。
68.trace設置包跟蹤。
69.type[type-name]設置文件傳輸類型為type-name,預設為ascii,如typebinary,設置 二進制傳輸方式。
70.umask[newmask]將遠程伺服器的預設umask設置為newmask,如umask 3。
71.useruser-name[password][account]向遠程主機表明自己的身份,需要口令時,必須輸入口令,如user anonymous my@email。
72.verbose同命令行的-v參數,即設置詳盡報告方式,ftp伺服器的所有響應都將顯示給用戶,預設為on.
73.?[cmd]同help。

那麼如何應用這些命令提高效率呢?下面我舉一個例子,如何利用fttp進行
後台下載,假設你的ISP給你提供了shell並且可以用nohup,你想由fttp.downlo
ad.com/pub/internet/下載一個30M的程序aaa.zip具體步驟如下:
1.用notepad做一個文件如aaa1內容如下
open ftp.dwonload.com user an onymous [email protected]
cd /pub/internet/ i get aaa.zip close bye
2.撥號登錄到你的ISP上。
用telnet 或netterm登錄到shell,一般都在你的home子目錄里bbs~/
3.用fttp上傳aaa1到ISP伺服器你的子目錄。
4. 執行nohup fttp -invd aaa2& 這樣這個進程就被放在ISP伺服器的後台進行了,
如果你想知道情況如何,可以more aaa2就可以知道情況如何了。這時你可以斷線了或干點別的,
估計時間到了(time約=30M/(33.6K/9)s)撥號上去,more aaa2如果顯示成功下載aaa.zip,
就表示aaa.zip已經被下載到ISP的伺服器上了,你再由ISP的伺服器拉回來就相當與點對點了,
記得下載完成後del掉你的文件(aaa.zip),免得浪費ISP資源,它會關掉shell的。

Ⅹ ftp rnfr 550 怎麼辦

(1) 訪問命令 USER命令 格式:USER <username> 功能:指定登錄的用戶名,以便伺服器進行身份驗證。 PASS命令 格式:PASS <password> 功能:指定用戶口令,該命令必須跟在登錄用戶名命令之後。 ACCT命令 格式:ACCT <account> 功能:指定用戶賬號。 REIN命令 格式:REIN 功能:表示重新初始化用戶信息。 QUIT命令 格式:QUIT 功能:關閉與伺服器的連接。 2) 模式設置命令 PASV命令 格式:PASV 功能:該命令告訴FTP伺服器,讓FTP伺服器在指定的數據埠進行監聽,進入被動接收請求的狀態。 PORT命令 格式:PORT<address> 功能:該命令告訴FTP伺服器,客戶端監聽的埠號是address,讓FTP伺服器採用主動模式連接客戶端。 TYPE命令 格式:TYPE<data type> 功能:指定要傳輸的數據類型,有ASCII和BINARY。 MODE命令 格式:MODE<mode> 功能:指定傳輸模式,S表示流,B表示塊,C表示壓縮。

(3) 文件管理命令 CWD命令 格式:CWD <directory> 功能:改變工作目錄。 PWD命令 格式:PWD 功能:返回當前工作目錄。 MKD命令 格式:MKD <directory> 功能:在指定路徑下創建新目錄,參數為表示特定目錄的字元串。 CDUP命令 格式:CDUP 功能:回到上層目錄。 RMD命令 格式:RMD<directory> 功能:刪除指定目錄。參數為表示特定目錄的字元串。 LIST命令 格式:LIST<name> 功能:返回指定路徑下的子目錄及文件列表,省略<路徑>時,返回當前路徑下的文件列表。 NLST命令 格式:NLST <directory> 功能:返回指定路徑下的目錄列表,省略<路徑>時,返回當前目錄。 RNFR命令 格式:RNFR <old path> 功能:重新命名文件,該命令的下一條命令應該用RNTO指定新的文件名。 RNTO命令 格式:RNTO<new path> 功能:該命令和RNFR命令共同完成對文件的重命名,緊跟在RNFR命令後。 DELE命令 格式:DELE<filename> 功能:刪除指定路徑下的文件 (4) 文件傳輸命令 RETR命令 格式:RETR<filename> 功能:請求伺服器將指定路徑內的文件復制到客戶端,也即下載指定的文件。 STOR命令 格式:STOR<filename> 功能:上傳一個指定的文件,並將其存儲在指定的位置。 (5) 其他命令 常用的其他命令有SYST命令,該命令沒有參數,它返回伺服器使用的操作系統。

閱讀全文

與命令RNFR相關的資料

熱點內容
python課程心得總結 瀏覽:14
派派中怎麼看對方在哪個伺服器 瀏覽:794
xp配置java環境變數配置 瀏覽:7
python中1到100怎麼算 瀏覽:765
小度我想看程序員 瀏覽:505
bs刷裝備建立後文件夾沒有 瀏覽:79
找漫畫看應該下載什麼app 瀏覽:182
如何在vps上搭建自己的代理伺服器 瀏覽:744
nginxphp埠 瀏覽:403
內臟pdf 瀏覽:152
怎麼看雲伺服器架構 瀏覽:85
我的世界國際服為什麼登不進伺服器 瀏覽:998
微盟程序員老婆 瀏覽:932
intellij創建java 瀏覽:112
java連接odbc 瀏覽:41
啟動修復無法修復電腦命令提示符 瀏覽:361
手機編程是什麼 瀏覽:100
山東移動程序員 瀏覽:165
蘇州java程序員培訓學校 瀏覽:479
單片機液晶驅動 瀏覽:856