在Ubuntu 14上设置仅SFTP用户帐户

介绍

某些方案要求您仅通过FTP创建具有对单个目录的读写访问权限的用户。本文将向您展示如何创建此类用户。他们将无法导航到其主目录之外,无法通过SSH登录到服务器或执行Shell命令。

设置SFTP组和服务

  1. 创建sftpusers组。

    sudo groupadd sftpusers
    
  2. 注释掉从sshd配置文件禁用SFTP访问的设置。

    sudo sed -i "s/Subsystem sftp \/usr\/lib\/openssh\/sftp-server/#Subsystem sftp \/usr\/lib\/openssh\/sftp-server/" /etc/ssh/sshd_config
    
  3. 打开sshd配置文件sudo nano /etc/ssh/sshd_config,在下面的代码段中添加,然后退出(Ctrl + X-> Y-> Hit Enter)

    #enable sftp
    Subsystem sftp internal-sftp
    
    Match Group sftpusers
       ChrootDirectory %h #set the home directory
       ForceCommand internal-sftp
       X11Forwarding no
       AllowTCPForwarding no
       PasswordAuthentication yes
    
  4. 重新启动ssh。

    sudo service ssh restart
    

创建用户

对您要添加到服务器的每个仅SFTP用户重复以下过程。

# create user
sudo adduser sftpuser1

# prevent ssh login & assign SFTP group
sudo usermod -g sftpusers sftpuser1
sudo usermod -s /bin/nologin sftpuser1

# chroot user (so they only see their directory after login)
sudo chown root:sftpuser1 /home/sftpuser1
sudo chmod 755 /home/sftpuser1

sudo mkdir /home/sftpuser1/uploads
sudo chown sftpuser1:sftpuser1 /home/sftpuser1/uploads
sudo chmod 755 /home/sftpuser1/uploads

您可以通过将以上内容包装到一个函数中并通过(1)运行将其添加到您的bashprofile中,来更快地创建用户sudo nano ~/.bash_profile。(2)在其下方添加代码段;(3)运行source ~/.bash_profile

之后,创建新的SFTP用户变得非常容易,就像运行命令create_sftp_user以及用户名作为其参数一样。

# usage: create_sftp_user <username>
function create_sftp_user() {
    # create user
    sudo adduser $1

    # prevent ssh login & assign SFTP group
    sudo usermod -g sftpusers $1
    sudo usermod -s /bin/nologin $1

    # chroot user (so they only see their directory after login)
    sudo chown root:$1 /home/$1
    sudo chmod 755 /home/$1

    sudo mkdir /home/$1/uploads
    sudo chown $1:$1 /home/$1/uploads
    sudo chmod 755 /home/$1/uploads
}

测试以确保您创建的用户可以通过SFTP连接到服务器注意:使用SFTP而不是FTP 连接)

由Lami Adabonyan撰写

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息