Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 对ps隐藏参数_Unix_Command Line - Fatal编程技术网

Unix 对ps隐藏参数

Unix 对ps隐藏参数,unix,command-line,Unix,Command Line,我想对其他用户隐藏/伪装我的ssh命令 例如: ssh user@host -i /my/private/key 不幸的是,这将出现在ps列表中,其他用户将能够看到我正在使用的私钥文件。有办法解决这个问题吗 (他们以与我相同的用户身份登录)不允许他们知道私钥文件的位置并不是什么安全功能-他们真的不应该拥有对它的读取权限,所以他们是否知道它在哪里并不重要。一般来说,如果您可以控制应用程序的源代码,那么您可以覆盖包含命令行参数的内存位置,这样您就可以将它们修改为“无害的” strncpy(argv

我想对其他用户隐藏/伪装我的ssh命令

例如:

ssh user@host -i /my/private/key
不幸的是,这将出现在ps列表中,其他用户将能够看到我正在使用的私钥文件。有办法解决这个问题吗


(他们以与我相同的用户身份登录)

不允许他们知道私钥文件的位置并不是什么安全功能-他们真的不应该拥有对它的读取权限,所以他们是否知道它在哪里并不重要。一般来说,如果您可以控制应用程序的源代码,那么您可以覆盖包含命令行参数的内存位置,这样您就可以将它们修改为“无害的”

strncpy(argv[0], "mynewcmdlinehere", strlen(argv[0]));

不知道其他Unice,抱歉。

隐藏命令行需要一个脚本,所以它是Catch-22,因为具有相同用户的其他ppl将有权访问该脚本


解决方案非常简单:使用带有密码短语的键。

如果他们以您的身份登录,您基本上无法阻止他们学习这些信息。如果您在Linux上,他们可以访问您的/proc条目,并且可以轻松地了解这些信息

他们还可以:

  • 删除所有文件
  • 以你的名义发送邮件侮辱你公司的首席执行官
  • 访问所有文件和命令行历史记录(如果有)
  • 无数其他事情

这不是保护自己的可行方法。您需要首先解决相同的用户问题。

从我的记忆中,我记得很久以前做过类似的事情

首先,创建一个名为ps的shell脚本,它运行ps并将grep除包含ssh(或匹配的内容)的行之外的所有行,并将其放在一个安全的位置(~/bin/ps)

将~/bin/添加到您的路径中,作为第一个要搜索的位置

当然,他们仍然可以显式地使用/usr/bin/ps(或其位置所在的任何地方)


作为一个警告,这都是从内存,我没有一个Unix的盒子来测试它。。。抱歉

即使您隐藏了命令行,用户也可以运行lsof来查看ssh进程打开的所有文件,其中包括标识文件。如果隐藏命令行确实是最终目标,那么您可以启动一个密钥代理,将标识加载到代理中,然后使用该代理进行ssh。代理使用的套接字的路径由环境变量控制


不过,这绝不是安全问题。Pax是对的,“以同一用户身份登录”问题才是真正应该解决的问题。停止使用其他人的帐户。;)

您可以通过由0700保护的~/.ssh/config文件设置私钥。 下面是~/.ssh/config的示例:

Host myhost.com
  IdentityFile /home/maxcohan/.ssh/github.com.id_rsa

即使在使用带有密码短语的密钥时,以同一用户身份运行的另一个进程也可以从ssh代理或ssh进程中读取密码短语和/或解密的密钥。没有针对使用相同uid运行的进程的安全措施。这不会阻止其他“用户”(出于未知的错误原因使用相同uid的用户)直接使用原始“ps”——也不可能阻止。注意:如果不想共享相同的机密,则不应共享相同的登录ID。用户ID是针对个人的,而不是针对团体的。他说每个人都使用相同的用户帐户。chmod不起作用,我不知道。很容易。非常感谢。我在linux上试过,但ps仍然显示
a.out
。我错过什么了吗?