Linux 建立sftp使用者並限制目錄許可權

2021-08-13 21:14:48 字數 2053 閱讀 6964

最近搞乙個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的含義:

#這裡的%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步驟!

建立多個Sftp使用者並指定許可權目錄實踐

1.建立使用者 如果在新增使用者時提示沒有許可權或者使用者已存在?看文章最後 這個方式不需要建立使用者組,按照使用者組的方式嘗試之後,總是有點問題,不是目錄許可權問題到值的無法連線就是對指定目錄的操作不對 2.建立許可權目錄 3.sftp配置 使用linux自帶的sftp 修改sftp配置檔案 vi...

Linux 建立sftp使用者登入,訪問指定資料夾

1.建立使用者,使用者名為sentweb useradd d home www sentweb.zhdingli.com s sbin nologin m sentweb 2.設定密碼 passwd sentweb 輸入密碼 3.使用者授權。4.修改配置,限制訪問路徑 vim etc ssh ssh...

Linux建立使用者,SFTP只允許訪問指定目錄

首先建立使用者 useradd lus1 passwd lus1 我這裡配置lus1這個使用者目錄,為sftp指向目錄,即 home lus1 vim etc ssh sshd config 這個記得要在原有的配置檔案注釋掉 subsystem sftp usr libexec openssh sf...