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
B. 利用ftp登錄Linux系統報錯!怎麼解決,求解!
1檢查Linux系統上FTP是否成功安裝
[root@localhost root]# service vsftpd status
vsftpd is stopped
#提示vsftpd服務停止,表明已安裝但未開啟該服務
2檢查Linux系統上FTP服務是否開啟
[root@localhost root]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]
再次查看發現已經處於啟動狀態:
[root@localhost root]# service vsftpd status
vsftpd (pid 4510) is running...
3.修改root用戶可以使用ftp
#默認不能用root用戶使用ftp,如下所示:
C:\Users\thinkpad>ftp 192.168.141.123
連接到 192.168.141.123。
220 (vsFTPd 1.1.3)
用戶(192.168.141.123:(none)): root
530 Permission denied.
登錄失敗。
#修改/etc/vsftpd.ftpusers文件,該文件記錄了不能使用ftp登錄的用戶,將root用戶注釋
#修改/etc/vsftpd.user_list文件,將root用戶注釋。
C. linux ftp顯示已經安裝 但是啟動不了服務
1.安裝vsftp
yum -y install vsftpd
chkconfig --level 35 vsftpd on
/etc/init.d/vsftpd start
2.然後添加個用戶及本地下載個ftp軟體測試下
useradd ftptest
passwd ftptest
filezilla下載安裝
D. linux安裝完ftp之後系統不能啟動。。急急急!!
果你的光碟是/dev/cdrom的話,可以按照以下命令來進行操作(以centOS4.8光碟為例):
#mkdir -p /mnt/yum/c4u8
#mount /dev/cdrom /mnt/yum/c4u8
#mkdir -p /etc/yum.repos.d/backup
#mv /etc/yum.repos.d/* /etc/yum.repos.d/backup/
#echo "[yum]">>/etc/yum.repos.d/yum.repo
#echo "name=yum">>/etc/yum.repos.d/yum.repo
#echo "baseurl=file:///mnt/yum/c4u8">>/etc/yum.repos.d/yum.repo
#echo "enabled=1">>/etc/yum.repos.d/yum.repo
#echo "gpgcheck=1">>/etc/yum.repos.d/yum.repo
#echo "gpgkey=file:///mnt/yum/c4u8/RPM-GPG-KEY">>/etc/yum.repos.d/yum.repo
#yum install vsftpd
然後按提示進行確認。
E. linux ftp 530錯誤怎麼回事
首先,如果正在使用vsftpd,可以先把其停掉,命令:service vsftpd stop,接下來需要編輯/etc/xinetd.d/下的gssftp配置文件,文件內容如下:
# default: off
# description: The kerberized FTP server accepts FTP connections
# that can be authenticated with Kerberos 5.
service ftp
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/kerberos/sbin/ftpd
server_args = -l -a
log_on_failure += USERID
}
在文件中,我們要修改的內容有:
1、disable = yes 改為 disable =no ,系統默認ftp功能是無效的,修改使ftp功能生效。
2、server_args = -l -a 改為 server_args = -l。
without -a means : *enable weak authentication*
其中表示使用Kerberos 5驗證機制,而一般的ftp是不支持該驗證機制的。
修改完畢後,將其保存。
3、重啟啟動xinetd服務。請執行一下的命令(/etc/xinetd.d/):
service xinetd restart
service vsftpd restart
F. linux ftp用戶登錄失敗
「然後進入資料庫vsftpd 在users表中添加一條數」,不知道你在哪個文件加的
vsftpd.ftpusers——這個文件里的用戶是不允許登錄的
vsftpd.user_list——如果vsftpd.conf配置中userlist_deny=no,則只允許此文件中的用戶登錄;如果userlist_deny=yes(預設配置),則不允許此文件中用戶登錄
最後重啟vsftpd也是沒必要的
G. linux重啟後為什麼登錄不了FTP
vsftpd 系統默認是不開啟這個服務的 你看下 ftp服務開了么?
如果是紅帽系統 service vsftpd restart 一下看看
如果是其他版本
/etc/init.d/vsftpd restart
H. Linux 的ftp服務未啟用怎麼辦
1. 首先伺服器要安裝ftp軟體,查看是否已經安裝ftp軟體下:
#which vsftpd
如果看到有vsftpd的目錄說明伺服器已經安裝了ftp軟體
2. 查看ftp 伺服器狀態
#service vsftpd status
3. 啟動ftp伺服器
#service vsftpd start
4. 重啟ftp伺服器
#service vsftpd restart
5. 查看服務有沒有啟動
#netstat -an | grep 21
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
如果看到以上信息,證明ftp服務已經開啟。
6.如果需要開啟root用戶的ftp許可權要修改以下兩個文件
#vi /etc/vsftpd.ftpusers中注釋掉root
#vi /etc/vsftpd.user_list中也注釋掉root
然後重新啟動ftp服務。
7. vsftpd 500 OOPS: cannot change directory
登陸報錯:
C:>ftp 192.168.0.101
Connected to 192.168.0.101.
220 (vsFTPd 2.0.5)
User (192.168.0.101:(none)): frank
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/frank
Login failed.
ftp> ls
500 OOPS: child died
Connection closed by remote host.
解決方法:
setsebool ftpd_disable_trans 1
service vsftpd restart
就OK了!
這是SELinux的設置命令,在不熟悉SELnux前,把SELinux關掉也可以的。
8. 永久開啟,即os重啟後自動開啟ftp服務
方法一:
cd /etc/xinetd.d ,編輯ftp服務的配置文件gssftp的設置:
vi /etc/xinetd.d/gssftp ,將 修改兩項內容:
(a) server_args = -l –a 去掉-a 改為server_args = -l
(b) disable=yes改為disable=no
(c) 保存退出。
方法二:
(a) system-config-services , 進入圖形界面的System services查看是否有 vsftpd項,如果沒有轉到2.,保存後退出
(b) 用redhat第三張盤 安裝此服務(開始--刪除/增加程序),200K左右
(c) #setup
此時能看到vsftpd項,此時選中此services項,保存後退出.
I. linux 用戶為什麼登陸不上ftp
原因太多,比如:用戶名密碼有問題,許可權不夠,公鑰不對,服務端防火牆擋了埠,服務端SELinux阻止了連接等等。