小编tai*_*fwa的帖子

/usr/bin/env 作为shebang - 及其安全含义

我在几个地方看到了使用以下shebang行的建议

#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)

代替

#!/usr/bin/bash
Run Code Online (Sandbox Code Playgroud)

我的下意识反应是,“如果有人用这个可执行文件代替他们自己的 ~/.local/bin怎么办?” 该目录通常设置在系统范围路径之前的用户路径中。我认为这是作为一个安全问题提出的,通常是作为旁注而不是任何值得认真对待的事情,但我想测试这个理论。

为了尝试这个,我做了这样的事情:

echo -e "#!/usr/bin/python\nprint 'Hacked!'" > $HOME/.local/bin/bash
chmod 755 $HOME/.local/bin/bash
PATH=$HOME/.local/bin env bash
Run Code Online (Sandbox Code Playgroud)

这产生

/usr/bin/env: ‘bash’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

为了检查它是否捡到任何东西,我也做了

echo -e "#!/usr/bin/python\nprint 'Hacked!'" > $HOME/.local/bin/perl
chmod 755 $HOME/.local/bin/perl
PATH=$HOME/.local/bin env perl
Run Code Online (Sandbox Code Playgroud)

打印出来,正如我所料,

Hacked!
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么bash找不到替代品,但找到了替代品perl吗?这是某种“安全”措施(从我的角度来看)没有抓住要点吗?

编辑:因为我被提示:我不是问/usr/bin/env bash与使用/bin/bash. 我在问上面提到的问题。

EDIT2:一定是我做错了什么。今天再次尝试(使用显式路径env而不是隐式路径),没有这种“未找到”行为。

security bash environment-variables

14
推荐指数
1
解决办法
3778
查看次数

网络接口名称带有 at 符号 - 它是什么?

我试图寻找有关为什么网络接口名称会有 at 符号的信息,但到目前为止我得到的结果中有太多的噪音(我缺乏正确的搜索术语)

我在 Ubuntu 主机上有一个 LXC 容器。在容器内我运行并得到:

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
9: eth0@if10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:37:a0:7a brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.3.195/24 brd 10.0.3.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:fe37:a07a/64 scope link 
       valid_lft …
Run Code Online (Sandbox Code Playgroud)

lxc network-interface

12
推荐指数
1
解决办法
1634
查看次数