关于/dev/中的文件误删恢复

不小心把/dev/目录删掉了,又不想通过重启恢复,mknod 可以帮你重新创建那些字符文件。


首先我们从两个随机数缓冲文件说起,当你误删了 /dev/random 和 /dev/urandom 后,你发现你的很多需要随机数的业务全都不可用了。

而在正常的业务系统中,你使用 ls -al /dev/random /dev/urandom 的时候可以查看到一串特殊的信息

crw-rw-rw- 1 root root 1, 8 Jun 15 09:51 random
crw-rw-rw- 1 root root 1, 9 Jun 15 09:51 urandom

而我们使用 mknod 的时候,就需要这些信息来创建这个字符缓冲特殊文件。当然,大多数系统的这个文件都一样

random 文件的类型为 c (字符缓冲特殊文件) 权限为 666 所有者为 root 主要编号 MAJOT 为 1 然后 次要编号 MINOR 为 8
urandom 文件的类型为 c (字符缓冲特殊文件) 权限为 666 所有者为 root 主要编号 MAJOR 为 1 然后 次要编号 MINOR 为 9

所以我们根据这些信息,可以直接创建这个文件了

mknod -m 666 /dev/random c 1 8
chown root:root /dev/random
mknod -m 666 /dev/urandom c 1 9
chown root:root /dev/urandom

这样我们创建好后,这个文件就可以正常用了。唯一麻烦的是系统原先写入 /dev/random 的随机数都没有了。


而当你隐约明白了一点后,我们可以继续用 mknod 重建更多的文件

crw-r--r-- 1 root root    10, 235 Jun 15 09:51 autofs
crw------- 1 root root     5,   1 Jun 15 09:51 console
crw-rw---- 1 root disk    10, 237 Jun 15 09:51 loop-control
crw-rw-rw- 1 root root     1,   3 Jun 15 09:51 null
crw-rw-rw- 1 root tty      5,   0 Jul 17 14:41 tty
crw--w---- 1 root tty      4,   0 Jun 15 09:51 tty0
crw--w---- 1 root tty      4,   1 Jun 15 09:53 tty1
crw-rw---- 1 root dialout  4,  64 Jun 15 09:51 ttyS0
crw-rw---- 1 root dialout  4,  65 Jun 15 09:51 ttyS1
crw-rw---- 1 root tty      7,   0 Jun 15 09:51 vcs
crw-rw---- 1 root tty      7,   1 Jun 15 09:51 vcs1
crw-rw---- 1 root tty      7, 128 Jun 15 09:51 vcsa
crw-rw---- 1 root tty      7, 129 Jun 15 09:51 vcsa1
crw-rw-rw- 1 root root     1,   5 Jun 15 09:51 zero

上面的就是我们常用的一些东西,比如我们想修复 loop 的挂载,就要重新创建 loop-control 这个文件。

mknod -m 660 /dev/loop-control c 10 237
chown :disk /dev/loop-control

又或者你把 tty0 删除了,也可以恢复。

mknod -m 600 /dev/tty0 c 10 237
chown :tty /dev/tty0
chmod g+w /dev/tty0

但是 /dev/ 里面其实还有磁盘。如果我们需要重新恢复磁盘的 块缓冲特殊文件 怎么办?

其实使用的方式和之前差不多,不过我们要定位出磁盘都用了哪些文件。我们要使用 lsblk 的命令 去查看。

[[email protected] ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    252:0    0  25G  0 disk
└─vda1 252:1    0  25G  0 part /

在这里我们能看到,我们磁盘有两个文件,一个是 vda 一个是 vda1,两个的主要编号都为 252 ,次要编号一个是 0 一个是 1

然后我们使用命令重新恢复 ,注意磁盘文件属于 块缓存特殊文件 ,所以文件的类型是 b (block)

mknod -m 660 /dev/vda b 252 0
chown :disk /dev/vda
mknod -m 660 /dev/vda1 b 252 1
chown :disk /dev/vda1

创建好后我们可以查看两个文件的信息如下。

[[email protected] ~]# ls -al /dev/vda /dev/vda1
brw-rw---- 1 root disk 252, 0 Jun 15 09:51 vda
brw-rw---- 1 root disk 252, 1 Jun 15 09:51 vda1

同时使用 blkid 的时候可以查看到对应磁盘分区的 UUID 则为成功。


最后在这里粘贴一份 CentOS 7 的 /dev/ 里面文件信息

drwxr-xr-x  20 root root        3140 Jun 15 09:51 .
dr-xr-xr-x. 19 root root        4096 May  3 14:18 ..
crw-r--r--   1 root root     10, 235 Jun 15 09:51 autofs
drwxr-xr-x   2 root root          80 Jun 15 09:51 block
crw-------   1 root root     10, 234 Jun 15 09:51 btrfs-control
drwxr-xr-x   3 root root          60 Jun 15 09:52 bus
drwxr-xr-x   2 root root        2760 Jun 15 09:51 char
crw-------   1 root root      5,   1 Jun 15 09:51 console
lrwxrwxrwx   1 root root          11 Jun 15 09:51 core -> /proc/kcore
drwxr-xr-x   3 root root          60 Jun 15 09:52 cpu
crw-------   1 root root     10,  61 Jun 15 09:51 cpu_dma_latency
crw-------   1 root root     10, 203 Jun 15 09:51 cuse
drwxr-xr-x   4 root root          80 Jun 15 09:51 disk
drwxr-xr-x   2 root root          60 Jun 15 09:51 dri
crw-rw----   1 root video    29,   0 Jun 15 09:51 fb0
lrwxrwxrwx   1 root root          13 Jun 15 09:51 fd -> /proc/self/fd
crw-rw-rw-   1 root root      1,   7 Jun 15 09:51 full
crw-rw-rw-   1 root root     10, 229 Jun 15 09:51 fuse
crw-------   1 root root    244,   0 Jun 15 09:51 hidraw0
crw-------   1 root root     10, 228 Jun 15 09:51 hpet
drwxr-xr-x   2 root root           0 Jun 15 09:51 hugepages
crw-------   1 root root     10, 183 Jun 15 09:51 hwrng
lrwxrwxrwx   1 root root          25 Jun 15 09:51 initctl -> /run/systemd/initctl/fifo
drwxr-xr-x   4 root root         300 Jun 15 09:51 input
crw-r--r--   1 root root      1,  11 Jun 15 09:51 kmsg
drwxr-xr-x   2 root root          60 Jun 15 09:52 lightnvm
srw-rw-rw-   1 root root           0 Jun 15 09:51 log
crw-rw----   1 root disk     10, 237 Jun 15 09:51 loop-control
drwxr-xr-x   2 root root          60 Jun 15 09:51 mapper
crw-------   1 root root     10, 227 Jun 15 09:51 mcelog
crw-r-----   1 root kmem      1,   1 Jun 15 09:51 mem
crw-------   1 root root     10,  58 Jun 15 09:51 memory_bandwidth
drwxrwxrwt   2 root root          40 Jun 15 09:52 mqueue
drwxr-xr-x   2 root root          60 Jun 15 09:51 net
crw-------   1 root root     10,  60 Jun 15 09:51 network_latency
crw-------   1 root root     10,  59 Jun 15 09:51 network_throughput
crw-rw-rw-   1 root root      1,   3 Jun 15 09:51 null
crw-------   1 root root     10, 144 Jun 15 09:51 nvram
crw-r-----   1 root kmem      1,   4 Jun 15 09:51 port
crw-------   1 root root    108,   0 Jun 15 09:51 ppp
crw-rw-rw-   1 root tty       5,   2 Jul 17  2019 ptmx
drwxr-xr-x   2 root root           0 Jun 15 09:51 pts
crw-rw-rw-   1 root root      1,   8 Jun 15 09:51 random
drwxr-xr-x   2 root root          60 Jun 15 09:52 raw
lrwxrwxrwx   1 root root           4 Jun 15 09:51 rtc -> rtc0
crw-------   1 root root    249,   0 Jun 15 09:51 rtc0
drwxrwxrwt   2 root root          40 Jun 15 09:51 shm
crw-------   1 root root     10, 231 Jun 15 09:51 snapshot
drwxr-xr-x   2 root root          80 Jun 15 09:51 snd
lrwxrwxrwx   1 root root          15 Jun 15 09:51 stderr -> /proc/self/fd/2
lrwxrwxrwx   1 root root          15 Jun 15 09:51 stdin -> /proc/self/fd/0
lrwxrwxrwx   1 root root          15 Jun 15 09:51 stdout -> /proc/self/fd/1
crw-rw-rw-   1 root tty       5,   0 Jul 17 14:41 tty
crw--w----   1 root tty       4,   0 Jun 15 09:51 tty0
crw--w----   1 root tty       4,   1 Jun 15 09:53 tty1
crw--w----   1 root tty       4,  10 Jun 15 09:51 tty10
crw--w----   1 root tty       4,  11 Jun 15 09:51 tty11
crw--w----   1 root tty       4,  12 Jun 15 09:51 tty12
crw--w----   1 root tty       4,  13 Jun 15 09:51 tty13
crw--w----   1 root tty       4,  14 Jun 15 09:51 tty14
crw--w----   1 root tty       4,  15 Jun 15 09:51 tty15
crw--w----   1 root tty       4,  16 Jun 15 09:51 tty16
crw--w----   1 root tty       4,  17 Jun 15 09:51 tty17
crw--w----   1 root tty       4,  18 Jun 15 09:51 tty18
crw--w----   1 root tty       4,  19 Jun 15 09:51 tty19
crw--w----   1 root tty       4,   2 Jun 15 09:51 tty2
crw--w----   1 root tty       4,  20 Jun 15 09:51 tty20
crw--w----   1 root tty       4,  21 Jun 15 09:51 tty21
crw--w----   1 root tty       4,  22 Jun 15 09:51 tty22
crw--w----   1 root tty       4,  23 Jun 15 09:51 tty23
crw--w----   1 root tty       4,  24 Jun 15 09:51 tty24
crw--w----   1 root tty       4,  25 Jun 15 09:51 tty25
crw--w----   1 root tty       4,  26 Jun 15 09:51 tty26
crw--w----   1 root tty       4,  27 Jun 15 09:51 tty27
crw--w----   1 root tty       4,  28 Jun 15 09:51 tty28
crw--w----   1 root tty       4,  29 Jun 15 09:51 tty29
crw--w----   1 root tty       4,   3 Jun 15 09:51 tty3
crw--w----   1 root tty       4,  30 Jun 15 09:51 tty30
crw--w----   1 root tty       4,  31 Jun 15 09:51 tty31
crw--w----   1 root tty       4,  32 Jun 15 09:51 tty32
crw--w----   1 root tty       4,  33 Jun 15 09:51 tty33
crw--w----   1 root tty       4,  34 Jun 15 09:51 tty34
crw--w----   1 root tty       4,  35 Jun 15 09:51 tty35
crw--w----   1 root tty       4,  36 Jun 15 09:51 tty36
crw--w----   1 root tty       4,  37 Jun 15 09:51 tty37
crw--w----   1 root tty       4,  38 Jun 15 09:51 tty38
crw--w----   1 root tty       4,  39 Jun 15 09:51 tty39
crw--w----   1 root tty       4,   4 Jun 15 09:51 tty4
crw--w----   1 root tty       4,  40 Jun 15 09:51 tty40
crw--w----   1 root tty       4,  41 Jun 15 09:51 tty41
crw--w----   1 root tty       4,  42 Jun 15 09:51 tty42
crw--w----   1 root tty       4,  43 Jun 15 09:51 tty43
crw--w----   1 root tty       4,  44 Jun 15 09:51 tty44
crw--w----   1 root tty       4,  45 Jun 15 09:51 tty45
crw--w----   1 root tty       4,  46 Jun 15 09:51 tty46
crw--w----   1 root tty       4,  47 Jun 15 09:51 tty47
crw--w----   1 root tty       4,  48 Jun 15 09:51 tty48
crw--w----   1 root tty       4,  49 Jun 15 09:51 tty49
crw--w----   1 root tty       4,   5 Jun 15 09:51 tty5
crw--w----   1 root tty       4,  50 Jun 15 09:51 tty50
crw--w----   1 root tty       4,  51 Jun 15 09:51 tty51
crw--w----   1 root tty       4,  52 Jun 15 09:51 tty52
crw--w----   1 root tty       4,  53 Jun 15 09:51 tty53
crw--w----   1 root tty       4,  54 Jun 15 09:51 tty54
crw--w----   1 root tty       4,  55 Jun 15 09:51 tty55
crw--w----   1 root tty       4,  56 Jun 15 09:51 tty56
crw--w----   1 root tty       4,  57 Jun 15 09:51 tty57
crw--w----   1 root tty       4,  58 Jun 15 09:51 tty58
crw--w----   1 root tty       4,  59 Jun 15 09:51 tty59
crw--w----   1 root tty       4,   6 Jun 15 09:51 tty6
crw--w----   1 root tty       4,  60 Jun 15 09:51 tty60
crw--w----   1 root tty       4,  61 Jun 15 09:51 tty61
crw--w----   1 root tty       4,  62 Jun 15 09:51 tty62
crw--w----   1 root tty       4,  63 Jun 15 09:51 tty63
crw--w----   1 root tty       4,   7 Jun 15 09:51 tty7
crw--w----   1 root tty       4,   8 Jun 15 09:51 tty8
crw--w----   1 root tty       4,   9 Jun 15 09:51 tty9
crw-rw----   1 root dialout   4,  64 Jun 15 09:51 ttyS0
crw-rw----   1 root dialout   4,  65 Jun 15 09:51 ttyS1
crw-rw----   1 root dialout   4,  66 Jun 15 09:51 ttyS2
crw-rw----   1 root dialout   4,  67 Jun 15 09:51 ttyS3
crw-------   1 root root     10, 239 Jun 15 09:51 uhid
crw-------   1 root root     10, 223 Jun 15 09:51 uinput
crw-rw-rw-   1 root root      1,   9 Jun 15 09:51 urandom
crw-------   1 root root    245,   0 Jun 15 09:51 usbmon0
crw-------   1 root root    245,   1 Jun 15 09:51 usbmon1
crw-rw----   1 root tty       7,   0 Jun 15 09:51 vcs
crw-rw----   1 root tty       7,   1 Jun 15 09:51 vcs1
crw-rw----   1 root tty       7,   2 Jun 15 09:51 vcs2
crw-rw----   1 root tty       7,   3 Jun 15 09:51 vcs3
crw-rw----   1 root tty       7,   4 Jun 15 09:51 vcs4
crw-rw----   1 root tty       7,   5 Jun 15 09:51 vcs5
crw-rw----   1 root tty       7,   6 Jun 15 09:51 vcs6
crw-rw----   1 root tty       7, 128 Jun 15 09:51 vcsa
crw-rw----   1 root tty       7, 129 Jun 15 09:51 vcsa1
crw-rw----   1 root tty       7, 130 Jun 15 09:51 vcsa2
crw-rw----   1 root tty       7, 131 Jun 15 09:51 vcsa3
crw-rw----   1 root tty       7, 132 Jun 15 09:51 vcsa4
crw-rw----   1 root tty       7, 133 Jun 15 09:51 vcsa5
crw-rw----   1 root tty       7, 134 Jun 15 09:51 vcsa6
crw-rw----   1 root tty       7,  64 Jun 15 09:51 vcsu
crw-rw----   1 root tty       7,  65 Jun 15 09:51 vcsu1
crw-rw----   1 root tty       7,  66 Jun 15 09:51 vcsu2
crw-rw----   1 root tty       7,  67 Jun 15 09:51 vcsu3
crw-rw----   1 root tty       7,  68 Jun 15 09:51 vcsu4
crw-rw----   1 root tty       7,  69 Jun 15 09:51 vcsu5
crw-rw----   1 root tty       7,  70 Jun 15 09:51 vcsu6
brw-rw----   1 root disk    252,   0 Jun 15 09:51 vda
brw-rw----   1 root disk    252,   1 Jun 15 09:51 vda1
drwxr-xr-x   2 root root          60 Jun 15 09:51 vfio
crw-------   1 root root     10,  63 Jun 15 09:51 vga_arbiter
crw-------   1 root root     10, 137 Jun 15 09:51 vhci
crw-------   1 root root     10, 238 Jun 15 09:51 vhost-net
crw-------   1 root root     10, 241 Jun 15 09:51 vhost-vsock
drwxr-xr-x   2 root root          60 Jun 15 09:51 virtio-ports
crw-------   1 root root    242,   1 Jun 15 09:51 vport1p1
crw-rw-rw-   1 root root      1,   5 Jun 15 09:51 zero
点赞

发表评论