SELinux – Using in a Chroot Environment

linuxselinuxssh

I need to change selinux policy for /etc/ssh/sshd_config in a chroot environment designed to rescue my system (on a dedibox) : it actually does not have any selinux context defined and then sshd won't start.

But in the default chroot environment (offered by online.net), selinux is disabled : that means that I cannot change any policy, I fall on the 'cannot downgrade file' error. So I need to chroot from scratch.

So how could I chroot with selinux enabled (which is in the original env) in fedora 25 server (rescued OS/selinux enabled) with ubuntu 18 (rescue OS/selinux disabled), so I could change sshd_config selinux policy ?

Best Answer

You can also touch /.autorelabel on the root partition of the system you want to boot. This will trigger a restorecon on the whole system at the next boot, and should fix the issue. The process will reboot the machine once the relabeling is done. Be aware that, depending on the disk and amount of files, this process can take quite long.

Another option would be to use extended attributes xattr to set the selinux contexts. This is actually where selinux file related information is stored and can be modified with getfattr and setfattr using -m security.selinux.

A third way to fixing your issue can be to switch selinux into permissive mode using kernel boot options by adding the option enforcing=0.