sftpコマンドはサブシステムオプション(-s)をサポートしているため、リモートユーザーはリモートsftp-server実行可能ファイルを選択し、オプションでプロセス中にsudoにアップグレードできます。
sftp -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server" xxx.yyy.zzz.aaa
このコマンドは ~/.ssh/config の ssh クライアントオプションを尊重し、公開鍵とカスタムポートとユーザー設定を透過的に使用できます。
ただし、subsystem
sftp専用のようでconfigファイルには設定されておらず、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_config または ~/.ssh/config ファイルに文書化された ssh クライアント・コマンドの構成オプションはありません。笑。
だから私は提供するために別のラッパースクリプトを書いた。
#!/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"
ただし、現在の ~/bin/ssh ラッパーファイルは sftp にハードコーディングされており、「-S」オプションで制御されているように見えるため、sftp で私の ~/bin/ssh ラッパーファイルを使用することはできません。
ベストアンサー1
ssh_config(5)
マニュアルページによると、sshd_config
設定ファイルからパスを設定できます。
Subsystem
Configures an external subsystem (e.g. file transfer daemon).
Arguments should be a subsystem name and a command (with optional
arguments) to execute upon subsystem request.
したがって、簡単に次のようにできるようです。
Subsystem sftp /usr/libexec/openssh/sftp-server -s "/usr/bin/sudo /usr/libexec/openssh/sftp-server"
この構成は明らかに仕える人、クライアント構成にはありません。これがあなたが探しているものですか?欠点は明らかすべてsftp 接続は root 権限で実行しようとするため、root 以外のファイルへのアクセスが中断されます。