更改被监禁的 SFTP 的写入权限会导致登录被拒绝

更改被监禁的 SFTP 的写入权限会导致登录被拒绝

我浏览了许多网站和论坛,了解如何使用 CHROOT 设置被限制在某个目录中的 SFTP 用户。以下是我遵循的步骤,但我似乎无法获得写入权限。

设置

sshd_配置

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp


Match group webmaster
        X11Forwarding no
        ChrootDirectory %h
        AllowTcpForwarding no
        ForceCommand internal-sftp

创建文件夹

mkdir /var/www/sites

创建用户和组

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader

权限和所有权

chown root:root /var/www
chmod 755 /var/www/sites

现在,通过这些设置,用户上传者可以通过 SFTP 进入主目录,但无法写入该目录。

发生了两个典型错误,我无法登录或没有写权限。

登录错误

Error:    Network error: Software caused connection abort
Error:    Could not connect to server


Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions

我正在努力弄清楚这一点,如果有人能给我指明正确的方向,我将不胜感激。

谢谢。

答案1

找到解决方案了。用户被关进了/var/www/sites。然后我创建了另一个文件夹/var/www/sites/site1

我用:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1

这使得主目录具有正确的登录权限,然后能够写入下一个文件夹。

如果用户需要对 的写访问权限,那么您必须将具有所有权和权限 755 的/var/www/sites用户监禁在 。然后您需要授予root 的所有权:(您的组)和 775 的权限。/var/wwwroot:root/var/www/sites

答案2

也许最好的解决办法是:

mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite

...

chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}

chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite

添加用户:

useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data  dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2

然后,对于您创建的每个用户,添加一个 ssh 标签,如下所示:(您也可以使用示例中的“Match Group”指令,而不是“Match User”)

Match User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Match user dev2
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

因此您可以在 chrooted 环境中管理所需的所有用户。

Hth,法布里齐奥

相关内容