为什么 netcat-openbsd 中缺少“-e”选项?

p1x*_*xel 16 linux openbsd command-line netcat ubuntu

为什么包装中-e缺少该选项netcat-openbsd?有一个netcat-traditional包,但它缺少 OpenBSD 包中的许多功能。我正在运行 Linux Mint 16。

有谁知道为什么缺少这个?它删除了netcat的一个很大的特性。

slh*_*hck 19

因为有各种版本的程序。

netcat与 POSIX 中指定的许多其他标准实用程序不同,没有描述必须支持哪些选项的“标准” 。您有netcat来自 OpenBSD、FreeBSD、GNU netcat等的版本。

对于 OpenBSD 变体,联机帮助页指出

There is no -c or -e option in this netcat, but you still can execute a
 command after connection being established by redirecting file descriptors.
 Be cautious here because opening a port and let anyone connected execute
 arbitrary command on your site is DANGEROUS. If you really need to do this,
 here is an example:

 On ‘server’ side:

       $ rm -f /tmp/f; mkfifo /tmp/f
       $ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

 On ‘client’ side:

       $ nc host.example.com 1234
       $ (shell prompt from host.example.com)

 By doing this, you create a fifo at /tmp/f and make nc listen at port 1234
 of address 127.0.0.1 on ‘server’ side, when a ‘client’ establishes a
 connection successfully to that port, /bin/sh gets executed on ‘server’
 side and the shell prompt is given to ‘client’ side.

 When connection is terminated, nc quits as well. Use -k if you want it keep
 listening, but if the command quits this option won't restart it or keep nc
 running. Also don't forget to remove the file descriptor once you don't
 need it anymore:

       $ rm -f /tmp/f
Run Code Online (Sandbox Code Playgroud)