centos7安裝ftp
1、伺服器初始化檢查
檢查selinux,firewall,iptables是否開啟
1、檢視selinux的執行狀態
[root@zeq ~] getenforce Disabled我的現在是關閉狀態
[root@zeq ~] /usr/sbin/sestatus SELinux status:disabled 我的現在是關閉狀態
1、臨時關閉selinux
[root@zeq ~] setenforce 0
2、永久關閉selinux
將SELINUX=enforcing改為SELINUX=disabled,儲存後退出,reboot重啟伺服器後生效
[root@zeq ~] vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: #enforcing - SELinux security policy is enforced. #permissive - SELinux prints warnings instead of enforcing. #disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of three two values: #targeted - Targeted processes are protected, #minimum - Modification of targeted policy. Only selected processes are protected. #mls - Multi Level Security protection. SELINUXTYPE=targeted
2、檢視firewalld的執行狀態
[root@zeq ~] systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) 我現在是關閉狀態 Docs: man:firewalld(1)
1、關閉firewalld
[root@zeq ~] systemctl stop firewalld
3、安裝vsftp
[root@zeq ~] yum install vsftp -y
4、啟動vsftp服務並加入開機自啟
[root@zeq ~] systemctl start vsftpd [root@zeq ~] systemctl enable vsftpd
5、修改vsftp配置檔案
1、備份配置檔案
[root@zeq ~] cp /etc/vsftp/vsftp.conf /etc/vsftp/vsftp.conf.bak
2、修改配置檔案內容
[root@zeq ~] vim /etc/vsftp/vsftp.conf清空原有內容插入下面的內容 anonymous_enable=NO write_enable=YES chroot_local_user=YES chroot_list_enable=YES use_localtime=YES local_enable=YES allow_writeable_chroot=YES xferlog_enable=YES local_umask=022 pam_service_name=vsftpd use_localtime=YES listen_port=21 chroot_local_user=YES idle_session_timeout=120 data_connection_timeout=120 guest_enable=YES guest_username=ftpuser user_config_dir=/etc/vsftpd/vuser_conf virtual_use_local_privs=YES pasv_min_port=10060 pasv_max_port=10090 accept_timeout=5 connect_timeout=1
6、建立宿主使用者
1、建立使用者 ftpuser 指定/home/vsftpd
目錄
[root@zeq ~] useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser
2、設定使用者 ftpuser 的密碼
[root@zeq ~] passwd ftpuser
3、把 /home/vsftpd 的所有權給ftpuser.root
[root@zeq ~] chown -R ftpuser.root /home/vsftpd
7、建立虛擬使用者檔案
[root@zeq ~] vim /etc/vsftpd/vuser_passwd第一、三行使用者,第二、四行密碼 ftp1 12345678 ftp2 12345678
8、生成虛擬使用者資料檔案並授權
[root@zeq ~] db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db [root@zeq ~] chmod 600 /etc/vsftpd/vuser_passwd.db
9、建立使用者配置
[root@zeq ~] mkdir /etc/vsftpd/vuser_conf# 建立虛擬使用者個人vsftp的配置檔案 [root@zeq ~] cd /etc/vsftpd/vuser_conf# 進入目錄 [root@zeq vuser_conf] touch ftp1 ftp2 [root@zeq vuser_conf] vim ftp1ftp2第一行改為ftp2其他內容不變 local_root=/home/vsftpd/ftp1 write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
10、建立使用者目錄
[root@zeq ~] mkdir -p /home/vsftpd/ftp1 [root@zeq ~] mkdir -p /home/vsftpd/ftp2
11、重啟vsftp服務
[root@zeq ~] systemctl restart vsftp
12、生成虛擬使用者的PAM檔案
[root@zeq ~] cd /etc/pam.d/ && cp vsftpd vsftpd.bak [root@zeq ~] vim /etc/pam.d/vsftpd新增兩行內容,原有內容登出 #%PAM-1.0 auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd #sessionoptionalpam_keyinit.soforce revoke #authrequiredpam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed #authrequiredpam_shells.so #authincludepassword-auth #accountincludepassword-auth #sessionrequiredpam_loginuid.so #sessionincludepassword-auth
13、客戶端測試
1、首先每次更改配置需要重啟vsftpd服務。
2、上面每個配置檔案中的內容最好是手動鍵入
3、客戶端windows開啟cmd到後臺進行連線,網頁和資源管理器裡面都會有快取也看不到報錯。
4、伺服器tail -f /var/log/secure檢視日誌(也可以tail -f /var/log/messages,這個看不出什麼,前者更精準)
5、客戶端報錯示例(沒有讀到/etc/vsftpd/chroot_list這個檔案,所以我們新建這個檔案就行,記得重啟服務)。
6、如果虛擬使用者登入到自己的宿主目錄後,不能上傳檔案的話,伺服器端需要在宿主目錄裡面再新建一個資料夾,給這資料夾777許可權,就可以了(直接把宿主目錄設定777就會登入不了)
7、新增使用者的話,需要在/etc/vsftpd/vsuser.passwd裡面追加使用者(刪除就是刪除使用者),記得使用db_load重新生成vsuser.passwd檔案即可,vuser_confi裡面新建一個新建賬戶的許可權檔案,宿主目錄記得新建儲存檔案。
8、建議使用ftp工具和cmd驗證
9、修改完配置或者使用者資訊以後一定要重啟服務和重新生成vsuser.passwd(重複第八步操作)
14、ftp登陸驗證
ftp192.168.1.238 ftp命令+你伺服器的ip如果沒有ftp命令yum安裝即可 連線到 192.168.1.238. 220 (vsFTPd 3.0.2) 200 Always in UTF8 mode. 使用者(192.168.1.238:(none)): ftp1 331 Please specify the password. 密碼: 230 Login successful.
15、FTP命令詳解
ftp> ascii # 設定以ASCII方式傳送檔案(預設值) ftp> bell# 每完成一次檔案傳送,報警提示. ftp> binary # 設定以二進位制方式傳送檔案. ftp> bye# 終止主機FTP程序,並退出FTP管理方式. ftp> case # 當為ON時,用MGET命令拷貝的檔名到本地機器中,全部轉換為小寫字母. ftp> cd# 同UNIX的CD命令. ftp> cdup# 返回上一級目錄. ftp> chmod # 改變遠端主機的檔案許可權. ftp> close # 終止遠端的FTP程序,返回到FTP命令狀態, 所有的巨集定義都被刪除. ftp> delete # 刪除遠端主機中的檔案. ftp> dir [remote-directory] [local-file] # 列出當前遠端主機目錄中的檔案.如果有本地檔案,就將結果寫至本地檔案. ftp> get [remote-file] [local-file] # 從遠端主機中傳送至本地主機中. ftp> help [command] # 輸出命令的解釋. ftp> lcd # 改變當前本地主機的工作目錄,如果預設,就轉到當前使用者的HOME目錄. ftp> ls [remote-directory] [local-file] # 同DIR. ftp> macdef# 定義巨集命令. ftp> mdelete [remote-files] # 刪除一批檔案. ftp> mget [remote-files]# 從遠端主機接收一批檔案至本地主機. ftp> mkdir directory-name# 在遠端主機中建立目錄. ftp> mput local-files # 將本地主機中一批檔案傳送至遠端主機. ftp> open host [port] # 重新建立一個新的連線. ftp> prompt# 互動提示模式. ftp> put local-file [remote-file] # 將本地一個檔案傳送至遠端主機中. ftp> pwd # 列出當前遠端主機目錄. ftp> quit # 同BYE. ftp> recv remote-file [local-file] # 同GET. ftp> rename [from] [to]# 改變遠端主機中的檔名. ftp> rmdir directory-name# 刪除遠端主機中的目錄. ftp> send local-file [remote-file] # 同PUT. ftp> status# 顯示當前FTP的狀態. ftp> system# 顯示遠端主機系統型別. ftp> user user-name [password] [account] # 重新以別的使用者名稱登入遠端主機. ftp> ? [command] # 同HELP. [command]指定需要幫助的命令名稱。如果沒有指定 command,ftp 將顯示全部命令的列表。 ftp> ! # 從 ftp 子系統退出到外殼。