1. centos怎麼搭建ftp伺服器
方法/步驟
一:安裝vsftpd
查看是否已經安裝vsftpd
二:基於虛擬用戶的配置
所謂虛擬用戶就是沒有使用真實的帳戶,只是通過映射到真實帳戶和設置許可權的目的。虛擬用戶不能登錄CentOS系統。
修改配置文件
配置文件直接貼出來吧
三:使用Berkeley DB進行認證
yum install db4 db4-utils
然後,創建用戶密碼文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用戶名,偶行是密碼
接著,生成虛擬用戶認證的db文件
編輯認證文件/etc/pam.d/vsftpd,全部注釋掉原來語句,再增加以下兩句:
最後,創建虛擬用戶配置文件
設置FTP根目錄許可權
最新的vsftpd要求對主目錄不能有寫的許可權所以ftp為755,主目錄下面的子目錄再設置777許可權
添加防火牆,把ftp的21埠開放 vi /etc/sysconfig/iptables
經過以上步驟我們就完成了ftp伺服器的搭建,讓我們暢游ftp吧
2. linux下安裝vsftpd常見問題
當我們限定了用戶不能跳出其主目錄(chroot_local_user=YES)之後,使用該用戶登錄FTP時往往會遇到這個錯誤,這個問題由於版本更新造成的,從2.3.5之後,vsftpd增強了安全檢查, 如果用戶被限定在了其主目錄下,則該用戶的主目錄不能再具有寫許可權了! 如果檢查發現還有寫許可權,就會報該錯誤。
要修復這個錯誤,可以用命令chmod a-w /home/user去除用戶主目錄的寫許可權,注意把目錄替換成你自己的。或者你可以在vsftpd的配置文件中增加下列兩項中的一項:
參考: https://www.cnblogs.com/116970u/p/10788285.html
要是還不行,就使用客戶端工具吧,常用的FileZilla個大平台免費使用。
可以通過systemctl status vsftpd -l查看出現了什麼問題,本立當中就是出現了變數錯誤的情況
11月 20 19:01:36 MyCentos vsftpd[40707]: 500 OOPS: unrecognised variable in config file: anno_root
anno_root變數寫錯了,修改即可
3. 怎麼進入到vsftpd的主配置文件
嚴格來說,整個 vsftpd 的配置文件就只有這個檔案!這個檔案的設定是以 bash
的變數設定相同的方式來處理的, 也就是`參數=設定值`來設定的,注意,
等號兩邊不能有空白喔!至於詳細的 vsftpd.conf 可以使用 `man 5 vsftpd.conf` 來詳查。
#### 與伺服器環境較相關的設定值
1. connect_from_port_20=YES (NO)
ftp-data 的埠號
2. listen_port=21
vsftpd 使用的命令通道 port,如果你想要使用非正規的埠號,這個設置。
不過你必須要知道,這個設定值僅適合以 stand alone 的方式來啟動!
(對於 super daemon 無效)
3. dirmessage_enable=YES (NO)
當用戶進入某個目錄時,會顯示該目錄需要注意的內容,顯示的檔案默認
是 `.message` ,你可以使用第四個設置來修改。
4. message_file=.message
當 dirmessage_enable=YES 時,可以修改這個設置來讓 vsftpd 尋找該文件來顯示消息!
5. listen=YES (NO)
若設置為 YES 表示 vsftpd 是以 stand alone 的方式來啟動的!預設是 NO!
所以我們的 CentOS 將它改為 YES!這樣才能使用 stand alone 的方式來喚醒。
6. pasv_enable=YES (NO)
支持數據流的被動式聯機模式(passive mode),一定要設定為 YES!
7. use_localtime=YES (NO)
是否使用本地時間?vsftpd 預設使用 GMT 時間(格林威治),所以預設的 FTP
的日期會比中國晚 8 小時,建議修改設定為 YES !
8. write_enable=YES (NO)
如果你允許用戶上傳數據時,就要啟動這個設定值
9. connect_timeout=60
單位是秒,在數據連接的主動式聯機模式下,我們發出的連接訊號在 60 秒內得
不到客戶端的響應,則不等待並強制斷線。
10. accept_timeout=60
當用戶以被動式 PASV 來進行數據傳輸時,如果伺服器啟用 passive port 並等
待 client 超過 60 秒而無回應, 那麼就給他強制斷線!這個設定值與
connect_timeout 類似,不過一個是管理主動聯機,一個管理被動聯機。
11. data_connection_timeout=300
如果伺服器與客戶端的數據聯機已經成功建立 (不論主動還是被動聯機),但是
可能由於線路問題導致 300 秒內還是無法順利的完成數據的傳送,那客戶端的
聯機就會被我們的 vsftpd 強制剔除!
12. idle_session_timeout=300
如果使用者在 300 秒內都沒有命令動作,強制離線!
13. max_clients=0
如果 vsftpd 是以 stand alone 方式啟動的,那麼這個設定項目可以設定同一
時間,最多有多少 client 可以同時連上 vsftpd !限制使用 FTP 的用量!
14. max_per_ip=0
與上面 max_clients 類似,這里是同一個 IP 同一時間可允許多少聯機
15. pasv_min_port=0, pasv_max_port=0
上面兩個是與 passive mode 使用的 port number 有關,如果你想要使用 65400
到 65410 這 11 個 port 來進行被動式聯機模式的連接,可以這樣設定
pasv_max_port=65410 以及 pasv_min_port=65400。 如果是 0 的話,表示隨機
取用而不限制。
16. ftpd_banner=一些文字說明
當使用者聯機進入到 vsftpd 時,在 FTP 客戶端軟體上頭會顯示的說明文字。
不過,這個設定值數據比較少啦! 建議你可以使用底下的 banner_file 設定值
來取代這個設置
17. banner_file=/path/file
這個設置可以指定某個純文本檔作為使用者登入 vsftpd 伺服器時所顯示的歡
迎消息。同時,也能夠放置一些讓使用者知道本 FTP 伺服器的目錄架構!
4. linux 伺服器怎麼啟動ftp
Liux系統下有好幾款很不錯的ftp服務,各有特點,適應於不同的應用場合。一般在各種Linux的發行版中,默認帶有的ftp軟體是vsftp,本文是針對CentOs7系統下搭建vsftpd服務為例。
1. 首先確定系統中已經安裝了vsftpd軟體,查看命令:
rpm -q vsftpd
rpm -qa |grep vsftpd
2. 安裝vsftpd(以yum安裝為例)
yum install -y vsftpd
3.關閉selinux和iptables(也可配置防火牆相關訪問策略,反之系統阻斷),設置vsftpd開機自啟
永久關閉selinux
vi /etc/sysconfig/selinux
將配置SELinux=enforcing改為SELinux=disabled
保存退出並重啟伺服器
驗證是否關閉命令:getenforce
關閉防火牆
centos 7 操作命令:systemctl stop firewalld.service
centos 6 操作命令:service stop iptables
設置vsftpd開機自啟
centos 7 操作命令:systemctl enable vsftpd.service
centos 6 操作命令:chkconfig vsftpd on
4.vsftpd的配置
ftpusers 該文件用來指定哪些用戶不能訪問ftp伺服器。
user_list 該文件用來指定的默認賬戶在默認情況下也不能訪問ftp伺服器。
vsftpd.conf vsftpd的主要配置文件,路徑:
/etc/vsftpd/vsftpd.conf
# vsftpd.conf的配置
# 是否允許匿名登錄
anonymous_enable=NO
# 是否允許本地用戶登錄
local_enable=YES
# 是否允許本地用戶對FTP伺服器文件具有寫許可權
write_enable=YES
# 本地用戶主目錄
local_root=/var/ftp
# 匿名用戶主目錄
anon_root=/var/ftp/pub
# 是否允許匿名用戶上傳文件,如允許,須將全局的
write_enable=YES
anon_upload_enable=YES
# 是否允許匿名用戶創建新文件夾
anon_mkdir_write_enable=YES
# 容許匿名用戶除了新建和上傳外的其他許可權
anon_other_write_enable=YES
# 本地用戶掩碼
local_umask=022
# 設置匿名登入者新增或上傳檔案時的umask值
anon_umask=022
# 是否激活目錄歡迎信息功能
dirmessage_enable=YES
xferlog_enable=YES
# 主動模式數據傳輸20埠
connect_from_port_20=NO
xferlog_std_format=YES
# 是否監聽ipv4
listen=YES
# listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
# 是否設置被動模式
pasv_enable=YES
# 被動模式傳輸使用埠
pasv_min_port=20020
pasv_max_port=20020
# 被動模式返回給客戶端的ip地址(伺服器內網穿透時使用)
pasv_address=0.0.0.0( 伺服器外網ip )
# 設置用戶訪問目錄,默認只允許用戶自己的ftp目錄
# 需要同時設置allow_writeable_chroot,允許受限用戶的寫許可權,不然會報錯
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES
5.創建例外用戶文件
#哪怕沒有例外用戶也必須創建
vim /etc/vsftpd/chroot_list
只想讓指定賬戶不限制在其主目錄,其它賬戶都限制在主目錄。
對於chroot_local_user與chroot_list_enable的組合效果,可以參考下表:
6. 創建ftp新用戶
#新增一個test(用戶名),並指定上傳目錄在/home/ftp/test下
useradd -g root -d /home/ftp/test -s /sbin/nologin test
# 如果後期想變更此用戶的上傳到(/XXX/ftp/test),請使用下面的命令:
usermod -d /XXX/ftp/test test
# 設置用戶密碼
passwd test
因為安全問題,vaftpd不允許匿名用戶在ftp主目錄上傳,可以新建一個子目錄,設置許可權為777
7. 關於local_umask和anon_umask掩碼
掩碼決定了上傳文件的許可權,掩碼為022代表上傳後的文件許可權為
666-022=644 -> rw-r--r--
掩碼即為要去除的許可權為,默認設為033即可。
8. 啟動vsftp服務
#centos7 操作命令
啟動: systemctl start vsftpd.service
停止: systemctl stop vsftpd.service
重啟: systemctl restart vsftpd.service
查看狀態: systemctl status vsftpd.service
#centos6 操作命令
啟動: service vsftpd start
停止: service vsftpd stop
重啟: service vsftpd restart
查看狀態: service vsftpd status
5. CentOS7安裝及配置vsftpd-精簡絕版
備註:如果後期想變更此用戶的上傳目錄到
(/run/media/root/xxx/wwwroot/ xxx.org ),
請使用下面的命令:
輸入怎麼想設置的密碼則可。
(1)當我們限定了用戶不能跳出其主目錄之後,使用該用戶登錄FTP時往往會遇到這個錯誤:
500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
(2)從2.3.5之後,vsftpd增強了安全檢查,如果用戶被限定在了其主目錄下,
則該用戶的主目錄不能再具有寫許可權了!如果檢查發現還有寫許可權,就會報該錯誤。
要修復這個錯誤,可以用命令chmod a-w /home/user去除用戶主目錄
的寫許可權,注意把目錄替換成你自己的。
或者你可以在vsftpd的配置文件中增加下列一項:
allow_writeable_chroot=YES
(3)使用cmd命令容器發生
500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list錯誤
解決:修改vsftpd.conf配置文件,注釋以下內容
(4)本地使用ftpClient調試是發生
java.net.SocketException: Connection reset異常
解決:在本地電腦執行以下命令
netsh advfirewall set global StatefulFTP disable
# 啟動服務
systemctl start vsftpd.service
# 停止服務
systemctl stop vsftpd.service
# 重啟服務
systemctl restart vsftpd.service
# 服務狀態查看
systemctl status vsftpd.service
# 設置開機啟動
systemctl enable vsftpd
6. centos最小安裝後 如何安裝vsftpd
以下主要參考《Linux就該這么學》vsftpd安裝教程部分
[root@linuxprobe~]#yuminstallvsftpd-y
iptables防火牆管理工具中默認禁止了ftp傳輸協議的埠號,因此咱們在正式配置vsftpd服務程序前還需要清空一下iptables防火牆的默認策略,並將當前已經被清理的防火牆策略狀態保存下來:
[root@linuxprobe~]#iptables-F
[root@linuxprobe~]#serviceiptablessave
iptables:Savingfirewallrulesto/etc/sysconfig/iptables:[OK]
vsftpd服務程序的主配置文件(/etc/vsftpd/vsftpd.conf)中參數總共有123行左右,但大多數都是以#(井號)開頭的注釋信息,咱們可以用grep命令的-v參數來過濾並反選出沒有包含#(井號)的參數行,也就是把所有的注釋信息都過濾掉,這樣再通過輸出重定向符寫會到原始的主配置文件名稱中即可:
[root@linuxprobe~]#mv/etc/vsftpd/vsftpd.conf/etc/vsftpd/vsftpd.conf_bak
[root@linuxprobe~]#grep-v"#"/etc/vsftpd/vsftpd.conf_bak>/etc/vsftpd/vsftpd.conf
[root@linuxprobe~]#cat/etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
劉遄老師給同學們整理出了vsftpd程序程序的主配置文件中常用的參數及作用介紹,您現在只要簡單的瀏覽一下,接下來的實驗中如果不明白再過來查閱就可以。
參數 作用
listen=[YES|NO] 是否以獨立運行的方式監聽服務。
listen_address=IP地址 設置要監聽的IP地址。
listen_port=21 設置FTP服務的監聽埠。
download_enable=[YES|NO] 是否允許下載文件。
userlist_enable=[YES|NO]
userlist_deny=[YES|NO] 是否啟用「禁止登陸用戶名單」。
max_clients=0 最大客戶端連接數,0為不限制。
max_per_ip=0 同一IP地址最大連接數,0位不限制。
anonymous_enable=[YES|NO] 是否允許匿名用戶訪問。
anon_upload_enable=[YES|NO] 是否允許匿名用戶上傳文件。
anon_umask=022 匿名用戶上傳文件的umask值。
anon_root=/var/ftp 匿名用戶的FTP根目錄。
anon_mkdir_write_enable=[YES|NO] 是否允許匿名用戶創建目錄。
anon_other_write_enable=[YES|NO] 是否開放匿名用戶其他寫入許可權。
anon_max_rate=0 匿名用戶最大傳輸速率(位元組),0為不限制。
local_enable=[YES|NO] 是否允許本地用戶登陸FTP。
local_umask=022 本地用戶上傳文件的umask值。
local_root=/var/ftp 本地用戶的FTP根目錄。
chroot_local_user=[YES|NO] 是否將用戶許可權禁錮在FTP目錄,更加的安全。
local_max_rate=0 本地用戶最大傳輸速率(位元組),0為不限制。
7. CentOs ftp 設置用戶訪問指定目錄
使用root賬號登錄centos系統
檢查是否已安裝vsftp
rpm -qa |grep vsftpd #未輸出信息,表示未安裝vsftp通過yum安裝vsftp
yum -y install vsftpdftp啟動、重啟、停止、狀態查詢命令
service vsftpd start #啟動ftpservice vsftpd stop #停止ftpservice vsftpd restart #重啟ftpservice vsftpd status #查詢ftp狀態設置為開機啟動(可設置)
chkconfig vsftpd on設置配置文件
vi /etc/vsftpd/vsftpd.conf修改如下內容:
anonymous_enable=NO #設置不允許匿名賬戶登錄chroot_local_user=YES #所有用戶限制在主目錄中chroot_list_enable=NO #不啟動限制用戶名單,直接限制所有用戶userlist_enable=NO #當為YES時只有userlist_file文件中指定的用戶才能登錄allow_writeable_chroot=YES #(在文件尾部新增)防止用戶有寫入許可權時報錯local_root=/home/www #(在文件尾部新增)設置用戶的根目錄重啟ftp
service vsftpd restart創建ftp用戶
創建用戶組
groupadd ftpgroups創建用戶
# useradd 添加用戶命令 -d /home/www 指定用戶根目錄 -g ftpgroups 加入用戶組 ftptest用戶名useradd -d /home/www -g ftpgroups ftptest設置用戶密碼
passwd ftptest # passwd(命令) ftptest(用戶名,根據你實際情況寫)設置不允許用於系統登錄
usermod -s /sbin/nologin ftptest #ftptest(用戶名,根據你實際情況寫)設置文件許可權
chmod 755 /home/www設置目錄擁有者
chown -R ftptest:root /home/www #ftptest:ftp用戶名 ; /home/www:文件目錄設置防火牆
查看防火牆狀態,如果未啟動,直接跳過本步驟
開放20、21埠(阿里雲伺服器還需配置安全組開放防火牆)
firewall-cmd --permanent --zone=public --add-port=20/tcpfirewall-cmd --permanent --zone=public --add-port=20/udpfirewall-cmd --permanent --zone=public --add-port=21/tcpfirewall-cmd --permanent --zone=public --add-port=21/udpfirewall-cmd --reload #重新載入至此ftp服務安裝成功,如果出現不能訪問或不能寫入的情況,就還需要設置SELinux(關閉)
sestatus -v #查看SELinux狀態,如果SELinux status參數為enabled即為開啟狀態setenforce 0 #臨時關閉(不用重啟機器)8. 限制虛擬用戶的家目錄的家目錄的配置是什麼
centos 6.5 vsftpd 虛擬用戶配置
一:基本知識
1:虛擬用戶:與系統無關聯,不能登入系統,只能訪問FTP伺服器
2:vsftp的服務進程是vsftpd
3:vsftpd的配置文件是/etc/vsftpd/vsftpd.conf .
4:vsftpd的用戶文件是/etc/vsftpd/ftpusers
5:vsftpd的用戶文件是/etc/vsftpd/user_list
6:推薦使用虛擬用戶登入vs-FTP伺服器
二:安裝
1.檢查是否安裝過vsftpd
rpm -qa vsftpd
安裝:
(1) yum -y install vsftpd lftp
(2) 關閉iptables 和 selinux
/etc/init.d/iptables stop
臨時關閉selinux
setenforce 0
永久性的關閉selinux
vim /etc/selinux/config
修改為 ————》SELINUX=disabled
(3) 創建虛擬用戶文本文件,添加用戶及密碼
cd /etc/vsftpd
touch vuser.txt
備註:奇數行是用戶名,偶數行是密碼。例如:
alix
123456
(4) 生成虛擬資料庫文件(需使用到db_load)
yum -y install db4-utils db4-devel db4-4.3
db-load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
(5) 配置PAM文件,用來驗證客戶端
vim /etc/pam.d/vsftpd
authrequiredpam_userdb.sodb=/etc/vsftpd/vuser
accountrequiredpam_userdb.sodb=/etc/vsftpd/vuser
(6)修改虛擬資料庫文件的許可權
chmod 700 /etc/vsftpd/vuser.db
(7) 增加一個系統用戶vuser,用於匿名用戶的映射。
mkdir /data
useradd -d /data vuser
chown vuser.vuser /data
usermod -s /sbin/nologinvuser
(8) 修改主配置文件vsftpd.conf,添加:
guest_enable=YES ##激活虛擬用戶
guest_uaername=vuser##把虛擬用戶綁定為系統賬戶vuser
pam_service_name=vuser##使用pam認證
(9) 添加虛擬用戶的配置文件
vim /etc/vsftpd/vsftpd.conf
添加:user_config_dir=/etc/vsftpd/vsftpd_user_conf
(10) 創建vsftpd_user_conf目錄
mkdir /etc/vsftpd/vsftpd_user_conf
(11) 設置虛擬用戶配置文件,與虛擬用戶名相同
touch /etc/vsftpd/vsftpd_user_conf/testuser
(12) 編輯虛擬用戶配置文件
vim /etc/vsftpd/vsftpd_user_conf/testuser
anon_world_readable_only=NO ###瀏覽FTP目錄和下載
anon_upload_enable=YES ###允許上傳
anon_mkdir_write_enable=YES ###建立和刪除目錄
anon_other_write_enable=YES ####改名和刪除文件
local_root=/ftpdir/ #### 指定虛擬用戶在系統用戶下面的路徑,限制虛擬用戶的家目錄,虛擬用戶登錄後的主目錄。
備註:一定要檢查後面是否有空格。
(13)啟動
/etc/init.d/vsftpd restart
三。添加新的虛擬用戶
添加虛擬用戶
vim /etc/vsftpd/vuser.txt
web2
123456
生成庫文件
db-load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
編輯虛擬用戶的配置文件
touch /etc/vsftpd/vsftpd_user_conf/web2
vim /etc/vsftpd/vsftpd_user_conf/web2
anon_world_readable_only=NO ###瀏覽FTP目錄和下載
anon_upload_enable=YES ###允許上傳
anon_mkdir_write_enable=YES ###建立和刪除目錄
anon_other_write_enable=YES ####改名和刪除文件
local_root=/ftpdir/ #### 指定虛擬用戶在系統用戶下面的路徑,限制虛擬用戶的家目錄,虛擬用戶登錄後的主目錄。
創建用戶家目錄
mkdir /ftpdir/web2
修改許可權
chown -R vuser.vuser /ftpdir/web2
載入vsftpd
/etc/init.d/vsftpd reload
本地連接:
ftp
(需要把vsftpd.conf 里的ssl關了)
lftp
(在 /etc/lftp.cong里添加 set ssl:verify-certificate no)
四、配置ssl
1、安裝包
apt-get -y install openssl
2、創建一個證書(時間365天)並填寫相關一些信息
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -out /etc/ssl/certs/vsftpd.pem -keyout /etc/ssl/certs/vsftpd.pem
Generating a 2048 bit RSA private key
..........+++
.............+++
writing new private key to '/etc/ssl/certs/vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:shanghai
Locality Name (eg, city) []:shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:aaa
Organizational Unit Name (eg, section) []:aaa
Common Name (e.g. server FQDN or YOUR name) []:aaa
Email Address []:
3、修改許可權
chmod 0400 /etc/ssl/certs/vsftpd.pem
4、ssl具體配置/etc/vsftpd.conf最後添加
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
5、配置說明
ssl_enable=YES #開啟vsftpd對ssl協議的支持
ssl_sslv2=YES #支持SSL v2 protocol
ssl_sslv3=YES #支持SSL v3 protocol
ssl_tlsv1=YES #支持TSL v1
rsa_cert_file=/etc/ssl/certs/vsftpd.pem #存放證書地方
6、重啟服務
/etc/init.d/vsftpd restart
Stopping FTP server: vsftpd.
Starting FTP server: vsftpd.
7、測試
1)lftp fileftp:'redhat'@192.168.1.124
ls: Fatal error: Certificate verification: Not trusted
解決在/etc/lftp.conf文件中添加1行到最後
set ssl:verify-certificate no
再登錄一次就OK了
2)查看日誌
Sat Aug 1 13:52:23 2015 [pid 2] CONNECT: Client "192.168.1.124"
Sat Aug 1 13:52:23 2015 [pid 2] DEBUG: Client "192.168.1.124", "Connection terminated without SSL shutdown - buggy client?"
Sat Aug 1 13:56:25 2015 [pid 2] CONNECT: Client "192.168.1.120"
Sat Aug 1 13:56:25 2015 [pid 1] [fileftp] OK LOGIN: Client "192.168.1.120"