1、伺服器初始化檢查 檢查selinux,firewall,iptables是否開啟 1、查看selinux的運行狀態 1、臨時關閉selinux 2、永久關閉selinux 將SELINUX=enforcing改為SELINUX=disabled,保存後退出,_reboot重啟伺服器後生效_ 2、 ...
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 ftp1 ftp2第一行改為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
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-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登陸驗證
ftp 192.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 子系統退出到外殼。