好的,设置有点复杂。别怪我,我不是系统管理员。
这是情况。有一台机器可以从网络外部通过SSH登录。我只能使用我的私钥作为root远程登录(是的,你没听错)。我知道通常是先用用户登录再提高权限,但在这种情况下,我必须反过来做。
问题是,我想使用SSHFS远程挂载文件系统。我已经完美地解决了这个问题。然而,我不想每个我修改的文件都反映出root权限。我想先取消提权(su到一个用户账户)。
有人知道我如何在SSHFS中做到这一点吗?
好的,设置有点复杂。别怪我,我不是系统管理员。
这是情况。有一台机器可以从网络外部通过SSH登录。我只能使用我的私钥作为root远程登录(是的,你没听错)。我知道通常是先用用户登录再提高权限,但在这种情况下,我必须反过来做。
问题是,我想使用SSHFS远程挂载文件系统。我已经完美地解决了这个问题。然而,我不想每个我修改的文件都反映出root权限。我想先取消提权(su到一个用户账户)。
有人知道我如何在SSHFS中做到这一点吗?
#!/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。
sudo
之后,没人再记得 su
了吗?一般情况下,su less-privileged_user -c '/usr/lib/openssh/sftp-server'
不需要 root 密码。 - ephemientsshfs的手册建议传递
-o uid=$YOURUID -o gid=$YOURGID
在你的sshfs调用中,应该将你创建的文件的用户/组设置为该uid/gid。显然,你需要在远程系统上找到它们。