sftp命令支持子系统选项(-s),该选项允许远程用户选择远程sftp-server可执行文件,并可以选择在此过程中升级到sudo。
sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa
此命令遵循〜/ .ssh / config中的ssh客户端选项,允许透明使用pubkey以及自定义端口和用户设置。
但是,它subsystem
似乎是特定于sftp的,因此未在配置文件中设置它,因此它似乎必须设置为sftp的命令行选项。
但是,某些工具会包装sftp调用,因此无法设置子系统选项,因此会限制用户访问。
通常是否有一些配置选项文件可用于openssh sftp设置?
是否有一些配置文件可以影响gnome nautilus调用sftp进行文件管理器集成的方式?
更新可能的骇客但功能正常的解决方案是...
因此,事实证明,没有明显的sftp将用于选项的配置文件,因此我最终修改了通用包装脚本,通过将其放置在我的路径中为选定的主机显式添加了该选项。
#!/bin/bash
# Generic shell wrapper that performs an operation
OPERATION=/usr/bin/sftp
args=("$@")
#the final arg should contain a hostname of the form [user@]host[:path]
case "${args[@]: -1}" in
myserver.com)
exec $OPERATION -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" "$args"
;;
*)
exec $OPERATION "$args"
;;
esac
但是,根据您的sudoers文件,通常要运行sudo需要一个tty,因此您必须将ssh传递“ -t”选项,然后您猜怎么着?没有ssh客户端命令的配置选项,该命令在ssh_config或〜/ .ssh / config文件中有效。哈哈。
因此,我编写了另一个包装器脚本来提供...。
#!/bin/bash
# Generic shell wrapper that performs an operation
OPERATION=/usr/bin/ssh
args=("$@")
#locating the hostname is not so simple with ssh
exec $OPERATION -tt "$args"
虽然,现在我很难让sftp使用我的〜/ bin / ssh包装文件,因为它似乎已硬编码到sftp中并由选项“ -S”控制
你的目标是什么?我不明白您的命令有什么好处。
—
jirib
按照我们的基本构建,我在没有root用户登录的情况下运行ssh,因此它允许sudo用户通过与gnome gvfs集成的工具对具有root权限的文件进行更改。
—
汤姆H