3

好的,设置有点复杂。不要怪我,我不是系统管理员。

这是情况。我可以从网络外部通过 SSH 连接一台机器。我只能使用我的私钥以 root 身份远程登录(是的,你没听错)。我知道以用户身份登录然后提升权限更为典型,但在这种情况下,我必须反其道而行之。

问题是我想使用 SSHFS 来远程挂载文件系统。我有这个完美的工作。但是,我不希望我处理的每个文件都反映 root 权限。我想先降级(su 到用户帐户)。

有人知道我如何使用 SSHFS 做到这一点吗?

4

2 回答 2

8

您可以创建一个脚本来拦截对远程机器上 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。

于 2009-07-16T08:06:24.240 回答
1

sshfs 联机帮助页建议通过

-o uid=$YOURUID -o gid=$YOURGID

对您的 sshfs 调用应将您创建的文件的用户/组设置为该 uid/gid。显然,您需要在远程系统上找到这些。

于 2009-07-16T06:14:12.547 回答