今天运行更新并重新启动操作系统后,lightdm 无法启动。经过一些调试后,我注意到 /dev/null(和一些其他 /dev 文件)没有足够的权限(与我拥有的另一个 Ubuntu 机器相比)- 例如“其他”无法读取或写入 /dev/null。
在“chmod a+rw /dev/null /dev/urandom /dev/random /dev/ptmx”之后,lightdm 启动了。当然,这不是重启持久性的,所以我需要把它放在一些 /etc/rc.* 中以使其持久 - 但我不想这样做!
有人知道为什么会发生这种情况吗?换句话说,对我来说,直到今天它仍然有效。
[已解决] 我有自定义的有缺陷的 udev 规则,会将某些 /dev 条目设置为 0600!
答案1
正如 Rinzwind 正确提到的那样/dev/null
,每次启动时创建,但具体包括的每个设备/dev/null
都是由MAKEDEV脚本创建的,该脚本在/etc/init
下面的几个脚本中被引用:
xieerqi:$ sudo grep -iR "makedev" /etc 2 > /dev/null
[sudo] password for xieerqi:
xieerqi:$ sudo grep -iR "makedev" /etc 2> /dev/null
[sudo] password for xieerqi:
/etc/init/mounted-dev.conf: /sbin/MAKEDEV std fd ppp tun
/etc/init/mounted-dev.conf: /sbin/MAKEDEV console
/etc/init.d/udev:create_dev_makedev() {
/etc/init.d/udev: if [ -e /sbin/MAKEDEV ]; then
/etc/init.d/udev: ln -sf /sbin/MAKEDEV /dev/MAKEDEV
/etc/init.d/udev: ln -sf /bin/true /dev/MAKEDEV
/etc/init.d/udev: create_dev_makedev
和/sbin/MAKEDEV
是/sbin/makedev
相同的脚本,在标头中设置了所有设备及其各自的权限。具体来说,在 makedev 上,我的系统创建了具有权限的空设备$public
:
makedev null c 1 3 $public
在顶层,公众被定义为public=" root root 0666"
您应该能够打开此脚本并根据需要修改权限或验证它们没有以任何方式被更改。
但是,如果它们没有改变,强烈建议将此行为报告为错误,并且为了您自己的方便,暂时切换到gdm
。