当我在 docker 容器 A 中重新启动 systemd 时,/dev/XXX
的访问权限将被更改。例如:
前:
docker exec -it xxxx bash
chmod 755 /dev/random
做:
docker restart xxxx
后:
docker exec -it xxxx bash
/dev/random
将更改为0666
systemd 在 systemd 源代码中的哪个位置修改了这个?这符合逻辑吗?
这与 systemd-udevd 有关吗?
Execute /usr/lib/systemd/systemd-udevd? [Yes, No, Skip] [** ] (4 of 6) A start job is running for Create Volatile Files and Directories (3min 48s / no limit)y
[*** ] (5 of 6) A start job is running for Mark the need to relabel after reboot (3min 49s / no limit)(src/core/manager.c:1519) Got notification message for unit -.slice
(src/core/manager.c:1519) Got notification message for unit systemd-udevd.service
(src/core/service.c:2741) systemd-udevd.service: Got notification message from PID 503 (READY=1)
(src/core/service.c:2785) systemd-udevd.service: got READY=1
(src/core/service.c:878) systemd-udevd.service changed start -> running
(src/core/job.c:811) Job systemd-udevd.service/start finished, result=done
[ OK ] Started udev Kernel Device Manager.
答案1
/dev
不是一个“真正的”文件系统,它是一个devtmpfs
,即tmpfs
或 ramdisk,其唯一目的是保存在引导时创建的设备节点udev
。
如果使用df
's-T
选项,您可以看到这一点:
# df -T /dev
Filesystem Type 1K-blocks Used Available Use% Mounted on
udev devtmpfs 498256 0 498256 0% /dev
因为它是虚拟磁盘,所以内容在重新启动后不会保留。这是故意的,而不是问题 -udev
将在启动时创建系统所需的设备节点。
如果您想/dev/random
在重新启动后拥有特定的非标准权限,则需要创建一个规则文件来/etc/udev/rules.d/
设置您想要的权限。不过,很难理解你为什么755
想要/dev/random
。