FTP和SFTP配置用戶只能訪問主目錄(針對Centos7)


一、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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM