一、FTP設置
1、安裝配置
-
檢查當前服務器是否有安裝FTP
rpm -q vsftpd
-
若未安裝,則先安裝
yum install -y vsftpd
-
添加用戶並指定目錄
groupadd ftpGroup
--- 添加ftp用戶組useradd -d /u01/ftpfolder -s /sbin/nologin -g ftpGroup -G root ftpUser
--- 添加ftp用戶[NOTE]
useradd 添加tfpUser用戶
-d 指定用戶根目錄為/u01/ftpfolder
-s 指定shell腳本為/sbin/nologin,表示不允許shell登錄
-g 創建分組ftpGroup
-G 指定root分組
若創建有問題可以刪除重新創建 userdel -r ftpUser
-
添加用戶時設定了客戶不允許用shell登錄,需要修改
vim /etc/shells
文件添加:/sbin/nologin
[TIP]
usermod -s /sbin/nologin ftpUSER 修改用戶登錄權限
usermod -s /bin/bash ftpUSER 恢復登錄權限
usermod -d /test ftpUSER 修改用戶家目錄 -
修改參數文件
vim /etc/vsftpd/vsftpd.conf
添加如下內容:chroot_local_user=NO #所有用戶不被鎖定於主目錄 chroot_list_enable=YES #啟動例外名單 chroot_list_file=/etc/vsftpd/chroot_list #例外名單用戶
[NOTE]
chroot_local_user是一個全局性的設定,其為YES時,全部用戶被鎖定於主目錄,其為NO時,全部用戶不被鎖定於主目錄。那么我們勢必需要在全局設定下能做出一些“微調”,即我們總是需要一種“例外機制",所以當chroot_list_enable=YES時,表示我們“需要例外”。即當chroot_local_user=YES,"例外"就是:不被鎖定的用戶是哪些;當即chroot_local_user=NO,"例外"“就是:要被鎖定的用戶是哪些。 -
然后添加用戶
vim /etc/vsftpd/chroot_list
每行一個用戶名,保存即可。[IMPORTANT]
設置了主目錄限制之后,在登錄時會報錯:
vsftpd:500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
需要修改vsftpd.conf文件,添加一行:
allow_writeable_chroot=YES
-
啟動vsftpd服務(針對於Centos7)
systemctl start vsftpd.service
#啟動服務
systemctl enable vsftpd.service
#開機自動啟動
systemctl status vsftpd.service
#查看狀態
2、FTP被動模式
-
對於FTP服務有主動模式和被動模式的區別,所涉及到的端口不同的地方,而使用winscp等工具連接雲服務器上的FTP時默認是使用的被動模式,可能會因為端口的設定不全導入無法開打目錄,可以對FTP服務進行配置,也可以在連接時取消被動模式:
-
取消被動模式,以WINSCP為例,如圖:
-
開啟被動模式,添加如下命令:
pasv_enable=YES (打開被動模式) pasv_min_port=55100 (設置被動模式涉及到的高位端口) pasv_max_port=55900 (高位端口需要在防火牆中打開)
二、SFTP設置
-
SFTP的設置主要是基於ssh協議,主要參數文件/etc/ssh/sshd_conf
vim /etc/ssh/sshd.conf
注釋掉#Subsystem sftp /usr/libexec/openssh/sftp-server
-
在文檔末尾出添加:
Subsystem sftp internal-sftp #這行指定使用sftp服務使用系統自帶的internal-sftp Match User sftpuser #這行用來匹配用戶 ChrootDirectory /data/sftp #用chroot將用戶的根目錄指定到/datas/www,這樣用戶就只能跟目錄下活動 AllowTcpForwarding no ForceCommand internal-sftp #指定sftp命令
[IMPORTANT]
很重要!!!一定要在UseDNS no行后添加!!不然啟動會報錯!! -
若需要開啟日志記錄
在修改sshd_config文件時:
LogLevel INFO
Subsystem sftp internal-sftp -l INFO -f local5
,
ForceCommand internal-sftp -l INFO -f local5
然后修改 rsyslog_config文件
vim /etc/rsyslog.conf
添加
auth,authpriv.*,local5.* /var/log/sftp.log
重啟 rsyslog服務systemctl restart rsyslog
-
然后重啟sshd服務,
systemctl restart sshd.service
[NOTE]
與FTP不同,SFTP設置的ChrootDirectory設置的目錄權限及其所有的上級文件夾權限,屬主和屬組必須是root;ChrootDirectory設置的目錄權限及其所有的上級文件夾權限,只有屬主能擁有寫權限,權限最大設置只能是755。因此將跟目錄屬於改為root,然后在指定目錄下再新建目錄,並修改屬主為sftpuser。