【问题标题】:I have problems with permissions using xargs with rm我在使用 xargs 和 rm 时遇到权限问题
【发布时间】:2022-01-20 14:26:48
【问题描述】:

我有 remove.txt 文件,其中包含 a.txtb.txt 作为文本。所有文件都在同一个文件夹中,我为所有这些文件设置了 chmod 777。现在,当我运行 sudo cat remove.txt | xargs rm 对于删除 remove.txt 中列出的这两个文件,我得到了 Permission denied。我究竟做错了什么?我想现在的问题是把 sudo 放在哪里?

【问题讨论】:

  • for all those files.他们所在的目录呢?
  • 对于文件的删除,与目录的权限有关,与文件的权限无关。请edit您的问题并显示ls -ld . a.txt b.txt的输出。如果你想以 root 身份运行rm,你需要cat remove.txt | sudo xargs rm 或者没有可能没用的catsudo xargs rm < remove.txt
  • 非常感谢,我一直在学习一些教程,但被 xargs 卡住了。猫删除.txt | sudo xargs rm 做到了。和 sudo xargs rm
  • 你应该非常小心 xargs 和 rm 。这里有两个安全问题:(1)如果你不严格控制'remove.txt'的生成,有人可能会注入一个你真的不想删除的文件名,例如/tmp/passwd。 (2) xargs 依赖于换行符和空格,但您的文件名可能包含特殊字符和空格。更安全的方法是使用 '\0' 字符作为分隔符,并改为调用 xargs -0 rm。要了解我的意思,请尝试:touch a b "a b" ; echo "a b" | xargs ls -l,它将显示两个文件,而不是原始的“a b”文件。

标签: linux pipe xargs rm


【解决方案1】:
sudo cat remove.txt |  xargs sudo rm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-14
    • 2017-01-16
    • 2020-07-23
    • 2020-12-23
    • 2021-11-11
    相关资源
    最近更新 更多