Skip to contentSkip to conversation

policycoreutils: new package

PATCH New Bryce Ferguson 4 participants 24 messages Oct 25, 2016 – Mar 10, 2017

lore
Share & tools
lore
#0 lore raw

PATCH v13 1/8 policycoreutils: new package

From: Clayton Shotwell <[email protected]>

This package contains the core policy utilities that are required for basic operation of an SELinux system.

---
Changes: v12 -> v13:
- Incorporated changes found here: https://patchwork.ozlabs.org/patch/649176/

Changes v11 -> v12:
- splitted DESTDIR and CFLAGS patches into three patches( DESTDIR,PREFIX and removal of ARCH).

Changes v10 -> v11:
- Removed LDFLAGS="-Wl,-rpath,$(HOST_DIR)/usr/lib" as it is overriding LDFLAGS.
- Removed patch PREFIX number in the subject line .
- Replaced line LDFLAGS="-Wl,-rpath,$(HOST_DIR)/usr/lib" with LDFLAGS="$(HOST_LDFLAGS)".
- Added patch to disable dbuslib flags in policycoreutils .
- Added libglib2 dependency for restorecond.

Changes v9 -> v10:
- Added LDFLAGS for HOST_POLICYCOREUTILS_MAKE_OPTS:LDFLAGS="-Wl,-rpath,$(HOST_DIR)/usr/lib"

Changes v8 -> v9:
- Cleaned up DESTDIR references in patches to use PREFIX instead (suggested by Samuel)
- Added the use of the ARCH to pass the host and target architectures to the build (Suggested by Samuel)

Changes v7 -> v8:
- Cleaned up indentations in policycoreutils.mk (Suggested by Thomas P.)
- Fixed sed separator (Suggested by Thomas P.)
- Cleaned up cross compile patches and make options (Suggested by Thomas P.)
- Changed dbus-glib dependency to a select and cleaned up the dependencies (Suggested by Thomas P.)

Changes v6 -> v7:
- No changes

Changes v5 -> v6:
- No changes

Changes v4 -> v5:
- Updated depends and removed glibc dependency (Matt W.)
- Updated site to github (Matt W.)
- Added host python 2/3 support (Matt W.)
- Removed sandbox and mctrans support (Matt W.)
- Removed restorcon init script (Matt W.)
- Agree as optional settings were removed so menu isn't needed (Suggested by Ryan B. and Thomas P.)
- added Config.in select for LIBCAP_NG (Suggested by Thomas P.)
- cleaned up pam/audit ifeq (Suggested by Thomas P.)
- fixed CFLAGS to include target_cflags instead of += (Suggested by Thomas P.)
- Refactored lists of build/install steps into loops (Suggested by Thomas P.)
- Removed += on first host depends assignment (Suggested by Thomas P.)
- Refactored host make opts assignments (Suggested by Thomas P.)
- Limited to glibc because of fts.h, some uclibc toolchains have it others don't. Eventually this would be good to fix with the updated method of file traversal. (Matt W.)
- Gettext fixups for uclibc support. Counter productive as we now limit to glibc only. (Matt W.)
- Added musl as possible lib type (Matt W.)
- Removed largefile dependency (Clayton S.)
- Changed dbus-glib select to a depends on in the Config.in (suggested by Ryan B.)

Changes v3 -> v4:
- Add a select for the libselinux Python bindings when debugging is enabled. This will cause Python to be built for the target (suggested by Thomas P.)
- Cleaned up the configure comments (suggested by Thomas).
- Added a dependency on BR2_USE_MMU for the debugging option because python requires it (suggested by Thomas P.)
- Removed the dependencies on audit and linux-pam. Both packages are now optional dependencies based on whether or not the package has been selected
- Moved the dependency on dbus-glib to only the restorecond option where it is used
- Added a INSTALL_INIT_SYSV for the restorecond daemon rather than just installing it directly
- Adding a dependency on glibc
- Removed the clean commands

Changes v2 -> v3:
- Added dependencies on BR2_TOOLCHAIN_HAS_THREADS and BR2_LARGEFILE (suggested by Thomas P.)
- Changes patch naming convention (suggested by Thomas P.)
- Added selects for linux-pam and audit

Changes v1 -> v2:
- General cleanup to the mk file to conform to the standard format
- Fixed the patch naming to avoid using the version number
- Cleaned up the patch to include a signed-off-by line
- Changed package dependencies into selects in the config

---
 package/Config.in                                  |   1 +
 ...IR-to-all-paths-that-use-an-absolute-path.patch | 131 +++++++++++++
 .../0002-Add-PREFIX-to-host-paths.patch            | 211 +++++++++++++++++++++
 .../0003-Remove-hardcoded-arch-variable.patch      |  43 +++++
 ...licy-python-install-arguments-to-be-a-var.patch |  42 ++++
 .../0005-Check-to-see-if-DBUS-is-enabled.patch     |  56 ++++++
 package/policycoreutils/Config.in                  |  59 ++++++
 package/policycoreutils/policycoreutils.hash       |   2 +
 package/policycoreutils/policycoreutils.mk         | 111 +++++++++++
 9 files changed, 656 insertions(+)
 create mode 100644 package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch
 create mode 100644 package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch
 create mode 100644 package/policycoreutils/0003-Remove-hardcoded-arch-variable.patch
 create mode 100644 package/policycoreutils/0004-Change-sepolicy-python-install-arguments-to-be-a-var.patch
 create mode 100644 package/policycoreutils/0005-Check-to-see-if-DBUS-is-enabled.patch
 create mode 100644 package/policycoreutils/Config.in
 create mode 100644 package/policycoreutils/policycoreutils.hash
 create mode 100644 package/policycoreutils/policycoreutils.mk
package/Config.in +1 -0
index 9399f63..8091e33 100644
@@ -1657,6 +1657,7 @@ menu "Real-Time"
 endmenu
 
 menu "Security"
+	source "package/policycoreutils/Config.in"
 	source "package/setools/Config.in"
 endmenu
 
package/policycoreutils/0001-Add-DESTDIR-to-all-paths-that-use-an-absolute-path.patch new file +131 -0

131 lines not on this page · raw message

package/policycoreutils/0002-Add-PREFIX-to-host-paths.patch new file +211 -0

211 lines not on this page · raw message

package/policycoreutils/0003-Remove-hardcoded-arch-variable.patch new file +43 -0

43 lines not on this page · raw message

package/policycoreutils/0004-Change-sepolicy-python-install-arguments-to-be-a-var.patch new file +42 -0

42 lines not on this page · raw message

package/policycoreutils/0005-Check-to-see-if-DBUS-is-enabled.patch new file +56 -0

56 lines not on this page · raw message

package/policycoreutils/Config.in new file +59 -0

59 lines not on this page · raw message

package/policycoreutils/policycoreutils.hash new file +2 -0
new file mode 100644
index 0000000..44cb0c3
@@ -0,0 +1,2 @@
+# https://github.com/SELinuxProject/selinux/wiki/Releases
+sha256 329382cfe9fa977678abf541dcd8fe3847cf0c83b24654c8f7322343907078a1 policycoreutils-2.5.tar.gz
package/policycoreutils/policycoreutils.mk new file +111 -0

111 lines not on this page · raw message

Signature · 1 line
1.9.1
#1 lore raw

PATCH v13 2/8 refpolicy: new package

From: Clayton Shotwell <[email protected]>

The patch is for adding selinux reference policy (refpolicy). It is a complete SELinux policy that can be used as the system policy for a variety of systems and used as the basis for creating other policies.

Changes were made to this patch in between versions 12 and 13 for which the change history can be found here: https://patchwork.ozlabs.org/patch/649175/

---
Changes: v12 -> v13:
- Incorporated changes found here: https://patchwork.ozlabs.org/patch/649175/

Changes v11 -> v12:
- No changes

Changes v10 -> v11:
- Removed refpolicy-contrib package to maintain it as a seperate patch (suggested by Thomas)
- Removed /sbin/restorecon condition check and added comments in S00selinux( how /proc/mounts are used to discover tmpfs mounts)
- Removed variable REFPOLICY_POLICY_COMPILE and made Minor Indentation changes (suggested by Thomas).

Changed v9 -> v10:
- Removed trailing slash at the end (REFPOLICY_SITE = http://oss.tresys.com/files/refpolicy)
- Adds new menu option to select the SELinux state to be written
to the /etc/selinux/config file for the target (D. Graziano)

Changes v8 -> v9:
- Minor nit picks on spacing (Suggested by Samuel)

Changes v7 -> v8:
- Changes REFPOLICY_MAKE_CMDS to REFPOLICY_MAKE_OPTS (Suggested by Samuel)
- Added a help section to the custom git repo to explain why the refpolicy-contrib option is needed (Suggested by Samuel)
- Added rsync exclusions to ensure no unneeded files are copied during the refpolicy-contrib sync (Suggested by Samuel)

Changes v6 -> v7:
- Moving the refpolicy patch into a version specific folder to prevent it from being applied to the custom git repos. (Clayton S.)

Changes v5 -> v6:
- Fixed references to GIT in config files (Suggested by Ryan B.)
- Removed execute permissions on files (Suggested by Ryan B.)
- Fixed spelling error and changed staging install to always install the documentation (Suggested by Samuel)

Changes v4 -> v5:
- Removed TODO and dependency on glibc (Matt W.)
- Added lib depends to meet policycoreutils limitation on std lib

    (Matt W.)

- Added comment for when an option is not defined (Matt W.)
- Removed largefile, locale, and wchar dependencies (Clayton S.)
- Remove dependancy on host-python-pyxml (Ryan B.)
- Forced package to use $(HOST_DIR)/usr/bin/python2 for python executable (Ryan B.)
- Added host-python dependency (Clayton S.)
- Removed config menu (suggested by Thomas P.)
- Added patch to fix awk issue (Clayton S.)

Changes v3 -> v4:
- Added a dependency on host-gawk and correct the awk calls

    in the makefile to use $(AWK)

- Changed the default policy name to br_policy to differentiate the policy generated from refpolicy
- Added a install step to create a /.autorelabel file to cause the file system to be relabeled by S12SELinux init script
- Adding a default modules.conf file with an option to specify a different one. This will decrease the build time for refpolicy by removing unused policies. (implemented by Thomas P.)
- Cleaned up the configure comments (implemented by Thomas).
- Added a check to only install the documentation if the Buildroot option is enabled
- Removed the build because the install step completes the same process. Also removed the clean step because it is being removed globally from buildroot (implemented by Thomas P.)
- Added more error handling to the startup script to print a warning if SELinux fails to install the policy if it exists. This can be caused by the kernel not being configured with SELinux enabled

Changes v2 -> v3:
- Changes patch naming convention (suggested by Thomas P.)
- Added dependencies on BR2_TOOLCHAIN_HAS_THREADS and BR2_LARGEFILE (suggested by Thomas P.)
- Removed configure option for a specific patch folder (suggested by Thomas P.)
- Removed distribution configuration option (suggested by Thomas)
- Changed the monolithic configuration option to a modular configuration option (suggested by Thomas P.)
- Removed the refpolicy name option (suggested by Thomas P.)
- Corrected gramatical and comment errors (suggested by Thomas P.)
- Multiple style corrections to the mk file (suggested by Thomas P.)
- Added a comment to clairfy the usage of the the host build options for a target build

Changes v1 -> v2:
- General cleanup to the mk file to conform to the standard format
- Fixed the patch naming to match the standard 4 digit numbering
- Changed package dependencies into selects in the config

---
 package/Config.in                                  |    1 +
 .../0001-Fix-awk-references-to-use-variable.patch  |   42 +
 package/refpolicy/Config.in                        |  146 +++
 package/refpolicy/S00selinux                       |  126 ++
 package/refpolicy/booleans.conf                    | 1278 ++++++++++++++++++++
 package/refpolicy/config                           |    8 +
 package/refpolicy/modules.conf                     |  430 +++++++
 package/refpolicy/refpolicy.hash                   |    2 +
 package/refpolicy/refpolicy.mk                     |  111 ++
 9 files changed, 2144 insertions(+)
 create mode 100644 package/refpolicy/0001-Fix-awk-references-to-use-variable.patch
 create mode 100644 package/refpolicy/Config.in
 create mode 100644 package/refpolicy/S00selinux
 create mode 100644 package/refpolicy/booleans.conf
 create mode 100644 package/refpolicy/config
 create mode 100644 package/refpolicy/modules.conf
 create mode 100644 package/refpolicy/refpolicy.hash
 create mode 100644 package/refpolicy/refpolicy.mk
package/Config.in +1 -0
index 8091e33..853fc6e 100644
@@ -1658,6 +1658,7 @@ endmenu
 
 menu "Security"
 	source "package/policycoreutils/Config.in"
+	source "package/refpolicy/Config.in"
 	source "package/setools/Config.in"
 endmenu
 
package/refpolicy/0001-Fix-awk-references-to-use-variable.patch new file +42 -0

42 lines not on this page · raw message

package/refpolicy/Config.in new file +146 -0

146 lines not on this page · raw message

package/refpolicy/S00selinux new file +126 -0

126 lines not on this page · raw message

package/refpolicy/booleans.conf new file +1278 -0

1,278 lines not on this page · raw message

package/refpolicy/config new file +8 -0
new file mode 100644
index 0000000..5eee807
@@ -0,0 +1,8 @@
+# This file controls the state of SELinux on the system.
+# 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=permissive
+# SELINUXTYPE= name of the selinux policy to use
+SELINUXTYPE=refpolicy
package/refpolicy/modules.conf new file +430 -0

430 lines not on this page · raw message

package/refpolicy/refpolicy.hash new file +2 -0
new file mode 100644
index 0000000..c10de45
@@ -0,0 +1,2 @@
+#From https://github.com/TresysTechnology/refpolicy/wiki/DownloadRelease
+sha256 2dd2f45a7132137afe8302805c3b7839739759b9ab73dd1815c01afe34ac99de  refpolicy-2.20151208.tar.bz2
package/refpolicy/refpolicy.mk new file +111 -0

111 lines not on this page · raw message

Signature · 1 line
1.9.1
#2 lore raw

PATCH v13 2/8 refpolicy: new package

Hello,

Quoted 9 lines · Bryce Ferguson

From: Clayton Shotwell <[email protected]>

The patch is for adding selinux reference policy (refpolicy). It is a complete SELinux policy that can be used as the system policy for a variety of systems and used as the basis for creating other policies.

Changes were made to this patch in between versions 12 and 13 for which the change history can be found here: https://patchwork.ozlabs.org/patch/649175/

Quoted 6 lines

This patch/commit is too complicated / too long. Please try to split it into smaller chunks by only introducing the very mandatory functionality first, and progressively add more capabilities.

It also has a number of issues. See below for the details.

package/refpolicy/Config.in line 6

Quoted 12 lines
package/refpolicy/Config.in new file +6 -0
new file mode 100644
index 0000000..5a46829
@@ -0,0 +1,146 @@
+config BR2_PACKAGE_REFPOLICY
+	bool "refpolicy"
+	select BR2_PACKAGE_POLICYCOREUTILS
+	select BR2_PACKAGE_BUSYBOX_SELINUX if BR2_PACKAGE_BUSYBOX
+	depends on BR2_TOOLCHAIN_HAS_THREADS # policycoreutils
+	depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL # policycoreutils

This does not properly account for the dependencies of policycoreutils and SELinux support in Busybox, which are:

depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS # libsemanage depends on BR2_TOOLCHAIN_HAS_THREADS # libsemanage depends on !BR2_STATIC_LIBS #libsemanage depends on !BR2_arc # libsemanage
depends on BR2_TOOLCHAIN_USES_GLIBC # libsemanage

package/refpolicy/Config.in line 28

Quoted 3 lines
package/refpolicy/Config.in new file +3 -0
+comment "refpolicy needs a toolchain w/ threads, glibc or musl"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS \
+		|| !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)

So this comment needs fixing. It should be:

comment "refpolicy needs a glibc toolchain w/ thread, dynamic library"
depends on !BR2_arc
depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS
depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \
!BR2_TOOLCHAIN_USES_GLIBC

package/refpolicy/Config.in line 39

Quoted 10 lines
package/refpolicy/Config.in new file +10 -0
+if BR2_PACKAGE_REFPOLICY
+
+choice
+prompt "SELinux policy type"
+default BR2_PACKAGE_REFPOLICY_TYPE_STANDARD
+
+config BR2_PACKAGE_REFPOLICY_TYPE_STANDARD
+bool "Standard"
+help
+Standard SELinux policy

What is a "Standard SELinux policy" ?

package/refpolicy/Config.in line 44

Quoted 5 lines
package/refpolicy/Config.in new file +5 -0
+
+config BR2_PACKAGE_REFPOLICY_TYPE_MCS
+bool "MCS"
+help
+SELinux policy with multi-catagory support

Typo: category

package/refpolicy/Config.in line 49

Quoted 5 lines
package/refpolicy/Config.in new file +5 -0
+
+config BR2_PACKAGE_REFPOLICY_TYPE_MLS
+bool "MLS"
+help
+SELinux policy with multi-catagory and multi-level support

Typo: category

package/refpolicy/Config.in line 30

Quoted 1 line
package/refpolicy/Config.in new file +1 -0
+endchoice

The indentation of the choice is all wrong. It should be like this:

choice
prompt "SELinux policy type
default BR2_PACKAGE_REFPOLICY_TYPE_STANDARD

config BR2_PACKAGE_REFPOLICY_TYPE_STANDARD

	bool "Standard"
	help
	  ....

config ...

	bool ...
	help
	  ....

endchoice

Quoted 9 lines
package/refpolicy/Config.in new file +9 -0
+choice
+prompt "SELinux default state"
+default BR2_PACKAGE_REFPOLICY_STATE_PERMISSIVE
+
+config BR2_PACKAGE_REFPOLICY_STATE_ENFORCE
+bool "Enforcing"
+help
+SELinux security policy is enforced
+

package/refpolicy/Config.in line 76

Quoted 10 lines
package/refpolicy/Config.in new file +10 -0
+config BR2_PACKAGE_REFPOLICY_STATE_PERMISSIVE
+bool "Permissive"
+help
+SELinux prints warnings instead of enforcing
+
+config BR2_PACKAGE_REFPOLICY_STATE_DISABLE
+bool "Disabled"
+help
+No SELinux policy is loaded
+endchoice

Please fix the choice indentation.

package/refpolicy/Config.in line 80

Quoted 3 lines
package/refpolicy/Config.in new file +3 -0
+config BR2_PACKAGE_REFPOLICY_NAME
+	string "Custom policy Name"
+	default "Buildroot"

Is it really useful to be able to customize this? I guess it can be dropped in a first iteration.

package/refpolicy/Config.in line 86

Quoted 6 lines
package/refpolicy/Config.in new file +6 -0
+
+config BR2_PACKAGE_REFPOLICY_STATE
+	string
+	default "permissive" if BR2_PACKAGE_REFPOLICY_STATE_PERMISSIVE
+	default "enforcing" if BR2_PACKAGE_REFPOLICY_STATE_ENFORCE
+	default "disabled" if BR2_PACKAGE_REFPOLICY_STATE_DISABLE

This should be close to the refpolicy state choice.

Quoted 11 lines
package/refpolicy/Config.in new file +11 -0
+config BR2_PACKAGE_REFPOLICY_MODULES_FILE
+	string "Refpolicy modules configuration"
+	default "package/refpolicy/modules.conf"
+	help
+	  Location of a custom modules.conf file that lists the
+	  SELinux policy modules to be included in the compiled
+	  policy. See policy/modules.conf in the refpolicy sources for
+	  the complete list of available modules.
+	  NOTE: This file is only used if a Custom Git repo is
+	  not specified.
+

package/refpolicy/Config.in line 108

Quoted 10 lines
package/refpolicy/Config.in new file +10 -0
+config BR2_PACKAGE_REFPOLICY_BOOLEAN_FILE
+	string "Refpolicy boolean configuration"
+	default "package/refpolicy/booleans.conf"
+	help
+	  Location of a custom booleans.conf file that lists the
+	  SELinux booleans to be set in the compiled
+	  policy. See policy/booleans.conf in the refpolicy sources for
+	  the complete list of available modules.
+	  NOTE: This file is only used if a Custom Git repo is
+	  not specified.

Both of these options can be removed in the first patch, just unconditionally use package/refpolicy/*.conf to start.

package/refpolicy/Config.in line 116

Quoted 8 lines
package/refpolicy/Config.in new file +8 -0
+
+config BR2_PACKAGE_REFPOLICY_MODULAR
+	bool "Build a modular SELinux policy"
+	help
+	  Select Y to build a modular SELinux policy. By default,
+	  a monolithic policy will be built to save space on the
+	  target. A modular policy can also be built if policies
+	  need to be modified without reloading the target.

Same: please drop in the first patch, and do that in a subsequent patch in the series.

package/refpolicy/Config.in line 120

Quoted 4 lines
package/refpolicy/Config.in new file +4 -0
+
+config BR2_PACKAGE_REFPOLICY_CUSTOM_GIT
+	bool "Custom Git repository"
+	select BR2_PACKAGE_REFPOLICY_CONTRIB

This package no longer exists, and you're actually fetching it from the refpolicy Git repo through the submodule if I understand correctly.

Quoted 14 lines
package/refpolicy/Config.in new file +14 -0
+	help
+	 This option allows Buildroot to get the refpolicy source
+	 code from a Git repository. This option should generally
+	 be used to add custom SELinux policy to the base refpolicy
+	 without having to deal with lots of patches.
+
+	 Please note that with the current configuration of the
+	 mainline refpolicy git repositories, a refpolicy and a
+	 refpolicy-contrib git repo must be specified. These are
+	 linked using a git submodule which does not get initialized
+	 during the Buildroot build.
+
+if BR2_PACKAGE_REFPOLICY_CUSTOM_GIT
+

package/refpolicy/Config.in line 144

Quoted 10 lines
package/refpolicy/Config.in new file +10 -0
+config BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_URL
+	string "URL of custom repository"
+
+config BR2_PACKAGE_REFPOLICY_CUSTOM_REPO_VERSION
+	string "Custom repository version"
+	help
+	  Revision to use in the typical format used by Git
+	  e.g. a SHA id, a tag, branch, ..
+
+endif

Same for this functionality: separate patch. I'm also not sure to understand why we would want this exactly. What does this repository typically contains? Can you show the layout of what it contains, so we can understand what it's like?

package/refpolicy/Config.in line 119

Quoted 4 lines
package/refpolicy/Config.in new file +4 -0
+stop() {
+   # There is nothing to do
+   echo "OK"
+}

Don't print "OK" then.

Quoted 5 lines
package/refpolicy/Config.in new file +5 -0
+
+case "$1" in
+   start)
+      start
+      ;;

package/refpolicy/Config.in line 134

Quoted 10 lines
package/refpolicy/Config.in new file +10 -0
+   stop)
+      stop
+      ;;
+   *)
+      echo "Usage: $0 {start|stop}"
+      exit 1
+      ;;
+esac
+
+exit $?

exit $? is not needed.

package/refpolicy/booleans.conf

Quoted 5 lines
package/refpolicy/booleans.conf new file +0 -0
new file mode 100644
index 0000000..31c70b9

How was this file generated?

Quoted 6 lines
package/refpolicy/config new file +0 -0
new file mode 100644
index 0000000..5eee807

package/refpolicy/config line 8

Quoted 8 lines
package/refpolicy/config new file +8 -0
@@ -0,0 +1,8 @@
+# This file controls the state of SELinux on the system.
+# 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=permissive
+# SELINUXTYPE= name of the selinux policy to use
+SELINUXTYPE=refpolicy

Instead of having a template, what about simply generating this file from the .mk file, since it contains only two lines? In your .mk file:

	echo SELINUX=$(BR2_PACKAGE_REFPOLICY_STATE) > $(TARGET_DIR)/etc/selinux/config
	echo SELINUXTYPE=$(BR2_PACKAGE_REFPOLICY_NAME) >> $(TARGET_DIR)/etc/selinux/config

and that's it?

package/refpolicy/modules.conf

Quoted 5 lines
package/refpolicy/modules.conf new file +0 -0
new file mode 100644
index 0000000..2304dc4

How was this file generated? Do we need to keep it inside Buildroot?

package/refpolicy/refpolicy.hash line 2

Quoted 8 lines
package/refpolicy/refpolicy.hash new file +2 -0
new file mode 100644
index 0000000..c10de45
@@ -0,0 +1,2 @@
+#From https://github.com/TresysTechnology/refpolicy/wiki/DownloadRelease
+sha256 2dd2f45a7132137afe8302805c3b7839739759b9ab73dd1815c01afe34ac99de  refpolicy-2.20151208.tar.bz2

This doesn't match the version used in the .mk file.

Quoted 6 lines
package/refpolicy/refpolicy.mk new file +0 -0
new file mode 100644
index 0000000..3622b6e

package/refpolicy/refpolicy.mk line 9

Quoted 9 lines
package/refpolicy/refpolicy.mk new file +9 -0
@@ -0,0 +1,111 @@
+################################################################################
+#
+# refpolicy
+#
+################################################################################
+
+REFPOLICY_VERSION = RELEASE_2_20151208
+REFPOLICY_SITE = https://github.com/TresysTechnology/refpolicy.git
+REFPOLICY_SITE_METHOD = git

Please add a comment about why you're not using the Github helper.

package/refpolicy/refpolicy.mk line 10

Quoted 1 line
package/refpolicy/refpolicy.mk new file +1 -0
+REFPOLICY_GIT_SUBMODULES = y

Please add a comment that explains why you're using submodules here (I guess it's because of refpolicy-contrib).

package/refpolicy/refpolicy.mk line 18

Quoted 8 lines
package/refpolicy/refpolicy.mk new file +8 -0
+REFPOLICY_LICENSE = GPLv2
+REFPOLICY_LICENSE_FILES = COPYING
+
+# Cannot use multiple threads to build the reference policy
+REFPOLICY_MAKE = $(TARGET_MAKE_ENV) $(MAKE1)
+
+REFPOLICY_DEPENDENCIES += host-m4 host-checkpolicy host-policycoreutils \
+	host-setools host-gawk host-python policycoreutils

It's not clear to me why we need to have a build dependency on policycoreutils. Could you explain?

package/refpolicy/refpolicy.mk line 25

Quoted 6 lines
package/refpolicy/refpolicy.mk new file +6 -0
+REFPOLICY_INSTALL_STAGING = YES
+
+
+# To apply board specific customizations, create a refpolicy folder in
+# BR2_GLOBAL_PATCH_DIR.  These patches will be applied after the patches
+# in package/refpolicy

Not useful, this is generic Buildroot knowledge.

package/refpolicy/refpolicy.mk line 35

Quoted 10 lines
package/refpolicy/refpolicy.mk new file +10 -0
+
+# Passing the HOST_CONFIGURE_OPTS to the target build because all of the
+# build utilities are expected to be on system. This fools the make files
+# into using the host built utilities to compile the SELinux policy for
+# the target.
+#
+# Note, the TEST_TOOLCHAIN option will also set the
+# LD_LIBRARY_PATH at run time.
+REFPOLICY_MAKE_OPTS = $(HOST_CONFIGURE_OPTS) \
+	TEST_TOOLCHAIN="$(HOST_DIR)"

That's really weird, and makes me wonder if we shouldn't have a host-refpolicy package to build whatever host tool is needed, and a refpolicy target package to actually build/install the policy on the target.

package/refpolicy/refpolicy.mk line 48

Quoted 12 lines
package/refpolicy/refpolicy.mk new file +12 -0
+# Build requires python2 to run
+REFPOLICY_MAKE_ENV = \
+	PYTHON="$(HOST_DIR)/usr/bin/python2" \
+	AWK="$(HOST_DIR)/usr/bin/gawk" \
+	M4="$(HOST_DIR)/usr/bin/m4"
+
+
+ifeq ($(BR2_PACKAGE_REFPOLICY_MODULAR),y)
+REFPOLICY_MONOLITHIC = n
+else
+REFPOLICY_MONOLITHIC = y
+endif

It's a little bit odd that the option is backwards, but I guess it's because building monolithic is what makes most sense by default (hence the BR2_PACKAGE_REFPOLICY_MODULAR being disabled by default). So, OK.

package/refpolicy/refpolicy.mk line 58

Quoted 10 lines
package/refpolicy/refpolicy.mk new file +10 -0
+
+REFPOLICY_MODULES_FILE = $(call qstrip,$(BR2_PACKAGE_REFPOLICY_MODULES_FILE))
+define REFPOLICY_CUSTOM_MODULES_CONF
+	cp $(REFPOLICY_MODULES_FILE) $(@D)/policy/modules.conf
+endef
+
+REFPOLICY_BOOLEAN_FILE = $(call qstrip,$(BR2_PACKAGE_REFPOLICY_BOOLEAN_FILE))
+define REFPOLICY_CUSTOM_BOOLEAN_CONF
+	cp $(REFPOLICY_BOOLEAN_FILE) $(@D)/policy/booleans.conf
+endef

Please simplify by just using the *.conf files from package/refpolicy/ for now (see above).

Quoted 8 lines
package/refpolicy/refpolicy.mk new file +8 -0
+define REFPOLICY_CONFIGURE_CMDS
+	# If an external repo is used to build refpolicy, this preserves the
+	# custom modules.conf which defines the enabled components.
+	if [ -f $(@D)/policy/modules.conf ]; then \
+		mv $(@D)/policy/modules.conf $(@D)/modules.conf.bk ; \
+	fi
+	$(REFPOLICY_MAKE_ENV) $(REFPOLICY_MAKE) -C $(@D) bare \
+		$(REFPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR)

package/refpolicy/refpolicy.mk line 77

Quoted 10 lines
package/refpolicy/refpolicy.mk new file +10 -0
+	$(SED) "/TYPE/c\TYPE = $(BR2_PACKAGE_REFPOLICY_TYPE)" $(@D)/build.conf
+	$(SED) "/MONOLITHIC/c\MONOLITHIC = $(REFPOLICY_MONOLITHIC)" $(@D)/build.conf
+	$(SED) "/NAME/c\NAME = $(BR2_PACKAGE_REFPOLICY_NAME)" $(@D)/build.conf
+
+	$(REFPOLICY_MAKE_ENV) $(REFPOLICY_MAKE) -C $(@D) conf \
+		$(REFPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR)
+	if [ -f $(@D)/modules.conf.bk ]; then \
+		echo "[Preserved modules.conf]" ; \
+		mv $(@D)/modules.conf.bk $(@D)/policy/modules.conf ; \
+	fi

Not clear at all why we need this modules.conf.bk dance. Since it's only for "an external repo", can we get rid of this for now, or at least have it as part of a subsequent patch.

Quoted 21 lines
package/refpolicy/refpolicy.mk new file +21 -0
+	$(REFPOLICY_CUSTOM_MODULES_CONF)
+	$(REFPOLICY_CUSTOM_BOOLEAN_CONF)
+endef
+
+define REFPOLICY_INSTALL_STAGING_CMDS
+	$(REFPOLICY_MAKE_ENV) $(REFPOLICY_MAKE) -C $(@D) install-src install-headers \
+		install-docs $(REFPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR)
+endef
+
+define REFPOLICY_INSTALL_TARGET_CMDS
+	$(REFPOLICY_MAKE_ENV) $(REFPOLICY_MAKE) -C $(@D) install \
+		$(REFPOLICY_MAKE_OPTS) DESTDIR=$(TARGET_DIR)
+	$(INSTALL) -m 0755 -D package/refpolicy/config $(TARGET_DIR)/etc/selinux/config
+	$(SED) "/^SELINUXTYPE/c\SELINUXTYPE=$(BR2_PACKAGE_REFPOLICY_NAME)" \
+		$(TARGET_DIR)/etc/selinux/config
+	$(SED) "/^SELINUX=/c\SELINUX=$(BR2_PACKAGE_REFPOLICY_STATE)" \
+		$(TARGET_DIR)/etc/selinux/config
+	touch $(TARGET_DIR)/.autorelabel
+	$(RM) $(TARGET_DIR)/etc/selinux/$(BR2_PACKAGE_REFPOLICY_NAME)/booleans
+endef
+

package/refpolicy/refpolicy.mk line 108

Quoted 10 lines
package/refpolicy/refpolicy.mk new file +10 -0
+define REFPOLICY_INSTALL_INIT_SYSV
+	$(INSTALL) -m 0755 -D package/refpolicy/S00selinux \
+		$(TARGET_DIR)/etc/init.d/S00selinux
+endef
+
+ifeq ($(BR2_PACKAGE_REFPOLICY_MODULAR),y)
+$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/selinux/$(BR2_PACKAGE_REFPOLICY_NAME)/policy
+$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/selinux/$(BR2_PACKAGE_REFPOLICY_NAME)/modules/active/modules
+$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/selinux/$(BR2_PACKAGE_REFPOLICY_NAME)/contexts/files
+touch $(TARGET_DIR)/etc/selinux/$(BR2_PACKAGE_REFPOLICY_NAME)/contexts/files/file_contexts.local

This definitely cannot work at all, it's not part of any command. Building a modular policy should only be added in a follow-up patch, to keep the initial patch simpler.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#3 lore raw

PATCH v13 2/8 refpolicy: new package

Hello,

Quoted 5 lines · Thomas Petazzoni

package/refpolicy/refpolicy.mk line 18

Quoted 2 lines
package/refpolicy/refpolicy.mk new file +2 -0
+REFPOLICY_DEPENDENCIES += host-m4 host-checkpolicy host-policycoreutils \
+	host-setools host-gawk host-python policycoreutils  

It's not clear to me why we need to have a build dependency on policycoreutils. Could you explain?

I checked by doing a build test: the target policycoreutils dependency is not needed for build time, and it seems like the host-setools dependency is also not needed.

Could you double check this, by doing a build which has *only* refpolicy enabled and nothing else, and verify that the dependencies are really necessary?

Thanks a lot,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#4 lore raw

PATCH v13 2/8 refpolicy: new package

Hello,

Quoted 10 lines · Thomas Petazzoni

Hello,

Quoted 5 lines · Thomas Petazzoni

package/refpolicy/refpolicy.mk line 18

Quoted 2 lines
package/refpolicy/refpolicy.mk new file +2 -0
+REFPOLICY_DEPENDENCIES += host-m4 host-checkpolicy host-policycoreutils \
+   host-setools host-gawk host-python policycoreutils

It's not clear to me why we need to have a build dependency on policycoreutils. Could you explain?

Quoted 7 lines

I checked by doing a build test: the target policycoreutils dependency is not needed for build time, and it seems like the host-setools dependency is also not needed.

Could you double check this, by doing a build which has *only* refpolicy enabled and nothing else, and verify that the dependencies are really necessary?

I have performed a build with only refpolicy enabled and you are correct. I will update this to remove that dependency. I am also currently working to address your other comments.

Quoted 8 lines

Thanks a lot,

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

Thanks for your feedback!

Signature · 7 lines
Bryce Ferguson
Software Engineer
Airborne Information Solutions \ Secure Platforms

400 Collins Rd NE Cedar Rapids, Iowa 52498

Bryce.Ferguson at rockwellcollins.com
#5 lore raw

PATCH v13 2/8 refpolicy: new package

In reply to Thomas Petazzoni

Hello,

Quoted 9 lines · Thomas Petazzoni

Hello,

Quoted 5 lines · Bryce Ferguson

From: Clayton Shotwell <[email protected]>

The patch is for adding selinux reference policy (refpolicy). It is a complete SELinux policy that can be used as the system policy for a variety of systems and used as the basis for creating other

policies.

Quoted 3 lines
Quoted 3 lines

Changes were made to this patch in between versions 12 and 13 for which the change history can be found here: https://patchwork.ozlabs.org/p

atch/649175/

Quoted 8 lines
Quoted 7 lines
Quoted 5 lines

This patch/commit is too complicated / too long. Please try to split it into smaller chunks by only introducing the very mandatory functionality first, and progressively add more capabilities.

It also has a number of issues. See below for the details.

I have split this commit in three which should replace this one. In these commits, I have also addressed your comments.

Quoted 13 lines

package/refpolicy/Config.in line 6

Quoted 13 lines
package/refpolicy/Config.in new file +6 -0
new file mode 100644
index 0000000..5a46829
@@ -0,0 +1,146 @@
+config BR2_PACKAGE_REFPOLICY
+     bool "refpolicy"
+     select BR2_PACKAGE_POLICYCOREUTILS
+     select BR2_PACKAGE_BUSYBOX_SELINUX if BR2_PACKAGE_BUSYBOX
+     depends on BR2_TOOLCHAIN_HAS_THREADS # policycoreutils
+     depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL #

policycoreutils

Quoted 10 lines

This does not properly account for the dependencies of policycoreutils and SELinux support in Busybox, which are:

depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS # libsemanage depends on BR2_TOOLCHAIN_HAS_THREADS # libsemanage depends on !BR2_STATIC_LIBS #libsemanage depends on !BR2_arc # libsemanage
depends on BR2_TOOLCHAIN_USES_GLIBC # libsemanage

Fixed in new set of commits.

Quoted 4 lines

package/refpolicy/Config.in line 28

Quoted 3 lines
package/refpolicy/Config.in new file +3 -0
+comment "refpolicy needs a toolchain w/ threads, glibc or musl"
+     depends on !BR2_TOOLCHAIN_HAS_THREADS \
+             || !(BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_MUSL)
Quoted 8 lines

So this comment needs fixing. It should be:

comment "refpolicy needs a glibc toolchain w/ thread, dynamic library"
depends on !BR2_arc
depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS
depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS || \
!BR2_TOOLCHAIN_USES_GLIBC

Fixed in new set of commits.

Quoted 4 lines
Quoted 4 lines
package/refpolicy/Config.in new file +4 -0
+if BR2_PACKAGE_REFPOLICY
+
+choice
+prompt "SELinux policy type"
Quoted 9 lines

package/refpolicy/Config.in line 39

Quoted 6 lines
package/refpolicy/Config.in new file +6 -0
+default BR2_PACKAGE_REFPOLICY_TYPE_STANDARD
+
+config BR2_PACKAGE_REFPOLICY_TYPE_STANDARD
+bool "Standard"
+help
+Standard SELinux policy

What is a "Standard SELinux policy" ?

The "Standard SELinux policy" is type enforcement only. I have specified that in the new set of commits.

Quoted 8 lines

package/refpolicy/Config.in line 44

Quoted 5 lines
package/refpolicy/Config.in new file +5 -0
+
+config BR2_PACKAGE_REFPOLICY_TYPE_MCS
+bool "MCS"
+help
+SELinux policy with multi-catagory support

Typo: category

Fixed typos in new set of commits.

Quoted 21 lines

package/refpolicy/Config.in line 49

Quoted 5 lines
package/refpolicy/Config.in new file +5 -0
+
+config BR2_PACKAGE_REFPOLICY_TYPE_MLS
+bool "MLS"
+help
+SELinux policy with multi-catagory and multi-level support

Typo: category

package/refpolicy/Config.in line 30

Quoted 1 line
package/refpolicy/Config.in new file +1 -0
+endchoice

The indentation of the choice is all wrong. It should be like this:

choice
prompt "SELinux policy type
default BR2_PACKAGE_REFPOLICY_TYPE_STANDARD

config BR2_PACKAGE_REFPOLICY_TYPE_STANDARD

        bool "Standard"
        help
          ....
Quoted 6 lines

config ...

        bool ...
        help
          ....

endchoice

Fixed indentation in new set of commits.

Quoted 7 lines

package/refpolicy/Config.in line 80

Quoted 3 lines
package/refpolicy/Config.in new file +3 -0
+config BR2_PACKAGE_REFPOLICY_NAME
+     string "Custom policy Name"
+     default "Buildroot"

Is it really useful to be able to customize this? I guess it can be dropped in a first iteration.

Dropped in new set of commits.

Quoted 6 lines

package/refpolicy/Config.in line 120

Quoted 3 lines
package/refpolicy/Config.in new file +3 -0
+config BR2_PACKAGE_REFPOLICY_CUSTOM_GIT
+     bool "Custom Git repository"
+     select BR2_PACKAGE_REFPOLICY_CONTRIB

This package no longer exists, and you're actually fetching it from the refpolicy Git repo through the submodule if I understand correctly.

Yes refpolicy uses the git submodule. This has been removed in the new set of commits.

Quoted 4 lines

Same for this functionality: separate patch. I'm also not sure to understand why we would want this exactly. What does this repository typically contains? Can you show the layout of what it contains, so we can understand what it's like?

The custom git repository stuff was an artifact of an outdated method we were using. I have removed it in the new set of commits.

Quoted 1 line

Review

Quoted 1 line
(quoted diff) +0 -0

b/package/refpolicy/booleans.conf

Quoted 6 lines

package/refpolicy/booleans.conf

Quoted 4 lines

new file mode 100644
index 0000000..31c70b9

package/refpolicy/booleans.conf new file +0 -0

How was this file generated?

Refpolicy generates modules.conf and booleans.conf as part of the build. The files here are taken from the build and paired down to a minimal amount of functionality to cut down on build times. Each of them I have added as a separate commit to keep the patch sizes down.

Quoted 1 line

package/refpolicy/

Quoted 1 line
package/refpolicy/ renamed from package/refpolicy/modules.conf +0 -0

modules.conf

Quoted 6 lines

package/refpolicy/modules.conf

Quoted 4 lines

new file mode 100644
index 0000000..2304dc4

package/refpolicy/modules.conf new file +0 -0

How was this file generated? Do we need to keep it inside Buildroot?

See comment above.

Quoted 2 lines

package/refpolicy/modules.conf

Quoted 2 lines
package/refpolicy/modules.conf new file +2 -0
+
+# Passing the HOST_CONFIGURE_OPTS to the target build because all of

the

Quoted 1 line
Quoted 1 line

+# build utilities are expected to be on system. This fools the make

files

Quoted 4 lines
Quoted 4 lines
package/refpolicy/modules.conf new file +4 -0
+# into using the host built utilities to compile the SELinux policy for
+# the target.
+#
+# Note, the TEST_TOOLCHAIN option will also set the
Quoted 9 lines

package/refpolicy/modules.conf

Quoted 3 lines
package/refpolicy/modules.conf new file +3 -0
+# LD_LIBRARY_PATH at run time.
+REFPOLICY_MAKE_OPTS = $(HOST_CONFIGURE_OPTS) \
+     TEST_TOOLCHAIN="$(HOST_DIR)"

That's really weird, and makes me wonder if we shouldn't have a host-refpolicy package to build whatever host tool is needed, and a refpolicy target package to actually build/install the policy on the target.

We tracked this problem down and it ended up being one support tool that wasn't building correctly. The reason it previously worked was because refpolicy doesn't build C application or binaries. It uses python to build bytecode binary files for the policy. A fix has been added for this in the new set of patches.

Quoted 11 lines

package/refpolicy/modules.conf

Quoted 7 lines
package/refpolicy/modules.conf new file +7 -0
+
+     $(REFPOLICY_MAKE_ENV) $(REFPOLICY_MAKE) -C $(@D) conf \
+             $(REFPOLICY_MAKE_OPTS) DESTDIR=$(STAGING_DIR)
+     if [ -f $(@D)/modules.conf.bk ]; then \
+             echo "[Preserved modules.conf]" ; \
+             mv $(@D)/modules.conf.bk $(@D)/policy/modules.conf ; \
+     fi

Not clear at all why we need this modules.conf.bk dance. Since it's only for "an external repo", can we get rid of this for now, or at least have it as part of a subsequent patch.

This was another artifact from an internal build process and has been removed in the new set of patches.

Quoted 8 lines

package/refpolicy/modules.conf

Quoted 8 lines
package/refpolicy/modules.conf new file +8 -0
+
+define REFPOLICY_INSTALL_INIT_SYSV
+     $(INSTALL) -m 0755 -D package/refpolicy/S00selinux \
+             $(TARGET_DIR)/etc/init.d/S00selinux
+endef
+
+ifeq ($(BR2_PACKAGE_REFPOLICY_MODULAR),y)
+$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/selinux/$(BR

2_PACKAGE_REFPOLICY_NAME)/policy

Quoted 1 line
Quoted 1 line

+$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/selinux/$(BR

2_PACKAGE_REFPOLICY_NAME)/modules/active/modules

Quoted 1 line
Quoted 1 line

+$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/selinux/$(BR

2_PACKAGE_REFPOLICY_NAME)/contexts/files

Quoted 1 line
Quoted 1 line

+touch $(TARGET_DIR)/etc/selinux/$(BR2_PACKAGE_REFPOLICY_NAME)/cont

exts/files/file_contexts.local

Quoted 5 lines

This definitely cannot work at all, it's not part of any command. Building a modular policy should only be added in a follow-up patch, to keep the initial patch simpler.

I have removed the modular policy option in the new set of patches.

Quoted 7 lines

Thanks!

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

Thank you so much for the feedback!

Signature · 10 lines
Bryce Ferguson
Software Engineer
Airborne Information Solutions \ Secure Platforms

400 Collins Rd NE Cedar Rapids, Iowa 52498

Bryce.Ferguson at rockwellcollins.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20170105/62137b3a/attachment.html>
#6 lore raw

PATCH v13 3/8 linux-pam: add system auth file and host variant

In reply to Bryce Ferguson

From: Niranjan <[email protected]>

This patch creates system-auth.pamd file for pam services and adds host-linux-pam variant for creating pam.d files.

---
Changes v12 -> v13:
- No changes

Changes v11 -> v12:
- No changes

Changes v10 -> v11:
- Added host-linux-pam variant as it is the dependency for creating pam_conv1 files.
- Removed semicolon at the end of if condition (after fi).
- Merged system auth patch with host selinux dependencies patch

Changes v9 -> v10:
- Dropped host linux-pam variant,optional selinux and audit dependencies and created seperate Patches (Suggedted by Thomas).

Changes v8 -> v9:
- No changes

Changes v7 -> v8:
- Removed sub-shell around the config file install block and refactored the block to use absolute paths for the copying (Suggested by Samuel)
- Changed the enable-db=no configure option to disable-db to be consistent with the rest of the configure options (Suggested by Samuel)

Changes v6 -> v7:
- Added missing host-pkgconf dependency and removed unneeded host-autoconf dependency(Clayton S.)

Changes v5 -> v6:
- No changes

Changes v4 -> v5:
- Dropping unneeded patch (Clayton S.)

Changes v1 -> v4:
- Did not exist

---
 package/linux-pam/linux-pam.mk     | 41 +++++++++++++++++++++++++++++++++++++-
 package/linux-pam/system-auth.pamd | 15 ++++++++++++++
 2 files changed, 55 insertions(+), 1 deletion(-)
 create mode 100644 package/linux-pam/system-auth.pamd
package/linux-pam/linux-pam.mk +40 -1
index 6ce3839..57c2be2 100644
@@ -8,15 +8,18 @@ LINUX_PAM_VERSION = 1.3.0
 LINUX_PAM_SOURCE = Linux-PAM-$(LINUX_PAM_VERSION).tar.bz2
 LINUX_PAM_SITE = http://linux-pam.org/library
 LINUX_PAM_INSTALL_STAGING = YES
+# disable cracklib in linux pam config options
 LINUX_PAM_CONF_OPTS = \
 	--disable-prelude \
 	--disable-isadir \
 	--disable-nis \
 	--disable-db \
+	--disable-cracklib \
 	--disable-regenerate-docu \
 	--enable-securedir=/lib/security \
 	--libdir=/lib
-LINUX_PAM_DEPENDENCIES = flex host-flex host-pkgconf
+# host-linux-pam is needed for creating pam conf files
+LINUX_PAM_DEPENDENCIES = flex host-flex host-pkgconf host-linux-pam
 LINUX_PAM_AUTORECONF = YES
 LINUX_PAM_LICENSE = BSD-3c
 LINUX_PAM_LICENSE_FILES = Copyright
@@ -48,6 +51,42 @@ define LINUX_PAM_INSTALL_CONFIG
 		$(TARGET_DIR)/etc/pam.d/other
 endef
 
+# Use the host-pam pam_conv1 app to create the pam.d files
+define LINUX_PAM_CONFIG_FILE_TARGET_INSTALL
+	if [ -d $(TARGET_DIR)/etc/pam.d/ ]; then \
+		mv $(TARGET_DIR)/etc/pam.d/ $(TARGET_DIR)/etc/pam.d.orig/; \
+	fi
+	cd $(TARGET_DIR)/etc/ && cat $(@D)/conf/pam.conf | $(HOST_DIR)/usr/bin/pam_conv1; \
+	if [ -d $(TARGET_DIR)/etc/pam.d.orig ]; then \
+		cp -a $(TARGET_DIR)/etc/pam.d/* $(TARGET_DIR)/etc/pam.d.orig/; \
+		rm -rf $(TARGET_DIR)/etc/pam.d/; \
+		mv $(TARGET_DIR)/etc/pam.d.orig/ $(TARGET_DIR)/etc/pam.d/; \
+	fi
+	$(INSTALL) -D -m 0644 package/linux-pam/system-auth.pamd $(TARGET_DIR)/etc/pam.d/system-auth
+endef
+
+LINUX_PAM_POST_INSTALL_TARGET_HOOKS += LINUX_PAM_CONFIG_FILE_TARGET_INSTALL
 LINUX_PAM_POST_INSTALL_TARGET_HOOKS += LINUX_PAM_INSTALL_CONFIG
 
+HOST_LINUX_PAM_DEPENDENCIES = host-flex host-pkgconf
+
+HOST_LINUX_PAM_CONF_OPTS = \
+	--disable-rpath \
+	--enable-read-both-confs \
+	--disable-regenerate-docu \
+	--disable-isadir \
+	--disable-nis \
+	--enable-securedir=/lib/security \
+	--disable-prelude \
+	--disable-cracklib \
+	--disable-lckpwdf \
+	--disable-db \
+	--disable-selinux \
+	--disable-audit \
+
+define HOST_LINUX_PAM_INSTALL_CMDS
+	$(INSTALL) -D -m 755 $(@D)/conf/pam_conv1/pam_conv1 $(HOST_DIR)/usr/bin/pam_conv1
+endef
+
 $(eval $(autotools-package))
+$(eval $(host-autotools-package))
package/linux-pam/system-auth.pamd new file +15 -0
new file mode 100644
index 0000000..2fa116a
@@ -0,0 +1,15 @@
+#%PAM-1.0
+auth        required      pam_env.so
+auth        sufficient    pam_unix.so
+auth        required      pam_deny.so
+
+account     required      pam_unix.so
+
+#password    required      pam_cracklib.so try_first_pass retry=3
+password    sufficient    pam_unix.so md5 shadow try_first_pass
+password    required      pam_deny.so
+
+session     optional      pam_keyinit.so revoke
+session     required      pam_limits.so
+session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
+session     required      pam_unix.so
Signature · 1 line
1.9.1
#7 lore raw

PATCH 1/2 linux-pam: adjust login pam file for SELinux

When SELinux support is enabled, the login pam file installed by linux-pam should be adjusted to use the pam_selinux.so module.

To achieve this in a reasonably simple manner, we introduce the SELinux related lines in login.pam as comments, and if SELinux support is enabled, turn those commented lines into real lines.

---
 package/linux-pam/linux-pam.mk | 5 +++++
 package/linux-pam/login.pam    | 2 ++
 2 files changed, 7 insertions(+)
package/linux-pam/linux-pam.mk +5 -0
index 6ce3839..c8ba30f 100644
@@ -29,6 +29,10 @@ endif
 ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
 LINUX_PAM_CONF_OPTS += --enable-selinux
 LINUX_PAM_DEPENDENCIES += libselinux
+define LINUX_PAM_SELINUX_PAMFILE_TWEAK
+	$(SED) 's/^# \(.*pam_selinux.so.*\)$$/\1/' \
+		$(TARGET_DIR)/etc/pam.d/login
+endef
 else
 LINUX_PAM_CONF_OPTS += --disable-selinux
 endif
@@ -46,6 +50,7 @@ define LINUX_PAM_INSTALL_CONFIG
 		$(TARGET_DIR)/etc/pam.d/login
 	$(INSTALL) -m 0644 -D package/linux-pam/other.pam \
 		$(TARGET_DIR)/etc/pam.d/other
+	$(LINUX_PAM_SELINUX_PAMFILE_TWEAK)
 endef
 
 LINUX_PAM_POST_INSTALL_TARGET_HOOKS += LINUX_PAM_INSTALL_CONFIG
package/linux-pam/login.pam +2 -0
index 01f5632..5df7db6 100644
@@ -4,7 +4,9 @@ account		required	pam_unix.so
 
 password	required	pam_unix.so nullok
 
+# session	required	pam_selinux.so close
 session		required	pam_limits.so
 session		required	pam_env.so
 session		required	pam_unix.so
 session		optional	pam_lastlog.so
+# session	required	pam_selinux.so open
Signature · 1 line
2.7.4
#8 lore raw

PATCH 1/2 linux-pam: adjust login pam file for SELinux

Hello,

Quoted 7 lines · Thomas Petazzoni

When SELinux support is enabled, the login pam file installed by linux-pam should be adjusted to use the pam_selinux.so module.

To achieve this in a reasonably simple manner, we introduce the SELinux related lines in login.pam as comments, and if SELinux support is enabled, turn those commented lines into real lines.

Quoted 5 lines
---
 package/linux-pam/linux-pam.mk | 5 +++++
 package/linux-pam/login.pam    | 2 ++
 2 files changed, 7 insertions(+)

I've applied both patches. They have been tested by Bryce, and nobody objected to the approach.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#9 lore raw

PATCH 1/2 linux-pam: adjust login pam file for SELinux

In reply to Thomas Petazzoni
Quoted 8 lines · Thomas Petazzoni

When SELinux support is enabled, the login pam file installed by linux-pam should be adjusted to use the pam_selinux.so module.

To achieve this in a reasonably simple manner, we introduce the SELinux related lines in login.pam as comments, and if SELinux support is enabled, turn those commented lines into real lines.

Performed a build with this package enabled using the qemu selinux defconfig which is part of the outstanding v13 patchset found here:http://patchwork.ozlabs.org/bundle/UraniumKnight/rc_selinux_v13/. For the test, this was applied in the stead of PATCH 4/8
(http://patchwork.ozlabs.org/patch/686677/)

Quoted 49 lines
---
 package/linux-pam/linux-pam.mk | 5 +++++
 package/linux-pam/login.pam    | 2 ++
 2 files changed, 7 insertions(+)
package/linux-pam/linux-pam.mk +5 -0
index 6ce3839..c8ba30f 100644
@@ -29,6 +29,10 @@ endif
 ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
 LINUX_PAM_CONF_OPTS += --enable-selinux
 LINUX_PAM_DEPENDENCIES += libselinux
+define LINUX_PAM_SELINUX_PAMFILE_TWEAK
+       $(SED) 's/^# \(.*pam_selinux.so.*\)$$/\1/' \
+               $(TARGET_DIR)/etc/pam.d/login
+endef
 else
 LINUX_PAM_CONF_OPTS += --disable-selinux
 endif
@@ -46,6 +50,7 @@ define LINUX_PAM_INSTALL_CONFIG
                $(TARGET_DIR)/etc/pam.d/login
        $(INSTALL) -m 0644 -D package/linux-pam/other.pam \
                $(TARGET_DIR)/etc/pam.d/other
+       $(LINUX_PAM_SELINUX_PAMFILE_TWEAK)
 endef
 
 LINUX_PAM_POST_INSTALL_TARGET_HOOKS += LINUX_PAM_INSTALL_CONFIG
package/linux-pam/login.pam +2 -1
index 01f5632..5df7db6 100644
@@ -4,7 +4,9 @@ account         required        pam_unix.so
 
 password       required        pam_unix.so nullok
 
+# session      required        pam_selinux.so close
 session                required        pam_limits.so
 session                required        pam_env.so
 session                required        pam_unix.so
 session                optional        pam_lastlog.so
+# session      required        pam_selinux.so open
--

2.7.4

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#10 lore raw

PATCH 2/2 util-linux: add selinux support

In reply to Thomas Petazzoni

From: Matt Weber <[email protected]>

This patch adds optional libselinux support to the util-linux package, and also tweaks the PAM files instealled by util-linux to work properly in an SELinux context.

Like was done for linux-pam, the tweak is done by having the SELinux related lines commented out in the original PAM file, and uncommented when SELinux support is enabled.

---
 package/util-linux/su.pam        |  2 ++
 package/util-linux/util-linux.mk | 14 ++++++++++++++
 2 files changed, 16 insertions(+)
package/util-linux/su.pam +2 -0
index f000c39..84b1860 100644
@@ -7,7 +7,9 @@ account		required	pam_unix.so
 
 password	required	pam_unix.so nullok
 
+# session	required	pam_selinux.so close
 session		required	pam_limits.so
 session		required	pam_env.so
 session		required	pam_unix.so
 session		optional	pam_lastlog.so
+# session	required	pam_selinux.so open
package/util-linux/util-linux.mk +14 -0
index cf03fd4..7140554 100644
@@ -63,6 +63,19 @@ endif
 UTIL_LINUX_CONF_ENV += LIBS="$(UTIL_LINUX_LIBS)"
 UTIL_LINUX_MAKE_OPTS += LIBS="$(UTIL_LINUX_LIBS)"
 
+ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
+UTIL_LINUX_DEPENDENCIES += libselinux
+UTIL_LINUX_CONF_OPTS += --with-selinux
+define UTIL_LINUX_SELINUX_PAMFILES_TWEAK
+	$(foreach f,su su-l,
+		$(SED) 's/^# \(.*pam_selinux.so.*\)$$/\1/' \
+			$(TARGET_DIR)/etc/pam.d/$(f)
+	)
+endef
+else
+UTIL_LINUX_CONF_OPTS += --without-selinux
+endif
+
 # Used by cramfs utils
 UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib)
 
@@ -179,6 +192,7 @@ define UTIL_LINUX_INSTALL_PAMFILES
 		$(TARGET_DIR)/etc/pam.d/su
 	$(INSTALL) -m 0644 package/util-linux/su.pam \
 		$(TARGET_DIR)/etc/pam.d/su-l
+	$(UTIL_LINUX_SELINUX_PAMFILES_TWEAK)
 endef
 endif
 
Signature · 1 line
2.7.4
#11 lore raw

PATCH 2/2 util-linux: add selinux support

Quoted 10 lines · Thomas Petazzoni

From: Matt Weber <[email protected]>

This patch adds optional libselinux support to the util-linux package, and also tweaks the PAM files instealled by util-linux to work properly in an SELinux context.

Like was done for linux-pam, the tweak is done by having the SELinux related lines commented out in the original PAM file, and uncommented when SELinux support is enabled.

Quoted 5 lines

Performed a build with this package enabled using the qemu selinux defconfig which is part of the outstanding v13 patchset found here:http://patchwork.ozlabs.org/bundle/UraniumKnight/rc_selinux_v13/. For the test, this was applied in the stead of PATCH 4/8
(http://patchwork.ozlabs.org/patch/686677/)

Quoted 54 lines
---
 package/util-linux/su.pam        |  2 ++
 package/util-linux/util-linux.mk | 14 ++++++++++++++
 2 files changed, 16 insertions(+)
package/util-linux/su.pam +2 -0
index f000c39..84b1860 100644
@@ -7,7 +7,9 @@ account         required        pam_unix.so
 
 password       required        pam_unix.so nullok
 
+# session      required        pam_selinux.so close
 session                required        pam_limits.so
 session                required        pam_env.so
 session                required        pam_unix.so
 session                optional        pam_lastlog.so
+# session      required        pam_selinux.so open
package/util-linux/util-linux.mk +14 -1
index cf03fd4..7140554 100644
@@ -63,6 +63,19 @@ endif
 UTIL_LINUX_CONF_ENV += LIBS="$(UTIL_LINUX_LIBS)"
 UTIL_LINUX_MAKE_OPTS += LIBS="$(UTIL_LINUX_LIBS)"
 
+ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
+UTIL_LINUX_DEPENDENCIES += libselinux
+UTIL_LINUX_CONF_OPTS += --with-selinux
+define UTIL_LINUX_SELINUX_PAMFILES_TWEAK
+       $(foreach f,su su-l,
+               $(SED) 's/^# \(.*pam_selinux.so.*\)$$/\1/' \
+                       $(TARGET_DIR)/etc/pam.d/$(f)
+       )
+endef
+else
+UTIL_LINUX_CONF_OPTS += --without-selinux
+endif
+
 # Used by cramfs utils
 UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib)
 
@@ -179,6 +192,7 @@ define UTIL_LINUX_INSTALL_PAMFILES
                $(TARGET_DIR)/etc/pam.d/su
        $(INSTALL) -m 0644 package/util-linux/su.pam \
                $(TARGET_DIR)/etc/pam.d/su-l
+       $(UTIL_LINUX_SELINUX_PAMFILES_TWEAK)
 endef
 endif
 
--

2.7.4

#12 lore raw

PATCH v13 4/8 util-linux: selinux, audit, and pam support

In reply to Bryce Ferguson

From: Matt Weber <[email protected]>

This patch adds optional libselinux ,audit and pam support to linux utilities.

---
Changes v12 -> v13:
- No changes

Changes v11 -> v12:
- No changes

Changes v10 -> v11:
- Comment added to explain how the SED expression writes to pam files.

Changes v9 -> v10:
- No changes

Changes v8 -> v9:
- No changes

Changes v7 -> v8:
- No changes

Changes v6 -> v7:
- No changes

Changes v5 -> v6:
- No changes

Changes v4 -> v5:
- Update the selinux busybox config to the latest version of busybox (Clayton S.)

Changes v1 -> v4:
- Did not exist

---
 package/util-linux/util-linux.mk | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
package/util-linux/util-linux.mk +30 -0
index bd6508c..934fe2f 100644
@@ -63,6 +63,20 @@ endif
 UTIL_LINUX_CONF_ENV += LIBS="$(UTIL_LINUX_LIBS)"
 UTIL_LINUX_MAKE_OPTS += LIBS="$(UTIL_LINUX_LIBS)"
 
+ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
+UTIL_LINUX_DEPENDENCIES += libselinux
+UTIL_LINUX_CONF_OPTS += --with-selinux
+else
+UTIL_LINUX_CONF_OPTS += --without-selinux
+endif
+
+ifeq ($(BR2_PACKAGE_AUDIT),y)
+UTIL_LINUX_DEPENDENCIES += audit
+UTIL_LINUX_CONF_OPTS += --with-audit
+else
+UTIL_LINUX_CONF_OPTS += --without-audit
+endif
+
 # Used by cramfs utils
 UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib)
 
@@ -179,9 +193,25 @@ define UTIL_LINUX_INSTALL_PAMFILES
 	$(INSTALL) -m 0644 package/util-linux/su.pam \
 		$(TARGET_DIR)/etc/pam.d/su-l
 endef
+
+# Add the required hooks to the pam files if SELinux is enabled
+# SED expression adds these lines to /etc/pam.d/login,/etc/pam.d/su-l and /etc/pam.d/su files
+#   session		required	pam_selinux.so close
+#   session		required	pam_selinux.so open
+ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
+define UTIL_LINUX_FIXUP_PAMFILES
+	for file in login su su-l ; do \
+		$(SED) '/selinux/d' $(TARGET_DIR)/etc/pam.d/$${file}; \
+		$(SED) '0,/session/s/session/session		required	pam_selinux.so close\nsession/' $(TARGET_DIR)/etc/pam.d/$${file}; \
+		echo "session		required	pam_selinux.so open" >> $(TARGET_DIR)/etc/pam.d/$${file}; \
+	done
+endef
+endif
+
 endif
 
 UTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_INSTALL_PAMFILES
+UTIL_LINUX_POST_INSTALL_TARGET_HOOKS += UTIL_LINUX_FIXUP_PAMFILES
 
 # Install agetty->getty symlink to avoid breakage when there's no busybox
 ifeq ($(BR2_PACKAGE_UTIL_LINUX_AGETTY),y)
Signature · 1 line
1.9.1
#13 lore raw

PATCH v13 4/8 util-linux: selinux, audit, and pam support

Hello,

Quoted 13 lines · Bryce Ferguson
package/util-linux/util-linux.mk +4 -0
index bd6508c..934fe2f 100644
@@ -63,6 +63,20 @@ endif
  UTIL_LINUX_CONF_ENV += LIBS="$(UTIL_LINUX_LIBS)"
  UTIL_LINUX_MAKE_OPTS += LIBS="$(UTIL_LINUX_LIBS)"
 
+ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
+UTIL_LINUX_DEPENDENCIES += libselinux
+UTIL_LINUX_CONF_OPTS += --with-selinux
+else

package/util-linux/util-linux.mk endif · line 79

Quoted 10 lines
package/util-linux/util-linux.mk +10 -0
+UTIL_LINUX_CONF_OPTS += --without-selinux
+endif
+
+ifeq ($(BR2_PACKAGE_AUDIT),y)
+UTIL_LINUX_DEPENDENCIES += audit
+UTIL_LINUX_CONF_OPTS += --with-audit
+else
+UTIL_LINUX_CONF_OPTS += --without-audit
+endif
+

util-linux already has optional dependency on audit package.

Regards,
Rahul

#14 lore raw

PATCH v13 4/8 util-linux: selinux, audit, and pam support

In reply to Bryce Ferguson

Hello,

Quoted 8 lines · Bryce Ferguson

From: Matt Weber <[email protected]>

This patch adds optional libselinux ,audit and pam support to linux utilities.

There are a few things I don't like in this patch. I'm going to submit two alternative patches as a replacement. I'm interested in your feedback about those replacement patches (especially if they work fine for you).

package/util-linux/util-linux.mk endif · line 78

Quoted 13 lines
package/util-linux/util-linux.mk +13 -0
+ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
+UTIL_LINUX_DEPENDENCIES += libselinux
+UTIL_LINUX_CONF_OPTS += --with-selinux
+else
+UTIL_LINUX_CONF_OPTS += --without-selinux
+endif
+
+ifeq ($(BR2_PACKAGE_AUDIT),y)
+UTIL_LINUX_DEPENDENCIES += audit
+UTIL_LINUX_CONF_OPTS += --with-audit
+else
+UTIL_LINUX_CONF_OPTS += --without-audit
+endif

As was already stated, optional audit support is already in util-linux.mk.

Quoted 12 lines
package/util-linux/util-linux.mk +5 -0
+
 # Used by cramfs utils
 UTIL_LINUX_DEPENDENCIES += $(if $(BR2_PACKAGE_ZLIB),zlib)
@@ -179,9 +193,25 @@ define UTIL_LINUX_INSTALL_PAMFILES
 	$(INSTALL) -m 0644 package/util-linux/su.pam \
 		$(TARGET_DIR)/etc/pam.d/su-l
 endef
+
+# Add the required hooks to the pam files if SELinux is enabled
+# SED expression adds these lines to /etc/pam.d/login,/etc/pam.d/su-l and /etc/pam.d/su files
+#   session		required	pam_selinux.so close

package/util-linux/util-linux.mk define UTIL_LINUX_INSTALL_PAMFILES · line 209

Quoted 10 lines
package/util-linux/util-linux.mk +10 -0
+#   session		required	pam_selinux.so open
+ifeq ($(BR2_PACKAGE_LIBSELINUX),y)
+define UTIL_LINUX_FIXUP_PAMFILES
+	for file in login su su-l ; do \
+		$(SED) '/selinux/d' $(TARGET_DIR)/etc/pam.d/$${file}; \
+		$(SED) '0,/session/s/session/session		required	pam_selinux.so close\nsession/' $(TARGET_DIR)/etc/pam.d/$${file}; \
+		echo "session		required	pam_selinux.so open" >> $(TARGET_DIR)/etc/pam.d/$${file}; \
+	done
+endef
+endif

I don't like this, for two reasons:

- The SED expressions are really really complicated.

- You're tweaking /etc/pam.d/login, which has not been installed by this package, but by the linux-pam package.

See my alternate proposal, which I'll send in a few minutes.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#15 lore raw

PATCH v13 4/8 util-linux: selinux, audit, and pam support

In reply to Bryce Ferguson

Hello,

Quoted 8 lines · Bryce Ferguson

From: Matt Weber <[email protected]>

This patch adds optional libselinux ,audit and pam support to linux utilities.

Instead of this patch, we have applied commit 373b7efdb308fcb7607cbef63ee4d2644b46136f, which serves the same purpose. So I've marked this patch as Rejected in patchwork.

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#16 lore raw

PATCH v13 5/8 busybox: applets as individual binaries

In reply to Bryce Ferguson

From: Clayton Shotwell <[email protected]>

The individual binaries option of busybox allows for the applets that would usually be symlinks to be built as individual applications that link against a shared library.

This feature is needed for SELinux to allow the applications to run under the correct SELinux context.

The patch being added allows the individual applications to be installed and will be upstreamed to the busybox developers.

The initial work for this change was done by Thomas Petazzoni <[email protected]>.

---
Changes v12 -> v13:
- Fixed indentation issue in makedevs.c line:590

Changes v11 -> v12:
- No changes

Changes v10 -> v11:
- Removed BUSYBOX_MAKEDEV_PERMISSIONS logic and added all 12 applets to BUSYBOX_PERMISSIONS variable.
- Changed makedevs.c file to ignore optional files with type=F ( files which does not exist).

Changes v9 -> v10:
- Removed 0002-applets-Add-installation-of-individual-binaries.patch as it was upstreamed.

Changes v8 -> v9:
- No changes

Changes v7 -> v8:
- Changed individual binaries comment to be !BR2_bfin (Suggested by Samuel)

Changes v6 -> v7:
- No changes

Changes v5 -> v6:
- No changes

Changes v4 -> v5:
- Renamed to follow latest patch naming convention (Matt W.)
- Updated to use BR2_STATIC_LIBS instead of old PREFERRED (Matt W.)
- Added depends to make sure bfin can't build shared lib busybox lib for individual binary use. Looks like shared lib creation doesn't error out but the objects don't get placed into the elf. Then the trylink fails on linking the first individual applet. (Matt W.)
- Made suid permissions setting dynamic for applets actually being installed (Clayton S.)

Changes v1 -> v4:
- Did not exist

---
 package/busybox/Config.in   |  9 +++++++++
 package/busybox/busybox.mk  | 40 ++++++++++++++++++++++++++++++++++++++++
 package/makedevs/makedevs.c |  2 ++
 3 files changed, 51 insertions(+)
package/busybox/Config.in +9 -0
index 7ef3f0e..d4c85b0 100644
@@ -54,6 +54,15 @@ config BR2_PACKAGE_BUSYBOX_SELINUX
 	  crond, then individual binaries have to be enabled for the
 	  SELinux type transitions to occur properly.
 
+config BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES
+	bool "Individual binaries"
+	depends on !BR2_STATIC_LIBS
+	depends on !BR2_bfin # libbusybox.so link issue
+
+comment "Busybox individual binaries depends on dynamic libraries"
+	depends on BR2_STATIC_LIBS
+	depends on !BR2_bfin
+
 config BR2_PACKAGE_BUSYBOX_WATCHDOG
 	bool "Install the watchdog daemon startup script"
 	help
package/busybox/busybox.mk +40 -0
index fc23a90..7d14209 100644
@@ -54,9 +54,36 @@ BUSYBOX_KCONFIG_FRAGMENT_FILES = $(call qstrip,$(BR2_PACKAGE_BUSYBOX_CONFIG_FRAG
 BUSYBOX_KCONFIG_EDITORS = menuconfig xconfig gconfig
 BUSYBOX_KCONFIG_OPTS = $(BUSYBOX_MAKE_OPTS)
 
+ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y)
+define BUSYBOX_PERMISSIONS
+	/usr/share/udhcpc/default.script f 755  0  0 - - - - -
+# Set permissions on all applets with BB_SUID_REQUIRE and BB_SUID_MAYBE.
+# 12 Applets are pulled from applets.h using grep command :
+#  grep -r -e "APPLET.*BB_SUID_REQUIRE\|APPLET.*BB_SUID_MAYBE" \
+#  $(@D)/include/applets.h 
+#  o/p:  
+#   wall,ping,ping6,crontab,findfs,login,mount,passwd,su,traceroute 
+#   traceroute6 and vlock.
+# These applets are added to the device table and the makedev file
+# ignores the files with type 'F' ( optional files).
+	/usr/bin/wall 			 F 4755 0  0 - - - - -
+	/bin/ping 			 f 4755 0  0 - - - - -
+	/bin/ping6 			 F 4755 0  0 - - - - -
+	/usr/bin/crontab 		 f 4755 0  0 - - - - -
+	/sbin/findfs 			 F 4755 0  0 - - - - -
+	/bin/login 			 F 4755 0  0 - - - - -
+	/bin/mount 			 f 4755 0  0 - - - - -
+	/usr/bin/passwd 		 F 4755 0  0 - - - - -
+	/bin/su 			 F 4755 0  0 - - - - -
+	/usr/bin/traceroute 		 f 4755 0  0 - - - - -
+	/usr/bin/traceroute6 		 F 4755 0  0 - - - - -
+	/usr/bin/vlock 			 F 4755 0  0 - - - - -
+endef
+else
 define BUSYBOX_PERMISSIONS
 	/bin/busybox                     f 4755 0  0 - - - - -
 endef
+endif
 
 # If mdev will be used for device creation enable it and copy S10mdev to /etc/init.d
 ifeq ($(BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV),y)
@@ -164,6 +191,17 @@ define BUSYBOX_SET_SELINUX
 endef
 endif
 
+ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),y)
+define BUSYBOX_CONFIGURE_INDIVIDUAL_BINARIES
+	$(call KCONFIG_ENABLE_OPT,CONFIG_BUILD_LIBBUSYBOX,$(BUSYBOX_BUILD_CONFIG))
+	$(call KCONFIG_ENABLE_OPT,CONFIG_FEATURE_INDIVIDUAL,$(BUSYBOX_BUILD_CONFIG))
+endef
+
+define BUSYBOX_INSTALL_INDIVIDUAL_BINARIES
+	rm -f $(TARGET_DIR)/bin/busybox
+endef
+endif
+
 define BUSYBOX_INSTALL_LOGGING_SCRIPT
 	if grep -q CONFIG_SYSLOGD=y $(@D)/.config; then \
 		$(INSTALL) -m 0755 -D package/busybox/S01logging \
@@ -221,6 +259,7 @@ define BUSYBOX_KCONFIG_FIXUP_CMDS
 	$(BUSYBOX_SET_INIT)
 	$(BUSYBOX_SET_WATCHDOG)
 	$(BUSYBOX_SET_SELINUX)
+	$(BUSYBOX_CONFIGURE_INDIVIDUAL_BINARIES)
 	$(BUSYBOX_MUSL_TWEAKS)
 endef
 
@@ -244,6 +283,7 @@ define BUSYBOX_INSTALL_INIT_SYSV
 	$(BUSYBOX_INSTALL_LOGGING_SCRIPT)
 	$(BUSYBOX_INSTALL_WATCHDOG_SCRIPT)
 	$(BUSYBOX_INSTALL_TELNET_SCRIPT)
+	$(BUSYBOX_INSTALL_INDIVIDUAL_BINARIES)
 endef
 
 # Checks to give errors that the user can understand
package/makedevs/makedevs.c +2 -0
index cacb144..0909e2d 100644
@@ -587,6 +587,8 @@ int main(int argc, char **argv)
 				ret = EXIT_FAILURE;
 				goto loop;
 			}
+		} else if (type == 'F') {
+           continue; /*Ignore optional files*/
 		} else if (type == 'r') {
 			recursive_uid = uid;
 			recursive_gid = gid;
Signature · 1 line
1.9.1
#17 lore raw

PATCH v13 6/8 qemu x86 selinux: base br defconfig

In reply to Bryce Ferguson

From: Clayton Shotwell <[email protected]>

This will build a base SELinux system that boots with SELinux in permissive mode. Also adding documentation on how to use it.

---
Changes v12 -> v13:
- Bump kernel to 4.8
- Fixed error in fragment config line: 6 (ONFIG_EXT2_FS -> CONFIG_EXT2_FS)

Changes v11 -> v12:
- Bump kernel to 4.6
- Renamed fragment config to be 4.x vs 4.0

Changes v10 -> v11:
- Removed configs BR2_ROOTFS_XXX (post build script,device table and overlay) from this patch and added these configs to another patch (common-selinux-support-files.patch)
- Included configuration BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES in defconfig.

Changes v9 -> v10:
- Changed version number of QEMU from 2.2.1 to 2.3.0

Changes v8 -> v9:
- No changes

Changes v7 -> v8:
- No changes

Changes v6 -> v7:
- No changes

Changes v5 -> v6:
- No changes

Changes v4 -> v5:
- Update the qemu_x86_defconfig to the 4.0 kernel series (Clayton S.)

Changes v1 -> v4:
- Did not exist

---
 board/qemu/x86/linux-4.x-selinux.config | 19 +++++++++++++++++++
 board/qemu/x86/readme.txt               | 17 +++++++++++++++++
 configs/qemu_x86_selinux_defconfig      | 31 +++++++++++++++++++++++++++++++
 3 files changed, 67 insertions(+)
 create mode 100644 board/qemu/x86/linux-4.x-selinux.config
 create mode 100644 configs/qemu_x86_selinux_defconfig
board/qemu/x86/linux-4.x-selinux.config new file +19 -0
new file mode 100644
index 0000000..6c715f0
@@ -0,0 +1,19 @@
+CONFIG_AUDIT=y
+CONFIG_MODULES=y
+CONFIG_IP_PNP=y
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_EXT2_FS=y
+CONFIG_EXT2_FS_XATTR=y
+CONFIG_EXT2_FS_POSIX_ACL=y
+CONFIG_EXT2_FS_SECURITY=y
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_FS_POSIX_ACL=y
+CONFIG_EXT3_FS_SECURITY=y
+CONFIG_NFS_FS=y
+CONFIG_ROOT_NFS=y
+CONFIG_SECURITY=y
+CONFIG_SECURITY_NETWORK=y
+CONFIG_SECURITY_SELINUX=y
+CONFIG_SECURITY_SELINUX_BOOTPARAM=y
+CONFIG_CRYPTO_ANSI_CPRNG=y
board/qemu/x86/readme.txt +17 -0
index 4f2e4c7..f7bf256 100644
@@ -7,3 +7,20 @@ Optionally add -smp N to emulate a SMP system with N CPUs.
 The login prompt will appear in the graphical window.
 
 Tested with QEMU 2.5.0
+
+-------------------------------------------------------------------
+
+Run the SElinux target emulation with:
+
+  qemu-system-i386 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=ide -append "root=/dev/sda rw console=ttyS0 selinux=1" -net nic,model=rtl8139 -net user -display none -serial stdio
+
+The emulation should reboot once the first time for relabeling and
+then provide a login prompt. The login is username root and password
+root because PAM requires a password in this secure configuration. To
+enable SELinux enforcing at boot, login and edit the
+/etc/selinux/config and set SELINUX to enforcing. Save and make sure
+to "sync" before restarting the emulation as the ext2 fs would
+otherwise corrupt when the emulation exits. After enforcing is
+default, the selinux= provided as part of the qemu "append" above can
+be used to turn enforcing on/off. This configuration would be tailored
+as part of a targets refpolicy customization.
configs/qemu_x86_selinux_defconfig new file +31 -0
new file mode 100644
index 0000000..ebfe4ca
@@ -0,0 +1,31 @@
+BR2_x86_pentiumpro=y
+
+# Internal tool chain glibc
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_8=y
+BR2_TOOLCHAIN_BUILDROOT_GLIBC=y
+
+# Select SYSV init to provide selinux enabled init
+BR2_INIT_SYSV=y
+BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt board/common_selinux/skeleton_permissions.txt"
+BR2_TARGET_GENERIC_ROOT_PASSWD="root"
+BR2_ROOTFS_OVERLAY="board/common_selinux/skeleton"
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/common_selinux/post_build.sh"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.8"
+BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
+BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux-4.8.config"
+BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/x86/linux-4.x-selinux.config"
+
+# Ensure busybox is built as individual binaries for the
+# SELinux refpolicy to work correctly
+BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
+BR2_PACKAGE_OPENSSH=y
+BR2_PACKAGE_REFPOLICY=y
+BR2_PACKAGE_RSYSLOG=y
+BR2_PACKAGE_UTIL_LINUX=y
+BR2_PACKAGE_UTIL_LINUX_BINARIES=y
+BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS=y
+BR2_TARGET_ROOTFS_EXT2=y
+BR2_TARGET_ROOTFS_EXT2_RESBLKS=5
+BR2_PACKAGE_HOST_CHECKPOLICY=y
Signature · 1 line
1.9.1
#18 lore raw

PATCH v13 7/8 qemu x86 selinux: added common selinux support files

In reply to Bryce Ferguson

From: Matt Weber <[email protected]>

Add a default busybox SELinux config which disables init and uses sysvinit. Add base skeleton with inittab and fstab tailored to selinux Add base skeleton audit configuration (didn't seem to merit being the package default).

---
Changes v12 -> v13:
- Converted busybox config to fragment config (busybox-selinux-fragment.config)

Changes v11 -> v12:
- No changes

Changes v10 -> v11:
- Added defconfig selinux specific file overlay and busybox config files to this patch as these are introduced in this patch (Suggested by Thomas).

Changes v9 -> v10:
- No changes

Changes v8 -> v9:
- No changes

Changes v7 -> v8:
- No changes

Changes v6 -> v7:
- No changes

Changes v5 -> v6:
- No changes

Changes v4 -> v5:
- Update the selinux busybox config to the latest version of busybox (Clayton S.)

Changes v1 -> v4:
- Did not exist

---
 .../common_selinux/busybox-selinux-fragment.config | 32 ++++++++++++++++++++++
 board/common_selinux/post_build.sh                 | 30 ++++++++++++++++++++
 .../common_selinux/skeleton/etc/audit/auditd.conf  | 32 ++++++++++++++++++++++
 .../skeleton/etc/audit/rules.d/audit.rules         |  3 ++
 board/common_selinux/skeleton/etc/fstab            | 15 ++++++++++
 board/common_selinux/skeleton/etc/inittab          | 29 ++++++++++++++++++++
 board/common_selinux/skeleton_permissions.txt      | 26 ++++++++++++++++++
 configs/qemu_x86_selinux_defconfig                 | 10 +++++++
 8 files changed, 177 insertions(+)
 create mode 100644 board/common_selinux/busybox-selinux-fragment.config
 create mode 100755 board/common_selinux/post_build.sh
 create mode 100644 board/common_selinux/skeleton/etc/audit/auditd.conf
 create mode 100644 board/common_selinux/skeleton/etc/audit/rules.d/audit.rules
 create mode 100755 board/common_selinux/skeleton/etc/fstab
 create mode 100755 board/common_selinux/skeleton/etc/inittab
 create mode 100755 board/common_selinux/skeleton_permissions.txt
board/common_selinux/busybox-selinux-fragment.config new file +32 -0
new file mode 100644
index 0000000..7222fac
@@ -0,0 +1,32 @@
+CONFIG_BUILD_LIBBUSYBOX=y
+CONFIG_CHCON=y
+CONFIG_DEFAULT_DEPMOD_FILE=""
+CONFIG_DEFAULT_MODULES_DIR=""
+CONFIG_FATATTR=y
+CONFIG_FEATURE_BASH_IS_ASH=y
+CONFIG_FEATURE_CHCON_LONG_OPTIONS=y
+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
+CONFIG_FEATURE_FIND_INUM=y
+CONFIG_FEATURE_HAVE_RPC=y
+CONFIG_FEATURE_INDIVIDUAL=y
+CONFIG_FEATURE_LAST_SMALL=y
+CONFIG_FEATURE_MOUNT_HELPERS=y
+CONFIG_FEATURE_MOUNT_LABEL=y
+CONFIG_FEATURE_MOUNT_NFS=y
+CONFIG_FEATURE_MOUNT_VERBOSE=y
+CONFIG_FEATURE_RUNCON_LONG_OPTIONS=y
+CONFIG_FEATURE_SWAPON_DISCARD=y
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
+CONFIG_FEATURE_TAR_SELINUX=y
+CONFIG_FEATURE_TOUCH_NODEREF=y
+CONFIG_FIRST_SYSTEM_ID=0
+CONFIG_GROUPS=y
+CONFIG_INIT_TERMINAL_TYPE=""
+CONFIG_LAST_ID=0
+CONFIG_LAST_SYSTEM_ID=0
+CONFIG_PAM=y
+CONFIG_RUNCON=y
+CONFIG_SELINUXENABLED=y
+CONFIG_SELINUX=y
+CONFIG_SHUF=y
+CONFIG_USERS=y
board/common_selinux/post_build.sh new file +30 -0
new file mode 100755
index 0000000..3509de9
@@ -0,0 +1,30 @@
+#!/bin/bash
+################################################################################
+#
+# DESCRIPTION:
+#     This script will do any "post-build" steps (after all packages are built
+#     but before image creation). Any filesystem permission issues should be
+#     fixed in this script.
+#
+#     The script requires following variables to be passed into it.
+#        $1 - the target directory (passed in by default by buildroot if
+#             script is BR2_ROOTFS_POST_BUILD_SCRIPT)
+#
+################################################################################
+
+DEST_DIR=$1
+
+# For SELinux targets, the /var directory symlinks need to be removed
+# and replaced with actual folders. The removal is done here and the
+# recreation is done in the permissions file for the common_selinux
+# local_skeleton
+for link in ${DEST_DIR}/var/{cache,lock,log,run,spool,tmp} ${DEST_DIR}/var/lib/misc; do
+	if [ -h ${link} ]; then
+		echo "Removing symlink ${link}"
+		unlink ${link}
+	fi
+done
+
+# Replace the /run folder with a symlink to /var/run
+rm -rf ${DEST_DIR}/run
+ln -sf -t ${DEST_DIR} run var/run
board/common_selinux/skeleton/etc/audit/auditd.conf new file +32 -0
new file mode 100644
index 0000000..039b7f0
@@ -0,0 +1,32 @@
+#
+# This file controls the configuration of the audit daemon
+#
+
+log_file = /var/log/audit/audit.log
+log_format = RAW
+log_group = root
+priority_boost = 4
+flush = INCREMENTAL
+freq = 20
+num_logs = 5
+disp_qos = lossy
+dispatcher = /usr/sbin/audispd
+name_format = NONE
+##name = mydomain
+max_log_file = 6 
+max_log_file_action = ROTATE
+space_left = 75
+space_left_action = IGNORE
+action_mail_acct = root
+admin_space_left = 50
+admin_space_left_action = IGNORE
+disk_full_action = IGNORE
+disk_error_action = IGNORE
+##tcp_listen_port = 
+tcp_listen_queue = 5
+tcp_max_per_addr = 1
+##tcp_client_ports = 1024-65535
+tcp_client_max_idle = 0
+enable_krb5 = no
+krb5_principal = auditd
+##krb5_key_file = /etc/audit/audit.key
board/common_selinux/skeleton/etc/audit/rules.d/audit.rules new file +3 -0
new file mode 100644
index 0000000..7c90606
@@ -0,0 +1,3 @@
+-D
+-b 1024
+-e 2
board/common_selinux/skeleton/etc/fstab new file +15 -0
new file mode 100755
index 0000000..d772349
@@ -0,0 +1,15 @@
+# /etc/fstab: static file system information.
+#
+# <file system> <mount pt>     <type>    <options>                      <dump> <pass>
+/dev/root       /              ext3      rw,noauto                       0      1
+proc            /proc          proc      defaults                        0      0
+devpts          /dev/pts       devpts    defaults,gid=5,mode=620         0      0
+tmpfs           /dev/shm       tmpfs     mode=0700,nodev,nosuid,noexec,size=1M    0      0
+tmpfs           /tmp           tmpfs     mode=0700,nodev,nosuid,noexec,size=200M  0      0
+tmpfs           /var/cache     tmpfs     mode=0700,nodev,nosuid,noexec,size=1M    0      0
+tmpfs           /var/lock      tmpfs     mode=0700,nodev,nosuid,noexec,size=1M    0      0
+tmpfs           /var/log       tmpfs     mode=0700,nodev,nosuid,noexec,size=50M   0      0
+tmpfs           /var/run       tmpfs     mode=0700,nodev,nosuid,noexec,size=1M    0      0
+tmpfs           /var/spool     tmpfs     mode=0700,nodev,nosuid,noexec,size=1M    0      0
+sysfs           /sys           sysfs     defaults                 0      0
+none            /selinux       selinuxfs noauto                   0      0
board/common_selinux/skeleton/etc/inittab new file +29 -0
new file mode 100755
index 0000000..05e05b2
@@ -0,0 +1,29 @@
+# /etc/inittab
+#
+# This inittab is a basic inittab sample for sysvinit, which mimics
+# Buildroot's default inittab for BusyBox.
+id:1:initdefault:
+
+proc::sysinit:/bin/mount -t proc proc /proc
+sysf::sysinit:/bin/mount -t sysfs sysfs /sys
+dpts::sysinit:/bin/mkdir -p /dev/pts -Z `matchpathcon -n /dev/pts`
+dshm::sysinit:/bin/mkdir -p /dev/shm -Z `matchpathcon -n /dev/shm`
+mpts::sysinit:/bin/mkdir -p /dev/pts
+mshm::sysinit:/bin/mkdir -p /dev/shm
+fsck::sysinit:/sbin/fsck -ARy
+moun::sysinit:/bin/mount -a
+host::sysinit:/bin/hostname -F /etc/hostname
+
+# now run any rc scripts
+init::bootwait:/etc/init.d/rcS
+
+S0::respawn:/sbin/getty -L  ttyS0 115200 vt100 # GENERIC_SERIAL
+
+# Stuff to do before rebooting
+shd0:06:wait:/etc/init.d/rcK
+shd1:06:wait:/sbin/swapoff -a
+shd2:06:wait:/bin/umount -a -r
+
+# The usual halt or reboot actions
+lt0:0:wait:/sbin/halt -dhp
+reb0:6:wait:/sbin/reboot
board/common_selinux/skeleton_permissions.txt new file +26 -0
new file mode 100755
index 0000000..374adbc
@@ -0,0 +1,26 @@
+################################################################################
+#
+# See <buildroot-source>/package/makedevs/README for details
+#
+# This device table is used to assign proper ownership and permissions
+# on the files in the local-skeleton directory. It doesn't create any device
+# file, as it is used in both static device configurations (where /dev/ is static)
+# and in dynamic configurations (where devtmpfs, mdev or udev are used).
+#
+# <name>				<type>	<mode>	<uid>	<gid>	<major>	<minor>	<start>	<inc>	<count>
+
+# All the necessary file permissions for /etc
+/etc/audit/auditd.conf			f	644	0	0	-	-	-	-	-
+/etc/audit/rules.d/audit.rules		f	644	0	0	-	-	-	-	-
+/etc/fstab				f	644	0	0	-	-	-	-	-
+/etc/inittab				f	644	0	0	-	-	-	-	-
+
+# Setup entries for all of the /var/* directories that need proper
+# mount points
+/var/cache				d	755	0	0	-	-	-	-	-
+/var/lib/misc				d	755	0	0	-	-	-	-	-
+/var/lock				d	755	0	0	-	-	-	-	-
+/var/log				d	755	0	0	-	-	-	-	-
+/var/run				d	755	0	0	-	-	-	-	-
+/var/spool				d	755	0	0	-	-	-	-	-
+/var/tmp				d	755	0	0	-	-	-	-	-
configs/qemu_x86_selinux_defconfig +10 -0
index ebfe4ca..54e9142 100644
@@ -17,6 +17,16 @@ BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/x86/linux-4.8.config"
 BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/x86/linux-4.x-selinux.config"
 
+# Customized busybox config providing a tailored
+# balance of applets vs full apps
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/common_selinux/busybox-selinux-fragment.config"
+
+# Pull in SELinux specific file overlay to allow login
+# in enforcing mode.
+BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt board/common_selinux/skeleton_permissions.txt"
+BR2_ROOTFS_OVERLAY="board/common_selinux/skeleton"
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/common_selinux/post_build.sh"
+
 # Ensure busybox is built as individual binaries for the
 # SELinux refpolicy to work correctly
 BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y
Signature · 1 line
1.9.1
#19 lore raw

PATCH v13 8/8 skeleton: busybox individual apps no symlink

In reply to Bryce Ferguson

From: Matt Weber <[email protected]>

Ignore the creation of a symlink when individual binaries are used.

---
Changes v12 -> v13:
- No changes

Changes v11 -> v12:
- Added a comment " allow busybox shell binary to remain when symlink are enabled"

Changes v1 -> v11:
- No changes

---
 package/skeleton/skeleton.mk | 4 ++++
 1 file changed, 4 insertions(+)
package/skeleton/skeleton.mk +4 -0
index 1000161..40ac3b1 100644
@@ -203,10 +203,14 @@ define SKELETON_BIN_SH
 	rm -f $(TARGET_DIR)/bin/sh
 endef
 else
+#Allow a busybox shell binary to remain and not get replaced by a symlink 
+#if individual binaries are enabled
+ifeq ($(BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES),)
 define SKELETON_BIN_SH
 	ln -sf $(SKELETON_TARGET_GENERIC_BIN_SH) $(TARGET_DIR)/bin/sh
 endef
 endif
+endif
 TARGET_FINALIZE_HOOKS += SKELETON_BIN_SH
 
 ifeq ($(BR2_TARGET_GENERIC_GETTY),y)
Signature · 1 line
1.9.1
#20 lore raw

PATCH v13 1/8 policycoreutils: new package

In reply to Bryce Ferguson

Hello,

Quoted 10 lines · Bryce Ferguson

From: Clayton Shotwell <[email protected]>

This package contains the core policy utilities that are required for basic operation of an SELinux system.

I've applied your patch to master, with the following changes:

[Thomas:
- Move the Config.in comment at the top of the Config.in file rather than between the main option and its sub-options, as this breaks menuconfig indentation.
- Fix the propagation of the libsemanage dependencies. libsemanage depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS and BR2_TOOLCHAIN_USES_GLIBC which were not accounted for. Since it depends on BR2_TOOLCHAIN_USES_GLIBC, then all the gettext related handling becomes useless and has been removed.
- Rename the prompt of the restorecond sub-option to just "restorecond".
- Use TARGET_CONFIGURE_OPTS and HOST_CONFIGURE_OPTS instead of passing LDFLAGS, CC, etc. manually.
- Use make "foreach" function for loops instead of shell "for" loops.
- Rework the explanation of why we're passing DESTDIR at build time.
- Minor formatting tweaks here and there.]

I've also added Clayton as the contact in the DEVELOPERS file for this package. If this is not correct, please send another patch to fix that up. We really want your help to fix build issues that may arise from this package.

Also, could you please have a look at what I answered to:

[PATCH v13 4/8] util-linux: selinux, audit, and pam support

and look at the alternative proposals I made:

https://patchwork.ozlabs.org/patch/703332/
https://patchwork.ozlabs.org/patch/703333/

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#21 lore raw

PATCH v13 1/8 policycoreutils: new package

Thomas,

Quoted 34 lines · Thomas Petazzoni

Hello,

Quoted 10 lines · Bryce Ferguson

From: Clayton Shotwell <[email protected]>

This package contains the core policy utilities that are required for basic operation of an SELinux system.

I've applied your patch to master, with the following changes:

[Thomas:
- Move the Config.in comment at the top of the Config.in file rather than between the main option and its sub-options, as this breaks menuconfig indentation.
- Fix the propagation of the libsemanage dependencies. libsemanage depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS and BR2_TOOLCHAIN_USES_GLIBC which were not accounted for. Since it depends on BR2_TOOLCHAIN_USES_GLIBC, then all the gettext related handling becomes useless and has been removed.
- Rename the prompt of the restorecond sub-option to just "restorecond".
- Use TARGET_CONFIGURE_OPTS and HOST_CONFIGURE_OPTS instead of passing LDFLAGS, CC, etc. manually.
- Use make "foreach" function for loops instead of shell "for" loops.
- Rework the explanation of why we're passing DESTDIR at build time.
- Minor formatting tweaks here and there.]

Quoted 4 lines

I've also added Clayton as the contact in the DEVELOPERS file for this package. If this is not correct, please send another patch to fix that up. We really want your help to fix build issues that may arise from this package.

Clayton is still a good contact and if not we'll update.

Definitely will be watching the autobuilder. I'm currently looking at a issue with "-D_FILE_OFFSET_BITS==64"

Quoted 10 lines

Also, could you please have a look at what I answered to:

[PATCH v13 4/8] util-linux: selinux, audit, and pam support

and look at the alternative proposals I made:

https://patchwork.ozlabs.org/patch/703332/
https://patchwork.ozlabs.org/patch/703333/

I'll let Bryce follow up on these.

Thanks!

Signature · 8 lines
Matthew L Weber / Pr Software Engineer
Airborne Information Systems / Security Systems and Software / Secure Platforms
MS 131-100, C Ave NE, Cedar Rapids, IA, 52498, USA
www.rockwellcollins.com

Note: Any Export License Required Information and License Restricted
Third Party Intellectual Property (TPIP) content must be encrypted and
sent to matthew.weber at corp.rockwellcollins.com.
#22 lore raw

PATCH v13 1/8 policycoreutils: new package

In reply to Thomas Petazzoni

Hello,

Quoted 38 lines · Thomas Petazzoni

Hello,

Quoted 10 lines · Bryce Ferguson

From: Clayton Shotwell <[email protected]>

This package contains the core policy utilities that are required for basic operation of an SELinux system.

I've applied your patch to master, with the following changes:

[Thomas:
- Move the Config.in comment at the top of the Config.in file rather than between the main option and its sub-options, as this breaks menuconfig indentation.
- Fix the propagation of the libsemanage dependencies. libsemanage depends on BR2_PACKAGE_AUDIT_ARCH_SUPPORTS and BR2_TOOLCHAIN_USES_GLIBC which were not accounted for. Since it depends on BR2_TOOLCHAIN_USES_GLIBC, then all the gettext related handling becomes useless and has been removed.
- Rename the prompt of the restorecond sub-option to just "restorecond".
- Use TARGET_CONFIGURE_OPTS and HOST_CONFIGURE_OPTS instead of passing LDFLAGS, CC, etc. manually.
- Use make "foreach" function for loops instead of shell "for" loops.
- Rework the explanation of why we're passing DESTDIR at build time.
- Minor formatting tweaks here and there.]

I've also added Clayton as the contact in the DEVELOPERS file for this package. If this is not correct, please send another patch to fix that up. We really want your help to fix build issues that may arise from this package.

Quoted 8 lines

Also, could you please have a look at what I answered to:

[PATCH v13 4/8] util-linux: selinux, audit, and pam support

and look at the alternative proposals I made:

https://patchwork.ozlabs.org/patch/703332/
https://patchwork.ozlabs.org/patch/703333/

I will perform a test build with these patches and provide tested-by feedback. I think we will want to use these patches instead of [PATCH v13 4/8]. So, to confirm, I will remove that patch completely as yours will supersede it, correct?

Thanks

Signature · 10 lines
Bryce Ferguson
Software Engineer
Airborne Information Solutions \ Secure Platforms

400 Collins Rd NE Cedar Rapids, Iowa 52498

Bryce.Ferguson at rockwellcollins.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20161212/f4273781/attachment.html>
#23 lore raw

PATCH v13 1/8 policycoreutils: new package

Hello,

Quoted 6 lines · Bryce Ferguson
Quoted 6 lines

Also, could you please have a look at what I answered to:

[PATCH v13 4/8] util-linux: selinux, audit, and pam support

and look at the alternative proposals I made:

Quoted 7 lines
Quoted 2 lines

https://patchwork.ozlabs.org/patch/703332/
https://patchwork.ozlabs.org/patch/703333/

I will perform a test build with these patches and provide tested-by feedback. I think we will want to use these patches instead of [PATCH v13 4/8]. So, to confirm, I will remove that patch completely as yours will supersede it, correct?

Yes, that's the idea. Thanks for the feedback.

Also, I'm on IRC #buildroot, usually starting from 9/9:30 PM CET, which should conveniently fall into the afternoon for you. It would be great if a few folks interested in SELinux in Buildroot on your side could be on IRC so we can quickly exchange on how to move forward with this.

Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com