我使用 FreeBSD 作为本地 Web 服务器,并且想使用 SFTP 访问项目文件。我创建了一个用户,但我不希望用户能够在其主目录之上导航。
用户外壳:/usr/sbin/nologin
用户主页:/usr/home/username
我能够以用户身份建立 SFTP 连接,但我需要使项目文件可访问以进行操作。
项目文件位于/usr/local/www/nginx/projectname
根据相关问题的回答,我尝试了:
mount_nullfs /usr/local/www/nginx/projectname /usr/home/username
但这只会导致“不允许操作”。
我已经搜索了一段时间,无法确定为什么这不起作用。我怎样才能做到这一点?
编辑:
- 尝试以 root 身份安装
- 我能够将用户 chroot home 到项目目录
- 应该提到这个服务器是 freenas 中的一个监狱,但是两个目录都在同一服务器中。
答案1
首先,我假设您sshd_config
有以下内容:
Port 22
PermitRootLogin no
ChallengeResponseAuthentication no
UsePAM no
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
其次,我假设您正在以普通用户身份进行 nullfs 挂载。通常不允许普通用户挂载文件系统。如果我尝试以 root 身份 - 它对我有用。
以 root 身份(sudo
或su
)对其进行测试,以确认路径正确。然后将其添加到/etc/fstab
/usr/local/www/nginx/projectname /usr/home/username nullfs rw 0 0
那应该足够了。
在这种情况下,允许普通用户安装任何东西是没有意义的。但这可以通过设置vfs.usermount=1
并/etc/sysctl.conf
添加devfs
规则(如果/dev/
需要)来完成。
最后 - 如果您正在使用,ChrootDirectory
您可以简单地将用户主页直接设置为/usr/local/www/nginx/projectname
.使用 nullfs 的间接寻址可能会提供额外的安全层。但如果你相信你的sshd_config
,那就足够了。
答案2
您必须修改监狱配置以允许在监狱内安装 nullfs。出于安全原因,监狱内通常不允许这样做。我建议反对。
您可以在主机系统上配置 nullfs 挂载(在 /etc/fstab 中),但对于 FreeNAS 来说这会更困难,因为它存储配置的方式。