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


14

我在许多网站和论坛上搜寻了如何使用CHROOT设置被监禁到某个目录的SFTP用户。这是我遵循的步骤,但似乎无法获得写许可权才能工作。

设定

sshd_config

#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进入主目录,但无法写入该目录。

发生2种典型错误,我无法登录或没有写权限。

登录错误

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

我很想弄清楚这一点,如果有人能指出我正确的方向,我将不胜感激。

谢谢。

Answers:


16

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

我用:

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

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

如果用户需要对的写入权限/var/www/sites,则必须/var/www将拥有root:root所有权和权限为755 的用户入狱。然后,需要授予/var/www/sitesroot :(您的组)的所有权和权限为775。


1

也许最大的解决方案是:

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 User dev1
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

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

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

Hth,法布里佐


重新定义您的最终代码块:Matches支持以逗号分隔的列表中的多个目标,因此我们可以通过标题为Match User dev1,dev2
underscore_d

1
那么,如何设置它以使其锁定到具有读/写访问权限的文件夹?
凯文·伯恩斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.