Adi*_*sak 10 linux ssh sftp centos
我有一个仅限 sftp 用户的设置:
Match Group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)
我在 secure.log 中收到以下消息:
fatal: bad ownership or modes for chroot directory
Run Code Online (Sandbox Code Playgroud)
使用 match 关键字会带来一些安全问题……目录需要由 root 拥有,目录需要是 chmod 755 (drwxr-xr-x)。因此,如果文件夹仅对用户 root 可写并且由于 ssh 的安全性将其设置为对组不可写,则用户不可能对文件夹具有写入权限。
有人知道一个好的工作吗?
我们最近找到了一种解决方法,如下所示:
...
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)
root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*
Run Code Online (Sandbox Code Playgroud)
现在/home满足ChrootDirectory限制用户不能列出的要求,但是sftponly如果他们的家目录照常设置,用户将无法登录(/home/$LOGNAME):在chrooted环境下,他们的家目录不在里面,/home而是直接在根 ( /)
将受限用户的家设置为它们在 chroot 下的显示方式:
root@server:~ # usermod -d /username username
Run Code Online (Sandbox Code Playgroud)
如果任何不受限制的用户或某些管理脚本使用 bash 的波浪号扩展,就像~username它会扩展到/username现在一样,这不是什么意思。
此外,创建sftponly用户的管理员必须记住使用非默认主页。可以用脚本解决。管理员必须记住使用。
这是我们最终使用的前一个的替代方案:
root@server:~ # ln -s . /home/home
Run Code Online (Sandbox Code Playgroud)
那就是在/home它自己的目录名中创建一个符号链接。现在在 chroot 下/home/username指向与没有 chroot 相同的目录。对于使用 sftp 登录的受限用户,它将显示为/username. 该目录对其所有者(受限用户)是可写的。受限用户无法按名称列出任何兄弟的父目录或主目录。
sftponly用户唯一特别之处在于其参与sftponly群组。我们发现它比解决方法 1 更容易处理。
/home/home/home层次结构并遵循符号链接的脚本。我在我们的服务器上有相同的设置。我们使用相同的 SSHD 配置。用户的主目录由 root 拥有,其中有文件夹documents并由public_html各自的用户拥有。然后,用户使用 SFTP 登录并写入这些文件夹(而不是直接写入主目录)。由于他们不允许使用 SSH,所以它完全可以工作。你可以在 /etc/skel/ 中调整为新用户创建哪些目录(至少在 openSUSE 中,我对其他发行版不太熟悉)。
另一种可能性是ACL(openSUSE 文档)——它可以为各个用户添加对其主目录的写权限。
| 归档时间: |
|
| 查看次数: |
28756 次 |
| 最近记录: |