我可以触摸文件/.autorelabel并重新启动,在初始化回来时,它会为我做SELINUX relabel。 但是我想在系统刚刚复制到硬盘镜像的情况下执行此操作。 我可以chroot到原始文件树,或者chroot到刚刚填充的设备映像并运行它。 我只是找不到要运行的东西。
此图像正在AWS EC2上制作成AMI,并包含CentOS 6.3。 但是重新贴上标签的时间太长(6分钟或更长)。 我想将重新标签移动到图像构build,其中额外的时间不是一个问题(因为它发生一次,而不是每次AMI启动)。 我可以使这个relabel成为文件系统最后一次卸载之前的最后一件事,直到它成为AMI并将启动。 我只需要知道该怎么做就可以了。
我已经search了手册页,没有运气。 我已经search了系统init脚本,但是在/.autorelabel被检测到的地方,目前还不清楚发生了什么。
诸如http://www.centos.org/docs/5/html/5.2/Deployment_Guide/sec-sel-fsrelabel.html这样的文档只能说明在重新启动之后如何做这些工作。 我需要在“重新启动”之前完成这项工作(卸载,构buildAMI,然后开始准备)。
最重要的是…是的,这将会重新启动…但是我希望在之前完成重新标记工作,所以每次AMI启动时都不会这样做(因为它需要很长时间)。
如果您将文件从一个文件系统复制到另一个文件系统,您可以:
cp ,请添加-c选项以复制SELinux上下文。 tar ,请添加--selinux选项来复制SELinux上下文。 假设上下文是正确的,这可以通过确保目标文件具有预期的上下文来节省一些时间。
至于fixfiles ,它是restorecon的包装,这是我通常使用的。 当/.autorelabel存在时,init脚本运行restorecon -p -r / ,打印六分钟的点,然后重新启动。 我更喜欢-v来更改上下文的详细列表,而不是-p 。 无论哪种方式,你应该chroot到文件系统,然后再运行它。
fixfiles relabel命令可用于重新标记文件系统而无需重新启动。 大多数人应该阅读Centos部署指南底部的警告,这个警告是关于重新标记文件系统的 ,但是这对于即将到来的重新启动应该不是问题。