如何在PuTTY的psftp.exe中使用sudo su

3

使用 (PuTTY) PSFTP.exe 可以打开一个 shell 脚本,在 Linux 上执行特定的操作。

在这个例子中,我使用 psftp.exe 打开了 get30.txt 文件。

%%PROJECT/ROOT_DIRECTORY%%\PuTTY\psftp.exe user@domain.nl -pw password -b "%%PROJECT/ROOT_DIRECTORY%%\Scripts\%%ENVIRONMENT/NAME%%\get30.txt"

get30.txt文件中,我有以下操作:
sudo su -l4097gps
cd /appl/gps/RIT/IN/30/RAP-T1
chmod 777 GP*.*
get -r /appl/gps/RIT/IN/30/RAP-T1
rm /appl/gps/RIT/IN/30/RAP-T1/*
quit

很遗憾,psftp 不支持识别 sudo su 命令。

在以自己的用户身份登录后,如何切换到不同的用户并执行 sudo 命令呢?

2个回答

5
很抱歉,这是不可能的。你发送的那些命令不是任意的shell命令,而是SFTP命令。它们看起来像shell命令(如rm、cd等),但只是模拟了shell的等效命令。大多数SFTP实现中没有'sudo'命令,因此你不能这样做。
唯一的例外是,如果你使用支持'su'的自定义SFTP服务器和客户端,例如Van Dyke软件提供的那种。然而,在那里你将使用'su',并需要进行身份验证,而不是使用'sudo'。
此外,请参阅serverfault stackoverflow上的这篇文章: 如何在sftp客户端上更改用户以获得更高的权限

只是补充一下,听起来 OP 可能把 SSH 和 SFTP 搞混了,这很正常,因为 SFTP 已经与 SSH 绑定在一起,但它是完全不同的协议。我完全同意编辑建议提高 SFTP 用户对他们正在尝试从中传输文件的文件或目录的权限。 - JNevill

3

sudo 是一个 shell 命令,而不是 SFTP 命令。

通常情况下,在 SFTP 协议中没有 sudo 或等效命令,也没有在 psftp 命令中。

但如果您连接到一个 OpenSSH 服务器,您可以使用以下命令指示其以提升的权限运行 SFTP 子系统/服务器:

sudo /bin/sftp-server

很遗憾,psftp 不允许您更改用于启动 SFTP 服务器的命令。您可以使用 WinSCP 替代:

open sftp://user:password@domain.nl/ -rawsettings SftpServer="sudo /bin/sftp-server"

但是,允许此工作的限制很多。特别是sudo可能不需要密码。有关详细信息,请参见WinSCP常见问题解答如何在登录后更改用户(例如su root)?
另请参阅将PuTTY PSFTP脚本转换为WinSCP脚本的指南converting PuTTY PSFTP script to WinSCP script(我是WinSCP的作者)

我看到的最佳答案是:)但是...在WinSCP中是否可以添加对sudo密码的支持? - Znik
1
@Znik 由于与SFTP协议存在冲突,无法提供完全支持。但是在某些限制条件下(如果sudo配置不需要TTY),它可能会起作用。您可以在https://winscp.net/tracker/1247上投票支持此功能。 - Martin Prikryl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接