为什么 rm 命令的行为是这样的,我会造成什么损害

zig*_*ggy 0 unix shell solaris

假设 am 在目录 /home/userA

有一个指向 /u/xml/xmlfiles 的环境变量 $XMLFILES。$XMLFILES 环境变量位于用户 A 的环境/配置文件中

我以 userA 身份登录,然后“su”进入 userB,然后 cd 进入 /home/userB/testdata。

我没有意识到我是 userB 所以我发出了命令

rm $XMLFILES/*
Run Code Online (Sandbox Code Playgroud)

突然间我看到了这个

bash-3.00$ rm $XMLFILES/*
rm: /bin not removed: Permission denied
rm: /boot is a directory
rm: /cdrom is a directory
rm: /dev is a directory
rm: /devices is a directory
rm: /etc is a directory
rm: /export is a directory
rm: /home is a directory
rm: /kernel is a directory
rm: /lib is a directory
rm: /lost+found is a directory
rm: /mnt is a directory
rm: /net is a directory
rm: /noffprotect: override protection 644 (yes/no)? ^C
Run Code Online (Sandbox Code Playgroud)

我一看到覆盖保护消息就按下了 [CTRL+C]。我认为由于 $XMLFILES 为空,因为我以 userB 身份登录,因此发出的命令实际上是

rm *
Run Code Online (Sandbox Code Playgroud)

现在我不明白的是为什么它尝试从根文件夹中删除所有内容?因为我在 /home/userB 中,它是否应该尝试删除“/home/userB”顶级中的所有内容?rm 命令甚至不是递归删除。

鉴于我登录的用户不是 root 用户,这会造成任何损害吗?

Ign*_*ams 6

不,由于$XMLFILES是空的,它试图删除/*. 所能做的就是从根目录中删除文件,普通用户一开始就不能创建。