Linux 創建sftp用戶並限制目錄權限


最近搞一個sftp項目,用於給第三方公司上傳文件,期間查詢了很多種方式,依然無法限制目錄,很苦惱,本次經過無數次試驗,終於成功了。

提供sftp服務的有vsftpd和internal-sftp,這里用的是系統自帶的internal-sftp,操作步驟如下:

下面是千篇一律的步驟,網上大抵相同。

1、創建用戶 sftpuser,並禁止ssh登錄,不創建家目錄

       useradd -s /sbin/nologin -M sftpuser

2、設置用戶密碼

       passwd sftpuser

3、創建sftp根目錄,所有sftp用戶都將在該目錄下活動。(如果以后不會在新增新用戶的話,可跳過此目錄)

       mkdir /home/sftp

4、設置目錄權限,目錄的權限設定有兩個要點:

      目錄開始一直往上到系統根目錄為止的目錄擁有者都只能是root

      目錄開始一直往上到系統根目錄為止都不可以具有群組寫入權限

      chown root:root /home/sftp

      chmod 755 /home/sftp      注:該目錄權限最大為755,設置成777會報錯,這個也是我困擾我的一個地方。

5、創建用戶sftpuser根目錄,目錄名為用戶名

       cd /home/sftp

       mkdir sftpuser

6、設置sftpuser目錄權限

       chown root:sftpuser /home/sftp/sftpuser

       (注:設置用戶sftpuser,如果設置擁有者為root,表示該目錄sftpuser沒有權限讀寫,在該目錄下建立其它目錄,賦權給sftpuser用戶讀寫權限;

           若需要對該目錄擁有讀寫權限,設置權限:chown sftpuser:sftpuser /home/sftp/sftpuser)

        chmod 755 /home/sftp/sftpuser   注:這里的目錄sftpuser  權限也只能是755,否則無法限制目錄。

7、配置sshd_config

        vi /etc/ssh/sshd_config

8、修改如下內容,並保存退出

        #注釋掉這行

        #Subsystem sftp /usr/libexec/openssh/sftp-server

        添加這行:

        Subsystem sftp internal-sftp  #指定使用sftp服務使用系統自帶的internal-sftp,如果不添加,用戶無法通過sftp登錄。

        #添加在配置文件末尾

        Match User sftpuser#匹配用戶,如果要匹配多個組,多個組之間用逗號分割

        ChrootDirectory /home/sftp/%u #用chroot將指定用戶的根目錄,chroot的含義:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/;

              #這里的%u指的是賬號名,/home/sftp/%u 含義是:/home/sftp/sftpuser

        ForceCommand internal-sftp #指定sftp命令

        X11Forwarding no #這兩行,如果不希望該用戶能使用端口轉發的話就加上,否則刪掉

        AllowTcpForwarding no

 9、重啟sshd服務器

        systemctl restart sshd.service

        #查詢sshd啟動狀態命令:

        systemctl status sshd.service

10、sftpuser用戶登錄測試:

        sftp -oPort=22 sftpuser@127.0.0.1

至此已經完成了sftp創建用戶,並修改權限,限制根目錄。

 

在用戶登錄測試過程中,可能會遇到如下錯誤:

         Couldn't read packet: Connection reset by peer

這是什么原因導致的呢,當時我一直很困惑,后來發現,是目錄權限導致了該問題,具體解決方案,回看以上4、5、6步驟!
————————————————
版權聲明:本文為CSDN博主「Tastill」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Tastill/article/details/78864179


免責聲明!

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



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