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

ong*_*gie 16 permissions sftp chroot

我已经搜索了许多网站和论坛,了解如何使用 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
Run Code Online (Sandbox Code Playgroud)

创建文件夹

mkdir /var/www/sites
Run Code Online (Sandbox Code Playgroud)

创建用户和组

useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader
Run Code Online (Sandbox Code Playgroud)

权限和所有权

chown root:root /var/www
chmod 755 /var/www/sites
Run Code Online (Sandbox Code Playgroud)

现在,通过这些设置,用户上传者可以通过 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
Run Code Online (Sandbox Code Playgroud)

我在试图解决这个问题时很矛盾,如果有人能指出我正确的方向,我将不胜感激。

谢谢你。

ong*_*gie 18

找到了解决办法。用户被判入狱/var/www/sites。然后我创建了另一个文件夹/var/www/sites/site1

我用:

chown root:webmaster /var/www/sites/site1 
chmod 775 /var/www/sites/site1
Run Code Online (Sandbox Code Playgroud)

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

如果用户需要写访问/var/www/sites,则必须在监狱的用户/var/www拥有root:root所有权和755的权限,然后你需要给/var/www/sites根的所有权:(您的组)和775权限。