我正在使用libssh连接到远程机器并执行命令。
连接工作正常,但问题是:在远程机器上,我连接时正在运行的 bash 是 rbash。当我发送ps | grep ungreppable_phrase
到另一台机器上执行时,输出如下:
root 25989 25987 0 07:47 ? 00:00:00 rbash -c ps -ef | grep ungreppable_phrase
(我从该列表中删除了 grep 命令)
所以,很明显,rbash
是远程shell。
现在,rbash 手册页告诉我们在应用任何 rbash 限制之前读取启动文件。因此,如果我的任何启动文件(/etc/profile、~/.bash_profile;~/.bash_user 或 ~/.profile)包含 的定义PATH
,则在我运行命令时该定义应该可见。特别是,如果其中一个目录中有一些可执行文件PATH
,我应该能够运行它。
这是我的 .profile 文件中的一行:
PATH=/home/my_user/bin
不知何故,我设法ls
在那里运行。它确实包含可执行文件。
我的 ~/.profile 是要获取的最后一个文件,它不包含任何其他文件的来源。也没有对PATH
.
但是我得到一个“找不到命令”错误(或者看起来很像的东西,回声 $? 返回 127)。
有人能告诉我为什么我的 .profile 文件在我远程登录时似乎没有来源吗?是因为 libssh 中的一些代码吗?我正在尝试探索它以查找是否有一些特殊的选项传递给 rbash,而我在上面的 grep 中看不到这些选项。
(由于我们处于 rbash 模式,我不能简单地要求更改 PATH)
非常感谢,帕斯卡