在 Ubuntu 18.x 上,我想阻止 /var/www/html 目录中的用户
我通过以下方式创建了一个用户:
useradd ftpuser
passwd ftpuser
usermod -G www-data ftpuser
usermod -d /var/www/html ftpuser
chown ftpuser:www-data /var/www/html
然后在/etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match User ftpuser
ChrootDirectory /var/www/html
PasswordAuthentication yes
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
然后:
chown root /var/www/*
chown root:root /var/www/html
chown ftpuser:www-data /var/www/html*
我连接上了,但卡在了 html 文件夹中。但我无法创建和编辑文件。我想为 ftpuser 分配完全权限,但无法从 html 文件夹升级。
从这个答案给出命令后
setfacl -mg:ftp用户:rwx /var/www/html
我无法再连接。
Error: Network error: Software caused connection abort
Error: Unable to connect to the server
编辑
ls -la /var/www/html
total 28
drwxr-xr-x 4 ftpuser www-data 4096 Mar 9 14:54 .
drwxr-xr-x 3 root root 4096 Mar 9 14:31 ..
-rw-rw-r-- 1 ftpuser ftpuser 0 Mar 9 14:54 aa
drwx------ 2 ftpuser ftpuser 4096 Mar 9 14:52 .cache
drwx------ 3 ftpuser ftpuser 4096 Mar 9 14:52 .gnupg
-rw-r--r-- 1 root root 10918 Mar 9 14:32 index.html
答案1
ChrootDirectory /var/www/html
...
ls -la /var/www/html
drwxr-xr-x 4 ftpuser www-data 4096 Mar 9 14:54 .
SSH 服务器ChrootDirectory 选项要求 chroot 目录属于 root:
Chroot目录
指定验证后 chroot(2) 到的目录的路径名。在会话启动时,sshd(8) 检查路径名的所有组件是否都是根拥有的目录,并且其他任何用户或组都无法对其进行写入。
如果要/var/www/html
成为 chroot 目录,则它必须由 root 拥有,并且不能是组或世界可写的。html 目录可能包含其他用户可写的文件和子目录,但 html 目录本身不能。
根据/var/www
目录中的内容,您可能能够将其设为 chroot 目录。
或者,你可以创建一个新目录作为 chroot 目录,然后使用绑定挂载使 /var/www/html 可以从 chroot 目录内部访问。