學習Linux時間不長,首次安裝了vsftp,按照網上的各類帖子嘗試配置,不過都沒打到預期,不是被拒絕鏈接,就是鏈接超時,總之就是各類問題啊。固然了,不是別人配置的不對,而是本身不是太懂Linux,選擇的配置參數彼此之間不知道哪裏起了衝突。linux
因此結合本身的系統把安裝配置過程記錄下來,方便之後學習總結。shell
一、 安裝vsftpdide
# yum install vsftpd 學習
【刪除指令 yum remove vsftp*】測試
2.、查看是否已經安裝上了spa
# yum list installed | grep vsftpdcode
vsftpd.x86_64 3.0.2-25.el7 @base進程
三、啓動vsftp,而且關閉防火牆以方便測試ip
# systemctl start vsftpdci
# systemctl stop firewalld
四、剛安裝完vsftp後,/etc/vsftpd/下的文件ftpusers,user_list,vsftpd.conf,vsftpd_conf_migrate.sh。
默認狀況下,vsftp是容許匿名鏈接的,即不輸入用戶名和密碼直接經過ip就能夠鏈接上。
默認的鏈接目錄是/var/ftp/pub,而且只有550的權限。
五、只作簡單修改,只爲能按預期鏈接ftp。只允指定用戶進行登陸而且只能訪問本身的home目錄
chroot_local_user=NO (用於指定用戶列表文件中的用戶是否容許切換到上級目錄)
chroot_list_enable=YES (設置是否啓用chroot_list_file配置項指定的用戶列表文件)
chroot_list_file=/etc/vsftpd/chroot_list (用於指定用戶列表文件,須要本身手動建立)
hide_file = .* (不顯示以點開頭的隱藏文件)
而後使用系統的本地用戶進行登陸,鏈接不成功,提示以下錯誤:
500 OOPS: chroot
please specify the password
解決方法:關閉SElinux;修改配置文件/etc/vsftpd/vsftpd.conf添加參數:allow_writeable_chroot=YES
實現預期效果。
六、臨時關閉Selinux方法
# getenforce
//查看Selinux狀態
Enforcing
# setenforce 0
//臨時關閉Selinux,當即生效
# getenforce
Permissive
七、新建FTP用戶
useradd ftpuser -d /mnt/ftpfile -s /sbin/nologin
passwd ftpuser
chown -R ftpuser:ftpuser /mnt/ftpfile
將ftpuser添加到chroot_list中,鏈接ftp,提示530 Login incorrect,鏈接失敗。可是建立的普通帳號就能夠正常登錄。
解決方法:不少提供對系統非登陸訪問的守護進程(如FTP)會檢查用戶的登陸shell是否列在/etc/shells中,若是沒有列出,守護進程就會拒絕訪問(這正是您所須要的動做)。
打開 /etc/shells後,發現確實沒有/sbin/nologin這一行,添加上再次登錄,成功。