15-7

提权时选择可读写目录,为何尽量不用带空格的目录

1. 命令行解析问题

在 Linux、Windows 等操作系统的命令行环境中,空格被视为命令、参数和选项的分隔符

例如,你想将一个文件写入 /tmp/my file/ 目录:

  • 错误的做法echo "hello" > /tmp/my file/test.txt
    • 命令行会将其解释为:
    • 命令echo "hello"
    • 参数>
    • 参数/tmp/my
    • 参数file/test.txt
    • 显然,这会导致命令执行失败,因为 /tmp/my 目录不存在
  • 正确的做法:为了让命令行将带空格的路径看作一个整体,需要用引号将路径包裹起来
    • echo "hello" > "/tmp/my file/test.txt"
    • echo "hello" > /tmp/"my file"/test.txt
    • echo "hello" > /tmp/my file/test.txt