搭建sftp,並限制賬號訪問目錄

  1. 創建一個專門的用戶組和用戶
    #創建sftp組
    groupadd sftp
    cat /etc/group |grep sftp
    cat /etc/passwd |grep sftp
    #創建一個sftp用戶,用戶名爲user
    useradd -g sftp -s /bin/false user
    #/bin/false使其沒有登陸的權限,也無返回信息
    #修改密碼
    passwd user
    XXXXXX

2.指定目錄
#sftp組的用戶的home目錄指定到/ftpuser/DataUser/data_gateway/data下
mkdir -p /ftpuser/DataUser/data_gateway/data/

#然後指定user的home爲/ftpuser/DataUser/data_gateway/data/
usermod -d /ftpuser/DataUser/data_gateway/data/ user

3.編輯/etc/ssh/sshd_config
#編輯sshd_config
vi /etc/ssh/sshd_config
#輸入/Subsystem搜索到下列內容,註釋掉原有的
#Subsystem sftp /usr/libexec/openssh/sftp-server
#改爲internal-sftp
Subsystem sftp internal-sftp

#使用 internal-sftp 而不用默認的 sftp-server,是因爲:
這是一個進程內的 sftp 服務,當用戶 ChrootDirectory 的時候,將不請求任何文件;
更好的節約性能,不用爲 sftp 再開一個進程。

4.設定屬於用戶組sftp的用戶都只能訪問他們自己的home文件夾
#匹配用戶組,如果要匹配多個組,多個組之間用逗號分割
Match Group sftp
#指定登陸用戶到自己的用戶目錄
ChrootDirectory /data/sftp/%u
#或指定登錄同一個目錄
ChrootDirectory /ftpuser/DataUser/data_gateway/data
#指定 sftp 命令
ForceCommand internal-sftp
#這兩行,如果不希望該用戶能使用端口轉發的話就加上,否則刪掉
X11Forwarding no
AllowTcpForwarding no

5.增加上傳權限
chown -R root:sftp /ftpuser/
chown root:sftp data
chmod 755 /ftpuser/DataUser/data_gateway/data/

6、重啓sshd服務
systemctl restart sshd

遇到的問題:
sftp登錄報錯
在這裏插入圖片描述
ChrootDirectory設置的目錄權限及其所有的上級文件夾權限,屬主必須是root, 用戶組可以不是 root
chown -R root:sftp /ftpuser

sftp無法上傳文件
在這裏插入圖片描述
傳輸的目錄data的屬主需是uesr,屬組需是root
chown user:root /ftpuser/DataUser/data_gateway/data

需求:
a) 不能影響ftpuser用戶的權限,ftpuser用戶可以在這個目錄下讀取數據(ftpuser擁有最大權限)
b) stfp用戶可以往這個目錄上傳文件

vi /etc/passwd
修改user的uid,gid爲ftpuser的uid,gid
在這裏插入圖片描述
在這裏插入圖片描述
#user用戶需在ftpuser用戶下方,否則它的屬主和屬組就爲: 在這裏插入圖片描述
以root爲例:
在這裏插入圖片描述
root:(賬號名稱):x(:賬號密碼):0(:賬號UID):0(:賬號GID):root(:用戶說明):/root(:用戶家目錄):/bin/bash(:shell解析)
在這裏插入圖片描述
uid=1002(ftpuser) gid=1003(sftp) 組=1003(sftp)
uid:是用戶的UID號,用於標識用戶的
gid:是用戶所屬組的ID號,用於標識一個組的
groups:用戶所屬羣組

配置後user可以往/ftpuser/DataUser/data_gateway/data傳文件,屬主和屬組都爲ftpuser
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章