                                 SELinux FAQ

----------------------------------------------------------------------------

This file contains answers to frequently-asked questions about the SELinux
feature for Poky.

Copyright (C) 2012 Wind River Systems, Inc. 

============================================================================

Table of Contents

1. About SELinux
  * 1.1 What is SELinux?
  * 1.2 How does this layer do to enable SELinux features? 

2. Building with SELinux

  * 2.1 How can I build a SELinux image?
  * 2.2 How can I add SELinux to my custom images?

3. Using SELinux

  * 3.1 How do I turn SELinux off at boot?
  * 3.2 How do I turn enforcing mode on/off at boot?

4. Resolving Problems

  * 4.1 Why I can not login in via ssh in enforcing mode? 

==============================================================================

1 - About SELinux

------------------------------------------------------------------------------

1.1 - What is SELinux?

Security-enhanced Linux (SELinux) is a reference implementation of the Flask
security architecture for flexible mandatory access control. It was created to
demonstrate the value of flexible mandatory access controls and how such 
controls could be added to an operating system. 

1.2 - How does this layer do to enable SELinux features? 

To enable SELinux features, this layers has done these works:

   * new DISTRO_FEATURES "selinux" defined
   * new DISTRO "poky-selinux" defined, with DISTRO_FEATURES += "pam selinux"
   * config file for Linux kernel to enable SELinux
   * recipes for SELinux userland libraries and tools
   * package group (packagegroup-core-selinux) for SELinux userland packages
   * bbappends for SELinux related recipes to build with SELinux enabled
   * recipes for SELinux policy modified from refpolicy


==============================================================================

2 - Building with SELinux 

------------------------------------------------------------------------------

2.1 - How can I build a SELinux image?

After init Poky build environment, please follow these steps:

   1. Add meta-selinux path to BUILDDIR/conf/bblayers.conf file.

   2. Set DISTRO="poky-selinux" or add DISTRO_FEATURES_append=" pam selinux"
      in BUILDDIR/conf/local.conf file.

   3. Build the default selinux image.

       $ bitbake core-image-selinux

2.2 - How can I add SELinux to my custom images?

If you only want to add SELinux to your custom image, then you should perform
the following steps:

   1. Add meta-selinux path to BUILDDIR/conf/bblayers.conf file

   2. Add DISTRO_FEATURES_append=" pam selinux" in BUILDDIR/conf/local.conf 
      file.

   3. Add packagegroup-core-selinux to your custom image.
      For example, if core-image-custom.bb is your building image file, then
      you should add packagegroup-core-selinux to IMAGE_INSTALL in 
      core-image-custom.bb.

   4. Build your custom image in build directory

       $ bitbake core-image-custom



==============================================================================

3 - Using SELinux 

------------------------------------------------------------------------------

3.1 - How do I turn SELinux off at boot?

Set SELINUX=disabled in /etc/selinux/config.

Alternatively, you can add "selinux=0" to your kernel boot parameters. It is
not recommended but useful on some testing situations.
For example, when you are using qemu targets,  

  $ runqemu qemumips core-image-selinux ext3 nographic bootparams="selinux=0"

The initial filesystem relabel step requires considerable memory and can result
in unexpected, sometimes impossible to reproduce, failures if an OOM condition
occurs while it is in progress.  Therefore you should consider allocating at a
minimum 512MB of RAM to your qemu image.  1GB or more is recommended.  This is
accomplished by adding qemuparams="-m 1024" to your runqemu options.

The defaults for various platforms vary, though it is usually around 256MB.

3.2 - How do I turn enforcing mode on/off?

You can specify the SELinux mode in /etc/selinux/config.

  # SELINUX= can take one of these three values:
  #       enforcing - SELinux security policy is enforced.
  #       permissive - SELinux prints warnings instead of enforcing.
  #       disabled - No SELinux policy is loaded.
  SELINUX=enforcing

Setting "SELINUX" to "enforcing" is the same as adding "enforcing=1" to the 
kernel boot parameters. While to "permissive" is the same as adding
"enforcing=0" to the kernel boot parameters.
However, to "disabled" is not the same as the "selinux=0" kernel boot
parameter. Rather than fully disabling SELinux in the kernel, the "disabled"
setting instead turns enforcing off and skips loading a policy.

==============================================================================

4 - Resolving Problems

------------------------------------------------------------------------------

4.1 - Why I can not login in via ssh in enforcing mode?

Please check "PermitEmptyPasswords" in /etc/ssh/sshd_config. If it is set to
"yes", set to "no" then restart sshd. That's because pam_selinux module does 
not allow sshd to set PermitEmptyPasswords to "yes".

Note: If both IMAGE_FEATURES debug-tweaks ssh-server-openssh are enabled, this 
"PermitEmptyPasswords" will be set to "yes" by default for Poky images.


