⑴ 在linux上用ftp上傳(put) 文件,文件名被創建了,但是文件沒有寫入
首先,不建議你上傳整個目錄,首先是上傳速度會慢,如果文件數量過多,還有可能造成文件損壞。建議是先tar打包後直接上傳這個文件,然後再解壓。
如果你非要上傳文件夾,命令如下(前提是已經連接sftp)
put
-r
dir/.
在一個已連接的sftp中執行這個命令,dir/後面必須有.否則會報錯
注意:這個命令是上傳
dir
目錄中的文件和子目錄,並不上傳
dir
目錄本身
⑵ linux中怎麼用ftp做自動備份
#!/bin/bash
#設置日誌文件,前提建好了/backup/log目錄
LogFile=/backup/log/`date +"%Y-%m"`.log
#備份源目錄
SourceDir=/cvs
#備份目標
BakDir=/backup
#保存20天過期自動刪除
RetainDay=20
#備份的內容可以寫進project.lst,如cvs目錄下有a,b,c三個目錄,project.lst填寫多少就備份多少,下面是備份的
#具體腳本,其核心是tar打包,並把重要的內容記錄到日誌文件里
⑶ linux ftp設置
安裝vsftpd ftp
1.下載源代碼-- vsftpd-2.2.0.tar.gz (可以登錄http://vsftpd.beasts.org網站下載最新版本軟體包)
2.編譯源代碼 (可參考幫助文件INSTALL,或者參考README文件)
#tar xvzf vsftpd-2.2.0.tar.gz (解壓縮包)
#cd vsftpd-2.2.0 (進入解包後的vsftpd-2.2.0目錄)
#make (編譯生成二進制數據)
#make install(進行安裝,把make生成的二進制文件拷貝到各目錄。如:vsftpd 拷到 /usr/local/sbin/vsftpd;或者是 /usr/sbin/vsftpd; )
ps:#which vsftpd (查看vsftpd文件安裝到哪個目錄)
3.安裝配置文件
#cp vsftpd.conf /etc/ (vsftpd.conf是配置文件)
#cp RedHat/vsftpd.pam /etc/pam.d/ftp(*.pam文件是客戶認證模塊,對用戶進行身份識別,ftp是vsftp下默認的,不能改為其它文件名)
#mkdir /var/ftp (建立ftp伺服器的home目錄)
#chown root.root /var/ftp (將ftp的擁有者和組均改為root)
#chmod og-w /var/ftp (將組和other的寫許可權去掉)
ps:此時的當前目錄還是解壓縮包後進入的vsftp-2.2.0目錄。
4.編輯配置文件 /etc/vsftpd.conf
#vi /etc/vsftpd.conf
在vsftpd.conf文件中修改或追加 listen=YES (讓伺服器自己監聽),保存退出。
5.啟動伺服器
#/usr/local/sbin/vsftpd & (手動啟動伺服器,並讓其工作在後台)
6.測試伺服器的運行
#netstat -tnl(檢查一下,看機器有沒有開埠是21的伺服器,結果如下)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:32768 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:32785 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5335 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
[root@localhost vsftpd-2.2.0]# ftp localhost
Connected to localhost.localdomain.
220 localhost.localdomain FTP server (Version 5.60) ready.
334 Using authentication type GSSAPI; ADAT must follow
GSSAPI accepted as authentication type
GSSAPI error major: Miscellaneous failure
GSSAPI error minor: No credentials cache found
GSSAPI error: initializing context
GSSAPI authentication failed
334 Using authentication type KERBEROS_V4; ADAT must follow
KERBEROS_V4 accepted as authentication type
Kerberos V4 krb_mk_req failed: You have no tickets cached
Name (localhost:root): anonymous ( 匿名身份登錄)
331 Guest login ok, send ident as password.
Password: (密碼為空)
230 Guest login ok, access restrictions apply. (登錄成功)
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd (顯示當前目錄)
257 "/" is current directory. (當前目錄為ftp伺服器的根目錄,是chroot後的根目錄環境。該目錄實際是/var/ftp)
ftp> ls(內容為空,匿名用戶只能看到自己的文件或公開命名文件,/var/ftp目錄下的root.root所有文件都看不到)
227 Entering Passive Mode (127,0,0,1,128,69)
150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.
ftp> quit (退出,到此一個伺服器就配置成功了)
421 Timeout (900 seconds): closing control connection.
[root@localhost vsftpd-2.2.0]#
7.修改伺服器自動運行腳本
[root@localhost vsftpd-2.2.0]# vi /etc/rc.local (讓電腦開機自動啟動vsftp伺服器)
進入rc.local 腳本文件
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/usr/local/sbin/vsftpd & (該行是我們自己追加的)
⑷ linux下 用tar備份
很可能是許可權問題。
不過,最好不要通過把這個文件先放到網站的目錄,然後下載(我理解你說的是download )的途徑。通過網頁下載的話,你能下載,其他人也都能下載了。
遠程管理網站時,應該用ssh 或者 ftp等,更方便,更安全。
希望對你有幫助。
⑸ linux 異地備份(ftp)
50 15 * * * ftp -i 10.11.68.157
ftp可能有問題,一般寫ftp的絕對目錄
還有你怎麼不把,ftp和.netrc合並,做一個文件/home/oracle/ftpback,如:
#!/bin/sh
/usr/bin/ftp machine 10.11.68.157 -u oracle -p oracle
macdef init
bin
lcd /tmp
cd /tmp
mput file.tar
bye
再
crontab -e
增加內容如下:
50 15 * * * ./home/oracle/ftpbak
⑹ 如何在linux上配置ftp 及創建 ftp用戶
做一個虛擬賬戶就解決了:
步驟如下:
1、建立虛擬用戶口令庫文件
口令庫文件中奇數行設置用戶名,偶數行設置口令
# vi /etc/vsftpd/logins.txt 注意,一下是4行
upload 這個是帳戶名
upload 這個是密碼
download
download
2、生成vsftpd的認證文件
# db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
設置認證文件只對用戶可讀可寫
# chmod 600 /etc/vsftpd/vsftpd_login.db
3、建立虛擬用戶所需的PAM配置文件
# vi /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
注意:以上2行中最後的2個文件名vsftpd_login和第2個步驟中的資料庫名字必須一致!
4、建立虛擬用戶所要訪問的目錄並設置相應許可權
# mkdir /home/ftpsite
# useradd -d /home/ftpsite virtual(用戶名)
# chown virtual:virtual /home/ftpsite
# chmod 700 /home/ftpsite/
5、設置vsftpd.conf配置文件
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
6、設置主配置文件
在vsftpd.conf文件中添加用戶配置文件目錄設置
user_config_dir=/etc/vsftpd_user_conf
# service vsftpd restart
7、建立用戶配置文件目錄
使用mkdir命令建立用戶配置文件目錄
# mkdir /etc/vsftpd_user_conf
為虛擬用戶建立單獨的配置文件,用戶配置文件名稱與用戶名相同
touch /etc/vsftpd_user_conf/upload
touch /etc/vsftpd_user_conf/download
8、每個FTP虛擬用戶都可以獨立設置其許可權
vi /etc/vsftpd_user_conf/upload
anon_world_readable_only=NO 可讀可下載
anon_upload_enable=YES 可上傳
anon_mkdir_write_enable=YES 可創建和刪除文件夾
anon_other_write_enable=YES 可文件改名和刪除文件
local_root=/home/ftpsite/upload 指定upload的宿主目錄
download_enable=NO 禁止下載
(注意:請先到/home/ftpsite下面去創建upload文件夾)
⑺ linux只安裝vsftpd就能使用ftp命令
linux不需要安裝vxftpd也可以使用ftp命令(FTP客戶端)。
在大多發行版都有打包,請到各大發行版的ftp列表中得到,或者在發行版的安裝盤中也能得到。lftp是一個命令行式的ftp客戶端。對中文支持較好。如果您在linux 的text模式下,要安裝zhcon或者cce之類的。
安裝:
1、RPM包管理的系統,請到
http://freshrpms.net
http;//rpmfind.net 上查找lftp的最新包,可以用
#rpm -ivh name.rpm
#rpm -Uvh name.rpm 這是升級之用
2、源碼包安裝舉例:lftp-3.2.0.tar.bz2
#tar zxvf lftp-3.2.0.tar.bz2
#cd lftp-3.2.0
#./configure
#make
#make install
3.調用方法:
lftp ftp://用戶名:密碼@地址
比如:
[beinan@S01~]$lftp ftp://[email protected]
口令:
lftp [email protected]:~>
lftp [email protected]:~>ls
-rw-r--r-- 1 1000 100 44387 May 18 10:04 xvmain.jpg
-rw-r--r-- 1 1000 100 202643 May 18 09:45 xxx.jpeg
-rw-r--r-- 1 1000 100 0 May 20 10:01 鯊魚的故事.txt
二、使用方法:
0.簡單的用法:lcd 切換本地目錄,比如 lcd /opt
get 取回一個文件,put 向ftp伺服器傳文件;
1、獲得幫助:
代碼:
lftp [email protected]:~> help
!<shell-command>(commands)
alias [<name> [<value>]]anon
bookmark [SUBCMD] cache [SUBCMD]
cat [-b] <files>cd <rdir>
chmod [OPTS] mode file... close [-a]
[re]cls [opts] [path/][pattern] debug [<level>|off] [-o <file>]
[options] <dirs> exit [<code>|bg]
get [OPTS] <rfile> [-o <lfile>] glob [OPTS] <cmd> <args>
help [<cmd>]history -w file|-r file|-c|-l [cnt]
jobs [-v] kill all|<job_no>
lcd <ldir>lftp [OPTS] <site>
ls [<args>] mget [OPTS] <files>
mirror [OPTS] [remote [local]]mkdir [-p] <dirs>
mole name [args]more <files>
mput [OPTS] <files> mrm <files>
mv <file1> <file2>[re]nlist [<args>]
open [OPTS] <site>pget [OPTS] <rfile> [-o <lfile>]
put [OPTS] <lfile> [-o <rfile>] pwd [-p]
queue [OPTS] [<cmd>]quote <cmd>
repeat [delay] [command]rm [-r] [-f] <files>
rmdir [-f] <dirs> scache [<session_no>]
set [OPT] [<var> [<val>]] site <site_cmd>
source <file> user <user|URL> [<pass>]
version wait [<jobno>]
zcat <files>zmore <files>
如果針對lftp的每個命令的幫助,應該是:
lftp [email protected]:~> help 命令
比如
代碼:
lftp [email protected]:~> help get
用法: get [OPTS] <rfile> [-o <lfile>]
Retrieve remote file <rfile> and store it to local file <lfile>.
-o <lfile> specifies local file name (default - basename of rfile)
-ccontinue, reget
-Edelete remote files after successful transfer
-ause ascii mode (binary is the default)
-O <base> specifies base directory or URL where files should be placed
簡介:gftp基於gtk的ftp客戶端,大家用的也比較多吧,支持中文目錄。如果您的gftp不能支持中文,請升級版本。
# Written in C and has a text interface and a GTK+ 1.2/2.x interface
# Supports the FTP, FTPS (control connection only), HTTP, HTTPS, SSH and FSP protocols
# FTP and HTTP proxy server support
# Supports FXP file transfers (transferring files between 2 remote servers via FTP)
# Supports UNIX, EPLF, Novell, MacOS, VMS, MVS and NT (DOS) style directory listings
# Bookmarks menu to allow you to quickly connect to remote sites
下載安裝:
在各大發行版中,都有gftp的打包,可以用各發行版自帶的工具來安裝。我只說源碼包安裝:
源碼包安裝,通用於所有發行版,舉例說明:gftp-2.0.18.tar.bz2
代碼:
[root@S01ftp]#ls -lh
總用量 1.4M
-rw-r--r--1 root root 1.4M 2005-05-21 09:18 gftp-2.0.18.tar.bz2
[root@S01ftp]#tar jxvf gftp-2.0.18.tar.bz2
[[email protected]]#./configure
[[email protected]]#make
[[email protected]]#make install
註:因為gftp依賴gtk,如果不能make過去,您應該指定PKG_CONFIG_PATH
[[email protected]]# export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
調用:
代碼:
[[email protected]]#gftp
⑻ Linux的FTP伺服器無法上傳下載指定位置未掛載
ftp的根目錄不存在,所以顯示指定位置未
掛載
anno_upload=yes這個不要開,這個是匿名
FTP伺服器
用的,一般用不到。
⑼ 如何搭建FTP伺服器在linux 中《一》
代碼:
# cd /home/xuchen
# tar xzvf vsftpd-2.0.3.tar.gz //解壓縮程序
# cd vsftpd-2.0.3
三種方式的實現
1、匿名用戶形式實現
# vi builddefs.h \\編輯builddefs.h 文件,文件內容如下:
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
將以上undef的都改為define,支持tcp_wrappers,支持PAM認證方式,支持SSL
# make //直接在vsftpd-2.0.3里用make編譯
# ls -l vsftpd
-rwxr-xr-x 1 root root 86088 Jun 6 12:29 vsftpd //可執行程序已被編譯成功
創建必要的帳號,目錄:
# useradd nobody //可能你的系統已經存在此帳號,那就不用建立
# mkdir /usr/share/empty //可能你的系統已經存在此目錄,那就不用建立
# mkdir /var/ftp //可能你的系統已經存在此目錄,那就不用建立
# useradd -d /var/ftp ftp //可能你的系統已經存在此帳號,那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
請記住,如果你不想讓用戶在本地登陸,那麼你需要把他的登陸SHELL設置成/sbin/nologin,比如以上的nobody和ftp我就設置成/sbin/nologin
安裝vsftp配置文件,可執行程序,man等:
# install -m 755 vsftpd /usr/local/sbin/vsftpd-ano
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-ano.conf
這樣就安裝完成了,那麼我們開始進行簡單的配置
# vi /etc/vsftpd-ano.conf ,將如下三行加入文件
listen=YES
listen_port=21
tcp_wrappers=YES
anon_root=/var/ftp //設置匿名用戶本地目錄,和ftp用戶目錄必須相同
listen=YES的意思是使用standalone啟動vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推薦使用standalone方式)
# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf & //以後台方式啟動vsftpd
注意:每行的值都不要有空格,否則啟動時會出現錯誤,舉個例子,假如我在listen=YES後多了個空格,那我啟動時就出現如下錯誤:
500 OOPS: bad bool value in config file for: listen
測試搭建好的匿名用戶方式
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> quit
221 Goodbye.
#
OK,已經完成了,very nice.
高級配置
細心的朋友可能已經看出來我們只在默認配置文件增加了四行,就實現了FTP連接(也證明了vsftpd的易用性),那麼讓我們傳個文件吧,呀!!傳輸失敗了(見圖1)
為什麼呢?因為 vsftpd 是為了安全需要,/var/ftp目錄不能把所有的許可權打開,所以我們這時要建一個目錄pub,當然也還是需要繼續修改配置文件的。
# mkdir /var/ftp/pub
# chmod -R 777 /var/ftp/pub
為了測試方便,我們先建立一個名為kill-ano的腳本,是為了殺掉FTP程序的
#!/bin/bash
$1}'` a=`/bin/ps -A | grep vsftpd-ano | awk '{print
$a kill -9
那麼現在大家看看我的匿名伺服器配置文件吧
anonymous_enable=YES //允許匿名訪問,這是匿名伺服器必須的
write_enable=YES //全局配置可寫
no_anon_password=YES //匿名用戶login時不詢問口令
anon_umask=077 //匿名用戶上傳的文件許可權是-rw----
anon_upload_enable=YES //允許匿名用戶上傳文件
anon_mkdir_write_enable=YES //允許匿名用戶建立目錄
anon_other_write_enable=YES //允許匿名用戶具有建立目錄,上傳之外的許可權,如重命名,刪除
dirmessage_enable=YES //當使用者轉換目錄,則會顯示該目錄下的.message信息
xferlog_enable=YES //記錄使用者所有上傳下載信息
xferlog_file=/var/log/vsftpd.log //將上傳下載信息記錄到/var/log/vsftpd.log中
xferlog_std_format=YES //日誌使用標准xferlog格式
idle_session_timeout=600 //客戶端超過600S沒有動作就自動被伺服器踢出
data_connection_timeout=120 //數據傳輸時超過120S沒有動作被伺服器踢出
chown_uploads=YES
chown_username=daemon //上傳文件的屬主
ftpd_banner=Welcome to d-1701.com FTP service. //FTP歡迎信息
anon_max_rate=80000 //這是匿名用戶的下載速度為80KBytes/s
check_shell=NO //不檢測SHELL
現在再測試,先kill掉再啟動FTP程序
# ./kill-ano
# /usr/local/sbin/vsftpd-ano /etc/vsftpd-ano.conf &
上傳一個文件測試一下,怎麼樣?OK了吧,下載剛上傳的那個文件,恩?不行,提示
550 Failed to open file.
傳輸已失敗!
傳輸隊列已完成
1 個文件傳輸失敗
沒有關系,你記得咱們設置了anon_umask=077了嗎?所以你下載不了,如果你到伺服器上touch 一個文件(644),測試一下,是可以被下載下來的,好了,匿名伺服器就說到這里了。
2、本地用戶形式實現
# cd /home/xuchen/vsftpd-2.0.3 //進入vsftpd-2.0.3的源代碼目錄
# make clean //清除編譯環境
# vi builddefs.h \\繼續編輯builddefs.h 文件,文件內容如下:
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#define VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
將以上define VSF_BUILD_PAM行的define改為undef,支持tcp_wrappers,不支持PAM認證方式,支持SSL,記住啊,如果支持了PAM認證方式,你本地用戶是不能登陸的。
# make //直接在vsftpd-2.0.3里用make編譯
# ls -l vsftpd
-rwxr-xr-x 1 root root 84712 Jun 6 18:56 vsftpd //可執行程序已被編譯成功
創建必要的帳號,目錄:
# useradd nobody //可能你的系統已經存在此帳號,那就不用建立
# mkdir /usr/share/empty //可能你的系統已經存在此目錄,那就不用建立
# mkdir /var/ftp //可能你的系統已經存在此目錄,那就不用建立
# useradd -d /var/ftp ftp //可能你的系統已經存在此帳號,那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
請記住,如果你不想讓用戶在本地登陸,那麼你需要把他的登陸SHELL設置成/sbin/nologin,比如以上的nobody和ftp我就設置成/sbin/nologin
安裝vsftp配置文件,可執行程序,man等:
# install -m 755 vsftpd /usr/local/sbin/vsftpd-loc
# install -m 644 vsftpd.8 /usr/share/man/man8
# install -m 644 vsftpd.conf.5 /usr/share/man/man5
# install -m 644 vsftpd.conf /etc/vsftpd-loc.conf
這樣就安裝完成了,那麼我們開始進行簡單的配置
# vi /etc/vsftpd-loc.conf ,將如下三行加入文件
listen=YES
listen_port=21
tcp_wrappers=YES //支持tcp_wrappers,限制訪問(/etc/hosts.allow,/etc/hosts.deny)
listen=YES的意思是使用standalone啟動vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推薦使用standalone方式),注意事項請參看匿名用戶的配置。
anonymous_enable=NO
local_enable=YES //這兩項配置說不允許匿名用戶登陸,允許本地用戶登陸
# /usr/local/sbin/vsftpd-loc /etc/vsftpd-loc.conf & //以後台方式啟動vsftpd
測試搭建好的匿名用戶方式,先測試root用戶吧 :)
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): root
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/root"
ftp> quit
221 Goodbye.
我們看到root用戶可以登陸到ftp,他的登陸目錄就是自己的主目錄。
再測試一個系統用戶,那我們先建立一個用戶名叫xuchen的
# useradd xuchen
# passwd xuchen
Changing password for user xuchen.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
建立好了,讓我們開始測試吧!!
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): xuchen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/xuchen"
ftp> quit
221 Goodbye.
我們看到xuchen用戶可以登陸到ftp,他的登陸目錄也是自己的主目錄。哈哈,又完成了!
高級配置
細心的朋友可能已經看出來如果我們不支持PAM認證方式,那麼本地用戶就可以登陸,而默認編譯的vsftpd支持PAM認證方式,所以是不支持本地用戶登陸的。恩,從這點說,這也是vsftp安全的一個表現----禁止本地用戶登陸。
我們登陸後進行測試,傳一個文件上去,得,失敗了,那下載個文件下來吧,恩,這是成功的(見圖2),而且我們發現我們可以進入到系統根目錄(見圖3),這樣很危險。
那麼改配置文件吧,為了測試方便,我們先建立一個名為kill-loc的腳本,也是為了殺掉FTP程序的
#!/bin/bash
$1}'` a=`/bin/ps -A | grep vsftpd-loc | awk '{print
$a kill -9
現在提供我的本地用戶驗證伺服器配置文件吧(在匿名里寫過的注釋我就不在這里寫了)
listen=YES
listen_port=21
tcp_wrappers=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022 //本地用戶文件上傳後的許可權是-rw-r-r
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
chroot_local_user=YES //限制用戶在自己的主目錄
#local_root=/ftp //你可以指定所有本地用戶登陸後的目錄,如果不設置此項,用戶都會登陸於自己的主目錄,就跟咱們前面測試的結果是一樣的
local_max_rate=500000 //本地用戶的下載速度為500KBytes/s
idle_session_timeout=600
data_connection_timeout=120
nopriv_user= nobody //設定服務執行者為nobody,vsftpd推薦使用一個許可權很低的用戶,最好是沒有家目錄(/dev/null),沒有登陸shell(/sbin/nologin),系統會更安全
ftpd_banner=Welcome to d-1701.com FTP service.
check_shell=NO
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd.denyuser
以上三條設定不允許登陸的用戶,用戶列表存放在/etc/vsftpd.denyuser中,一行一個帳號如果我把xuchen這個用戶加到vsftpd.denyuser里,那麼登陸時會出現如下錯誤:
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 Welcome to d-1701.com FTP service.
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): xuchen
530 Permission denied.
Login failed.
呵呵,有意思吧,自己測試吧,本地用戶登陸方式就介紹到這里吧!
3、虛擬用戶形式實現(db及mysql形式)
# cd /home/xuchen/vsftpd-2.0.3 //進入vsftpd-2.0.3的源代碼目錄
# make clean //清除編譯環境
# vi builddefs.h \\繼續編輯builddefs.h 文件,文件內容如下:
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#undef VSF_BUILD_PAM
#define VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
將以上define VSF_BUILD_PAM行的undef改為define,支持tcp_wrappers,支持PAM認證方式,支持SSL,和匿名用戶形式是一樣的。
# make //直接在vsftpd-2.0.3里用make編譯
# ls -l vsftpd
-rwxr-xr-x 1 root root 86088 Jun 6 22:26 vsftpd //可執行程序已被編譯成功
創建必要的帳號,目錄:
# useradd nobody //可能你的系統已經存在此帳號,那就不用建立
# mkdir /usr/share/empty //可能你的系統已經存在此目錄,那就不用建立
# mkdir /var/ftp //可能你的系統已經存在此目錄,那就不用建立
# useradd -d /var/ftp ftp //可能你的系統已經存在此帳號,那就不用建立
# chown root:root /var/ftp
# chmod og-w /var/ftp
請記住,如果你不想讓用戶在本地登陸,那麼你需要把他的登陸SHELL設置成/sbin/nologin,比如以上的nobody和ftp我就設置成/sbin/nologin
⑽ 在RedHat Linux上搭建ftp伺服器的步驟
1、下載源碼到伺服器,其下載地址是 ftp://vsftpd.beasts.org/users/cevans/,當前的版本是vsftpd-2.0.6.tar.gz 。強烈建議使用源碼安裝,即可擺脫類似rpm包依賴的困惑,又可以實現在不同unix/linux下自如的工作。2、解壓安裝:tar zxvf vsftpd-2.0.5.tar.gz ; make; make install3、添加ftp的用戶,如果用戶數目不多,簡單些,用系統用戶吧。Useradd –d /home/sery sery ;passwd ******.4、拷貝配置文件,這里有2個。Cp vsftpd.conf /etc/vsftpd.conf ;cp Redhat/vsftpd.pam /etc/pam.d/ftp .不拷貝vsftpd.pam這個文件,將導致ftp用戶不能登陸的問題。這個文件在debian下也是可以的。5、修改配置文件/etc/vsftpd.conf。這個配置文件是vsftpd的關鍵所在,修改下列值,以實現不同的功能:(1)修改的部分:把 local_enable=yes write_enable=yes和local_umask=022前面的注釋取消。(2)增加部分:listen=YES(ftp作為獨立的守護進程)chroot_local_user=yes(用戶被定位在自己的主目錄里,用cd / 並不能切換到根目錄)cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST(只許上傳文件和目錄,但不許刪除。注意:這些必須一行寫完)6、啟動ftp服務。Vsftpd&我安裝完成後,卻無法運行:報錯如下:500 00PS: could not bind listening IPv4 socket埠有沖突。查看下:#netstat -utl |grep 21 是不是被佔用還真有耶。因為是redhat9所以想到了xinetd因為xinetd已經啟動了vsftpd,而vsftpd設置成了stardalone模式,所以,先停止xinetd服務, service xinetd stop ,然後:/usr/local/sbin/vsftpd &OK啟動正常。改埠:在vsftpd.conf最後加:listen_port=2121取消anonymous 登入 anonymous_enable=NO老大原文提到,讓用戶不能切換到別的目錄,需要添加一個文件:vim /etc/vsftpd/chroot_list 加入你所要限制的用戶vsftpd.conf也去掉相應的注釋:chroot_list_file=/etc/vsftpd/chroot_list