AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-376817

db-inf's questions

Martin Hope
db-inf
Asked: 2021-11-28 02:52:21 +0800 CST

管道连接到另一个终端过程的标准输入的危险

  • 0

出于恶意,我打开了 2 个终端,每个终端都运行 bash shell。在第一个我输入:

$ echo $$
11458

在第二个:

$ echo -n "echo this command" >> /proc/11458/fd/0

然后这个文本echo this command确实通过管道传送到第一个终端上的提示符。但是在第一个终端中输入时,该文本不会作为命令执行,我只是得到一个新的提示。

在第二次尝试中,我在第一个终端中执行了这个命令:

$ read line;echo $line

在读取等待输入时,我再次/proc/11458/fd/0在第二个终端中回显一些文本。该文本确实出现在第一个终端上,但是在按下<enter>第一个终端时,read终止,并且echo $line显示没有读取任何输入。

所以我仍然没有找到伤害的方法;我所能做的就是从第二个终端修改第一个终端上的文本。当然,第一个终端上的屏幕阅读器一定要选择它。通过屏幕阅读器,我正在考虑鼠标选择或终端功能,例如Save Contents ...;我都试过了。

但是,如果我还知道如何将文件结尾或其他控制字符回显到第一个终端的stdin,我就不会为第一个终端中的进程搞得一团糟吗?

pipe stdin
  • 2 个回答
  • 253 Views
Martin Hope
db-inf
Asked: 2021-11-18 03:01:55 +0800 CST

对数组元素进行一元测试 -v

  • 8

在 bash 中,带有一元测试的条件表达式-v myvariable测试变量myvariable是否已设置。请注意,myvariable不应通过以美元为前缀来扩展它,所以不是 $myvariable. 现在我发现对于数组元素,条件表达式-v myarray[index]也可以很好地工作,而无需完整的扩展语法${myarray[$index]}。尝试这个:

    myarray[2]=myvalue
    for i in 1 2 3
    do
        [ -v myarray\[i] ] && echo element $i is set
    done

(注意转义\[以防止通配符,作为使用引号的替代方法)

给出所需的输出:

    element 2 is set

问题 这种行为是否可以安全使用,也就是这种记录在案的行为吗?

附录 阅读 Stéphane Chazelas 的答案https://unix.stackexchange.com/a/677920/376817后,我扩展了我的示例:

    myarray[1]=val myarray[2]=val myarray[3]=val myarray[4]=val myarray[5]=val myarray[6]="" myarray[2]=""
    unset myarray[3] myarray[4] myarray[5]
    touch myarray4 myarrayi
    myarray4=val myarrayi=val

然后

    for i in {0..7}; do [ -v myarray\[i] ] && echo element $i is set; done

给

    element 1 is set
    element 2 is set
    element 6 is set

不引用或转义索引表达式[i]:

    for i in {0..7}; do [ -v myarray[i] ] && echo element $i is set; done

给

    element 0 is set
    element 1 is set
    element 2 is set
    element 3 is set
    element 4 is set
    element 5 is set
    element 6 is set
    element 7 is set

与变量myarrayiunset 相同:

    unset myarrayi
    for i in {0..7}; do [ -v myarray[i] ] && echo element $i is set; done

给

    %nothing%

最后将索引扩展为$i(仍然没有引用或转义括号):

    for i in {0..7}; do [ -v myarray[$i] ] && echo element $i is set; done

它给

    element 1 is set
    element 2 is set
    element 4 is set

因为

    ls -l myarray*

节目

    -rw-rw-r-- 1 me us 0 nov 17 15:37 myarray4
    -rw-rw-r-- 1 me us 0 nov 17 15:37 myarrayi
bash array
  • 1 个回答
  • 402 Views
Martin Hope
db-inf
Asked: 2020-02-18 07:59:34 +0800 CST

我可以在不将最后一个挂载点写入文件系统的情况下挂载 ext4 吗?

  • 3

我有一个旧的ext4磁盘分区,我必须在不打扰它的情况下对其进行调查。因此,我将完整的分区复制到了一个映像文件中,并在继续调查的同时挂载了该映像文件。

现在,虽然我不写入已挂载的文件系统,但我必须以读/写访问权限来挂载它,因为其中一个程序对我打算做的事情做出假设,并且需要写访问权限,即使我不打算写给它。你知道那种“智能”程序。

现在的问题是,当挂载一个ext4文件系统读/写时,最后一个挂载点被写入文件系统本身,即mount命令改变了我的镜像文件,包括文件访问时间和文件修改时间。由于许多其他原因,这很烦人。我找不到避免这种情况mount(8)的选项。ext4(5)

是否有另一种方法可以通过读/写访问权限进行挂载,而无需将挂载命令写入文件系统?

mount ext4
  • 1 个回答
  • 393 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve