創建多個Sftp用戶並指定權限目錄實踐

前言:

由於服務器中會需要一些文件進行上傳和下載,所以需要給多個用戶開啓sftp賬號,並且不同的賬號需要不同的權限目錄操作文件,經過查詢資料和實踐,實現了多用戶對應多個不同權限目錄,並且沒有權限訪問其他目錄

說明:

1. 創建用戶

  • liunx中創建用戶命令:
    useradd -d /server/data -m test
    • 說明:
      • -d /server/data 是設置改用戶的默認目錄,這裏設置後面當作是該用戶sftp訪問時的根目錄就是這個
      • -m test 表示創建的用戶賬號爲test

如果在添加用戶時提示沒有權限或者用戶已存在? 看文章最後

  • 設置密碼:
    passwd test

  • 如果不允許該用戶通過ssh登錄服務器,則:
    usermod -s /sbin/nologin test

  • 恢復該用戶可以通過ssh登錄服務器:
    usermod -s /sbin/bash test

這個方式不需要創建用戶組,按照用戶組的方式嘗試之後,總是有點問題,不是目錄權限問題到值的無法連接就是對指定目錄的操作不對

2. 創建權限目錄

  • 創建上面創建用戶時指定的默認目錄:
    mkdir -p /server/data

3. Sftp配置

使用linux自帶的sftp

  1. 修改sftp配置文件
    vi /etc/ssh/sshd_config

    • 修改文件這一行配置
      # 將Subsystem sftp後面修改爲internal-sftp
      Subsystem sftp internal-sftp
      
  2. 增加用戶的sftp目錄和訪問配置,在文件的最後面增加:

    Match user test
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    ChrootDirectory /server/data  
    
    
    • 說明:
      • Match user test 指定賬號
      • AllowTcpForwarding 指定不能ssh登錄
      • ChrootDirectory 指定該賬戶的根目錄
  3. 刷新配置
    systemctl restart sshd.service
    或者:
    service ssh restart

  4. 創建子目錄

    • 這個子目錄是sftp用戶訪問之後看到的目錄
      mkdir /server/data/test

4. 權限配置

這一步的權限需要配置好,否則會出現連接不上的問題:Connection reset by peer

  • 必須指定上層目錄爲root所屬,並且設置755權限
    chown root /server/data
    chmod 755 /server/data

/server/data 的目錄所屬需要是root纔可以

  • 設置子目錄的權限爲當前創建的用戶,然後纔有讀寫權限
    chown test /server/data/test
    chmod 755 /server/data/test

    • 注意:
      • 如果下面創建的子目錄還是沒有權限,那麼還需要加上下面的步驟:
        cd /server/data/
        chown -R test test/
        chmod -R 755 test/
        這樣,創建出來的子目錄就都可以上傳下載

這樣就已經配置好一個用戶了,並且設置了對應的權限目錄,其他的用戶,重複上面的操作步驟,並修改用戶名和目錄即可

可以通過sftp客戶端或者命令行訪問進行測試

問題解決:

  1. 在linux下用useradd添加用戶時,出現錯誤:Creating mailbox file: 文件已存在?
  • 原來linux下添加用戶後,會在系統裏自動加一個郵箱(系統郵箱),路徑是:/var/spool/mail/用戶名, 可以直接用命令rm -rf /var/spool/mail/用戶名刪除用戶,然後執行命令:userdel 用戶名,然後就可以再重新添加用戶
  1. root用戶在創建用戶時提示沒有權限?
  • 由於,su root或者sudo su只改變root權限不改變環境變量,而su -root指令就可以。su -root可以取得ROOT用戶的權限和環境。所以需要再執行一項:su - 即可解決

注意:
還有一個小問題就是如果是程序在sftp中生成了文件或者創建了文件夾,那麼sftp用戶是沒有權限讀取的,具體的解決方法,可以看這裏[]

發佈了62 篇原創文章 · 獲贊 17 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章