我曾经在很多服务器上使用Ubuntu 10.04模板。 从12.04开始,我遇到了一些我现在孤立的问题。
/ dev / urandom设备只能由root访问。
这导致SSL引擎,至less在PHP中,例如file_get_contents(https:// …)失败。
它也打破了ruby。
在一个chmod 644后,它可以正常工作,但不会在重新启动时保持不变。
所以我的问题。
为什么是这样? 我看到没有安全风险,因为…我的意思是..想偷一些随机数据?
我怎样才能“修复”它? 服务器是孤立的,只有一个应用程序使用,这就是为什么我使用openvz。 我想像一个运行级别的脚本或其他…但我该如何有效地做到这一点? Maby用dpkg还是apt?
vor / dev / shm也一样。 在这种情况下,我完全理解为什么它不可访问,但我认为我可以“修复”它相同的方式来修复/ dev / urandom
随着从udev读取过多,你可以耗尽随机池,产生可预测的随机数。 可能这就是为什么/ dev / urandom不能被所有人阅读的原因。 (删除,因为格雷姆唐纳森是正确的)
如果你还想更改权限,请查看负责设置/ dev / urandom模式的udev规则,而不是搞乱你的init脚本。
在Debian下,很容易find有罪的规则:
$ dpkg -L udev | xargs grep urandom /lib/udev/rules.d/91-permissions.rules:KERNEL=="urandom", MODE="0666"
在你的情况下,模式绝对不是0666。
如果你愿意,可以根据udevconfiguration规则进行更改。
注意: http : //lists.centos.org/pipermail/centos/2009-July/079134.html可能有助于改变udev。
基本上需要创build一个看起来像grep结果的规则,除了它有一个正确的模式设置,并将其作为规则文件添加到/etc/udev/rules.d/中(请注意Ubuntu和Debian中可能的差异!)
至于如何解决这个问题,临时的创可贴就是了
cat "chmod 666 /dev/urandom" >> /etc/rc.local
实际上,Ubuntu的12.04 openvz模板现在是公开的,他们修正了uraondm上的权限以及shm设备
udevtrigger还没有启动的问题。 尝试重新启动/etc/init.d/udevtrigger restart …如果它解决了我的问题…然后更改/etc/init/udevtrigger.conf文件:
- and not-container) + )
在RHEL中:在/etc/security/console.perms.d/中添加具有权限覆盖的安全规则
在Ubuntu中必须是相似的