好的,设置有点复杂。不要怪我,我不是系统管理员。
这是情况。我可以从网络外部通过 SSH 连接一台机器。我只能使用我的私钥以 root 身份远程登录(是的,你没听错)。我知道以用户身份登录然后提升权限更为典型,但在这种情况下,我必须反其道而行之。
问题是我想使用 SSHFS 来远程挂载文件系统。我有这个完美的工作。但是,我不希望我处理的每个文件都反映 root 权限。我想先降级(su 到用户帐户)。
有人知道我如何使用 SSHFS 做到这一点吗?
您可以创建一个脚本来拦截对远程机器上 sftp 子系统的调用。将以下脚本放在远程服务器上的某个位置,比如 /root/bin/sftp_intercept:
#!/bin/sh
exec sudo -u less_privileged_user /usr/lib/openssh/sftp-server
然后像这样拨打电话:
sshfs root@remote:dir mountpoint -o sftp_server=/root/bin/sftp_intercept
这应该会给出预期的结果。
您需要一个适当的 sudoers 条目才能使 sudo 工作而不提示输入密码,并且不要忘记“chmod 755 ~/bin/sftp_intercept”。
另外,确保 /usr/lib/openssh/sftp-server 确实是 sftp-server 的路径。如果不是,那么可能是 /usr/lib/sftp-server。
sshfs 联机帮助页建议通过
-o uid=$YOURUID -o gid=$YOURGID
对您的 sshfs 调用应将您创建的文件的用户/组设置为该 uid/gid。显然,您需要在远程系统上找到这些。