这是关于我最近面临的问题。突然发布一个mv命令的Linux命令在各个方面都没有响应,下面是发生的问题的整体描述。
1)在目的地
中使用/ *执行移动命令# mv -f *.txt /*
2)命令已成功移动了所需的内容,但没有将其移动到/ var
3)与所需内容一起,它还将/文件夹的内容递归移动到/ var location。
4)这导致了正常OS操作所需的所有二进制文件和文件夹的移动
5)此移动通过SSH /控制台限制登录。
6)从/ var位置系统恢复文件夹后正常获取功能。
我尝试在测试Linux Box上复制问题并将其复制如下,
[root@TestVM001 ~]# ls -lrt
total 84
-rw-r--r-- 1 root root 4224 Feb 5 17:28 install.log.syslog
-rw-r--r-- 1 root root 38536 Feb 5 17:35 install.log
-rw------- 1 root root 955 Feb 5 17:35 anaconda-ks.cfg
drwxr-xr-x 2 root root 4096 Feb 5 20:03 Desktop
-rw-r--r-- 1 root root 119 Feb 5 20:28 ifcfg-eth0
-rw-r--r-- 1 root root 119 Feb 6 15:17 ifcfg-eth1
-rw-r--r-- 1 root root 44 Mar 1 05:08 student.txt
drwxr-xr-x 3 root root 4096 Mar 14 17:59 admin
[root@TestVM001 ~]# mv -vf * /*
`admin' -> `/var/admin'
`anaconda-ks.cfg' -> `/var/anaconda-ks.cfg'
`Desktop' -> `/var/Desktop'
`ifcfg-eth0' -> `/var/ifcfg-eth0'
`ifcfg-eth1' -> `/var/ifcfg-eth1'
`install.log' -> `/var/install.log'
`install.log.syslog' -> `/var/install.log.syslog'
`student.txt' -> `/var/student.txt'
`/bin' -> `/var/bin'
mv: cannot move `/boot' to `/var/boot': Device or resource busy
mv: cannot move `/dev' to `/var/dev': Device or resource busy
`/etc' -> `/var/etc'
`/home' -> `/var/home'
mv: cannot move `/lib' to a subdirectory of itself, `/var/lib'
`/lost+found' -> `/var/lost+found'
`/media' -> `/var/media'
`/mnt' -> `/var/mnt'
`/opt' -> `/var/opt'
mv: cannot move `/proc' to `/var/proc': Device or resource busy
`/root' -> `/var/root'
`/sbin' -> `/var/sbin'
`/selinux' -> `/var/selinux'
`/srv' -> `/var/srv'
mv: cannot move `/sys' to `/var/sys': Device or resource busy
`/tmp' -> `/var/tmp'
`/usr' -> `/var/usr'
[root@TestVM001 ~]# ls
-bash: /bin/ls: No such file or directory
[root@TestVM001 ~]# ls -lrt
-bash: /bin/ls: No such file or directory
[root@TestVM001 ~]# cd /
.autofsck boot/ lib/ sys/
.autorelabel dev/ proc/ var/
[root@TestVM001 ~]# cd /var/
account/ games/ lost+found/ selinux/
admin/ gdm/ mail/ spool/
anaconda-ks.cfg home/ media/ srv/
bin/ ifcfg-eth0 mnt/ student.txt
cache/ ifcfg-eth1 nis/ tmp/
crash/ install.log opt/ tux/
cvs/ install.log.syslog preserve/ usr/
db/ lib/ racoon/ www/
Desktop/ local/ root/ yp/
empty/ lock/ run/
etc/ log/ sbin/
有关此方案的问题是, 1)为什么mv命令导致了这种行为?
2)这种行为是已知的Bug还是风险?
3)有没有任何已知的限制方法,类似于别名概念用法?
答案 0 :(得分:2)
执行echo mv -f *.txt /*
后,您会看到上一个*
已扩展为/ var。所以你实际上要求将所有文件移到/ var / var中。
您的问题的答案:
1)为什么mv命令会导致这种行为?
mv试图完全按照你的要求做
2)这种行为是已知的Bug还是风险?
这不是一个错误。 Unix / Linux没有提示“你确定”但是相信你
3)有没有任何已知的方法来限制它,类似于别名概念的使用?
您应该以普通用户身份完成所有正常工作,而不是root用户。对重要文件的权限是这样的,它们不允许普通用户做有害的事情
当你必须以root身份做某事时,要非常小心!
尝试将txt文件移动到root是可疑的:根分区很小,应该保留系统文件。来自Windows的.txt文件?