看似只是创build只读sshfslogin的一个技巧,只读属性由远程的~/.ssh/authorized_keys文件强制执行。
首先创build一个运行sftp-server -R的程序~/.ssh/ro-sftp-server ,其他任何选项都被传递。 然后像往常一样在远程的~/.ssh/authorized_keys文件中设置受限制的ssh密钥,除了添加命令限制:
no-X11-forwarding,no-agent-forwarding,no-pty,command= “~/.ssh/ro-sftp-server” ssh-rsa ...
最后,通过调用sshfs挂载目录。
sshfs -o ssh_command="ssh -i ~/.ssh/ro_key" \ -o sftp_server="~/.ssh/ro-sftp-server" \ -o idmap=mrmeow -o ro \ [email protected]:. ~/www/
大! 现在我怎么才能允许写入,但只有在询问密码之后才能写入。
我当然可以使用受密码保护但不受限制的密钥按照要求自动安装第二个可读写的sshfs卷。
我最终需要unionfs,mhddfs或类似的,使第二个目录出现在第一个,除了显然我需要他们都诚实装载。 🙁
关于如何实现这个“密码提示写”的任何想法? function?
保险丝将无法在terminal上提供密码提示,因为它无法访问它。 您可能可以让Fuse猜测您的X显示,并在popupGUI密码提示时阻止I / O。 一些桌面环境(Gnome / KDE)提供解锁密钥的钱包设施; 他们可能是一个好东西连接到。
但为了简单起见,我可以提出一个替代scheme。 也许在工作stream程的某个地方,您可以检查是否需要写入function,并使用脚本来提示提示。
例如,如果您使用Vim,则可以在写入文件之前进行检查:
autocmd BufWritePre *.c \ let targetfile = expand('%') | \ if !filewritable(targetfile) | \ exec "!~/bin/prompt_remount_foo_rw" | \ end
或者在一个奇幻的Coffeescript构build过程中,您可以在写入错误之后采取相应措施:
buildProcess.on "error", (e) -> if e.writeError prompt_remount_foo_rw().then(retryBuild)
要在没有X的情况下在单个terminal上得到提示,需要使用任何软件进行写入的支持。