From patchwork Mon Dec 13 10:16:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Haines X-Patchwork-Id: 12673619 X-Patchwork-Delegate: paul@paul-moore.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D2B5AC433EF for ; Mon, 13 Dec 2021 10:23:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239679AbhLMKX0 (ORCPT ); Mon, 13 Dec 2021 05:23:26 -0500 Received: from mailomta17-re.btinternet.com ([213.120.69.110]:41161 "EHLO re-prd-fep-042.btinternet.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S239573AbhLMKQk (ORCPT ); Mon, 13 Dec 2021 05:16:40 -0500 Received: from re-prd-rgout-002.btmx-prd.synchronoss.net ([10.2.54.5]) by re-prd-fep-042.btinternet.com with ESMTP id <20211213101637.EWCV12369.re-prd-fep-042.btinternet.com@re-prd-rgout-002.btmx-prd.synchronoss.net>; Mon, 13 Dec 2021 10:16:37 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btinternet.com; s=btmx201904; t=1639390597; bh=CmBj0ZX+cEJPL+DLBKIjG0SU6ob3J+pfhzHyFhfG4fo=; h=From:To:Cc:Subject:Date:Message-Id:X-Mailer:In-Reply-To:References:MIME-Version; b=PwcGcCvO0K2fDzX156lgw85E8Ahr+64i1dOTQvKt08LgPFGnqNl+IBB0ktHONAFzmIFGVm8qqYLBKrtQBuLH1YkRvOc398CHvmHdhQf6GAvR4Adxf2e1Y6Xj5MQB45pvuoaZpqQwI1DPbeISceHORTg76gYQvk6YOd5hR+DduXEoVc4h5llhEMScatzfM7UsZ0qnnRM2vagsgBJGK/d+iQBvwEYKzczIcS6j67A/2H6eOgZ6gGJLW660lGIaRR2dO6w3N42Hg74FMe7+vAzG2fHM9gLmLhgKuUp7enFxRoX1KU1Y4JD6Of+ChgkyRwW1X3OQRLecGQpKMtHs71VyCA== Authentication-Results: btinternet.com; none X-SNCR-Rigid: 613A8DE80D18AF85 X-Originating-IP: [217.42.116.92] X-OWM-Source-IP: 217.42.116.92 (GB) X-OWM-Env-Sender: richard_c_haines@btinternet.com X-VadeSecure-score: verdict=clean score=0/300, class=clean X-RazorGate-Vade: gggruggvucftvghtrhhoucdtuddrgedvuddrkeekgddugecutefuodetggdotefrodftvfcurfhrohhfihhlvgemuceutffkvffkuffjvffgnffgvefqofdpqfgfvfenuceurghilhhouhhtmecufedtudenucenucfjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomheptfhitghhrghrugcujfgrihhnvghsuceorhhitghhrghruggptggphhgrihhnvghssegsthhinhhtvghrnhgvthdrtghomheqnecuggftrfgrthhtvghrnhepudeukefgueevudeitdelueeggeefheefffekhefgveegkeeiudeltdduvefgteetnecuffhomhgrihhnpehgihhthhhusgdrtghomhdpphhoshhtghhrvghsqhhlrdhorhhgnecukfhppedvudejrdegvddrudduiedrledvnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehhvghloheplhhotggrlhhhohhsthdrlhhotggrlhguohhmrghinhdpihhnvghtpedvudejrdegvddrudduiedrledvpdhmrghilhhfrhhomheprhhitghhrghruggptggphhgrihhnvghssegsthhinhhtvghrnhgvthdrtghomhdprhgtphhtthhopegusghurhhgvghnvghrsehlihhnuhigrdhmihgtrhhoshhofhhtrdgtohhmpdhrtghpthhtohepphgruhhlsehprghulhdqmhhoohhrvgdrtghomhdprhgtphhtthhopehrihgthhgrrhgupggtpghhrghinhgvshessghtihhnthgvrhhnvghtrdgtohhmpdhrtghpthhtohepshgvlhhinhhugiesvhhgvghrrdhkvghr nhgvlhdrohhrgh X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean X-SNCR-hdrdom: btinternet.com Received: from localhost.localdomain (217.42.116.92) by re-prd-rgout-002.btmx-prd.synchronoss.net (5.8.716.04) (authenticated as richard_c_haines@btinternet.com) id 613A8DE80D18AF85; Mon, 13 Dec 2021 10:16:37 +0000 From: Richard Haines To: selinux@vger.kernel.org Cc: paul@paul-moore.com, dburgener@linux.microsoft.com, Richard Haines Subject: [PATCH V2 1/4] selinux-notebook: Make file links consistent Date: Mon, 13 Dec 2021 10:16:19 +0000 Message-Id: <20211213101622.29888-2-richard_c_haines@btinternet.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211213101622.29888-1-richard_c_haines@btinternet.com> References: <20211213101622.29888-1-richard_c_haines@btinternet.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Before building EPUB book the file links to the notebook-examples directory area needs to be consistent. This will allow sed to fix the path during the build (as pandoc insists on defaulting to file:///EPUB/text). Signed-off-by: Richard Haines --- src/bounds_rules.md | 2 +- src/cil_overview.md | 2 +- src/embedded_systems.md | 12 ++++++------ src/network_support.md | 4 ++-- src/postgresql.md | 6 +++--- src/seandroid.md | 4 ++-- src/toc.md | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/bounds_rules.md b/src/bounds_rules.md index 650f817..b3afb6c 100644 --- a/src/bounds_rules.md +++ b/src/bounds_rules.md @@ -11,7 +11,7 @@ policy. However only the *typebounds* rule is currently implemented by The CIL language does support *userbounds* and *rolebounds* but these are resolved at policy compile time, not via the kernel at run-time (i.e. they are NOT enforced by the SELinux kernel services). The -[**CIL Reference Guide**](notebook-examples/selinux-policy/cil/CIL_Reference_Guide.pdf) +[**CIL Reference Guide**](./notebook-examples/selinux-policy/cil/CIL_Reference_Guide.pdf) gives details. ## *typebounds* diff --git a/src/cil_overview.md b/src/cil_overview.md index ddb70f6..f39e156 100644 --- a/src/cil_overview.md +++ b/src/cil_overview.md @@ -6,7 +6,7 @@ have been documented within the CIL compiler source, available at: A PDF version is included in this documentation: -[**CIL Reference Guide**](notebook-examples/selinux-policy/cil/CIL_Reference_Guide.pdf) +[**CIL Reference Guide**](./notebook-examples/selinux-policy/cil/CIL_Reference_Guide.pdf) The CIL compiler source can be found at: within the *secilc* and diff --git a/src/embedded_systems.md b/src/embedded_systems.md index f2c5112..75821fe 100644 --- a/src/embedded_systems.md +++ b/src/embedded_systems.md @@ -342,7 +342,7 @@ cd refpolicy For the initial configuration, either replace the current *build.conf* file with the sample -[***build.conf***](notebook-examples/embedded-policy/reference-policy/build.conf) +[***build.conf***](./notebook-examples/embedded-policy/reference-policy/build.conf) or edit the current *build.conf* file to the requirements (e.g. MONOLITHIC = y) Install the source policy in the build directory: @@ -367,7 +367,7 @@ make conf ``` Replace the current *policy/modules.conf* with the sample -[***modules.conf***](notebook-examples/embedded-policy/reference-policy/modules.conf) +[***modules.conf***](./notebook-examples/embedded-policy/reference-policy/modules.conf) and run: ``` @@ -482,7 +482,7 @@ git checkout android-4.1.1_r1 ``` - Copy the text below into a - [*Makefile*](notebook-examples/embedded-policy/android-policy/android-4/Makefile) + [*Makefile*](./notebook-examples/embedded-policy/android-policy/android-4/Makefile) installed in the *sepolicy* directory. ``` @@ -517,9 +517,9 @@ Over time the Android policy locked down more and more processes and then became more complex as policy version control was required when upgrading. The **Brillo** release was their first IoT release and can be built using the instructions in the -[*brillo/Makefile*](notebook-examples/embedded-policy/android-policy/brillo/Makefile) +[*brillo/Makefile*](./notebook-examples/embedded-policy/android-policy/brillo/Makefile) To build a policy containing a device, follow the instructions in the -[*brillo-device/Makefile*](notebook-examples/embedded-policy/android-policy/brillo-device/Makefile) +[*brillo-device/Makefile*](./notebook-examples/embedded-policy/android-policy/brillo-device/Makefile) as a device policy must be obtained from the Android repository. Later Android split policy into private and public segments, they also used @@ -527,7 +527,7 @@ CIL for some policy components as described in the [**Android - The SELinux Policy**](seandroid.md#the-selinux-policy) section. The **Android 10** release policy is an example where this split policy is used. This can be built using the instructions in the -[*android-10/Makefile*](notebook-examples/embedded-policy/android-policy/android-10/Makefile). +[*android-10/Makefile*](./notebook-examples/embedded-policy/android-policy/android-10/Makefile). [^fn_em_1]: An example of this integration is setting a new process context as shown in the Zygote code: diff --git a/src/network_support.md b/src/network_support.md index 21759bf..bec725e 100644 --- a/src/network_support.md +++ b/src/network_support.md @@ -349,7 +349,7 @@ netlabelctl calipso add pass doi:16 **Figure 16:** - *MLS Systems on different networks communicating via a gateway* There are CIPSO/CALIPSO examples in the -[***notebook-examples/network/netlabel***](notebook-examples/network/README.md) +[***notebook-examples/network/netlabel***](./notebook-examples/network/README.md) section. The CALIPSO example ***netlabelctl**(8)* commands for loopback are: ``` @@ -518,7 +518,7 @@ firewall-cmd --add-service ipsec ``` There are two simple examples in the -[***notebook-examples/network/ipsec***](notebook-examples/network/README.md) +[***notebook-examples/network/ipsec***](./notebook-examples/network/README.md) section. These use ***setkey**(8)* and commands directly and therefore do not require the IKE daemons. diff --git a/src/postgresql.md b/src/postgresql.md index 595a594..81a6d01 100644 --- a/src/postgresql.md +++ b/src/postgresql.md @@ -38,7 +38,7 @@ sequences. **Table 1: Database Security Context Information** shows a simple database with one table and two columns, each with their object class and associated security context (the [**Internal Tables**](#internal-tables) section shows these entries from the *testdb* database in the -[**Notebook sepgsql Example**](notebook-examples/sepgsql/testdb-example.sql). +[**Notebook sepgsql Example**](./notebook-examples/sepgsql/testdb-example.sql). The database object classes and permissions are described in [**Appendix A - Object Classes and Permissions**](object_classes_permissions.md#database-object-classes). @@ -88,7 +88,7 @@ The [**https://www.postgresql.org/docs/11/sepgsql.html**](https://www.postgresql page contains all the information required to install the *sepgsql* extension. There are also instructions in the -[**Notebook sepgsql Example - README**](notebook-examples/sepgsql/README.md) +[**Notebook sepgsql Example - README**](./notebook-examples/sepgsql/README.md) that describes building the example database used in the sections below. ## *SECURITY LABEL* SQL Command @@ -207,7 +207,7 @@ is shown in the table below and has been taken from These are entries taken from a '*SELECT * FROM pg_seclabel;*' command that refers to the example *testdb* database built using the -[**Notebook - testdb-example.sql**](notebook-examples/sepgsql/testdb-example.sql): +[**Notebook - testdb-example.sql**](./notebook-examples/sepgsql/testdb-example.sql): ``` objoid | classoid | objsubid | provider | label diff --git a/src/seandroid.md b/src/seandroid.md index dc90513..b6cb8b6 100644 --- a/src/seandroid.md +++ b/src/seandroid.md @@ -210,7 +210,7 @@ The Android specific object classes are described in the [**Android Classes & Permissions**](#android-classes-permissions) section. -The [**Embedded Systems - Building A Sample Android Policy**](embedded-systems#building-a-sample-android-policy) +The [**Embedded Systems - Building A Sample Android Policy**](embedded-systems.md#building-a-sample-android-policy) section explains how to build basic Android policies. These can be explored without requiring the full AOSP source and build environment. @@ -939,7 +939,7 @@ Usage: **insertkeys.py** - A helper script for mapping tags in the signature stanzas of *mac_permissions.xml* to public keys found in pem files (see the -[***mac_permissions.xml***](mac_permissions.xml) file section). +[***mac_permissions.xml***](#mac_permissions.xml) file section). The resulting *mac_permissions.xml* file will also be stripped of comments and whitespace. diff --git a/src/toc.md b/src/toc.md index f5778bd..a51732b 100644 --- a/src/toc.md +++ b/src/toc.md @@ -32,7 +32,7 @@ - [Policy Configuration Files](policy_config_files.md#policy-configuration-files) - [SELinux Policy Languages](policy_languages.md#the-selinux-policy-languages) - [CIL Policy Language](cil_overview.md#cil-overview) - - [CIL Reference Guide](notebook-examples/selinux-policy/cil/CIL_Reference_Guide.pdf) + - [CIL Reference Guide](./notebook-examples/selinux-policy/cil/CIL_Reference_Guide.pdf) - [Kernel Policy Language](kernel_policy_language.md#kernel-policy-language) - [Policy Configuration Statements](policy_config_statements.md#policy-configuration-statements) - [Default Rules](default_rules.md#default-object-rules) From patchwork Mon Dec 13 10:16:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Haines X-Patchwork-Id: 12673621 X-Patchwork-Delegate: paul@paul-moore.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D6CA4C433FE for ; Mon, 13 Dec 2021 10:23:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236881AbhLMKX1 (ORCPT ); Mon, 13 Dec 2021 05:23:27 -0500 Received: from mailomta14-re.btinternet.com ([213.120.69.107]:59222 "EHLO re-prd-fep-046.btinternet.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S244171AbhLMKQm (ORCPT ); Mon, 13 Dec 2021 05:16:42 -0500 Received: from re-prd-rgout-002.btmx-prd.synchronoss.net ([10.2.54.5]) by re-prd-fep-046.btinternet.com with ESMTP id <20211213101638.UFRB24326.re-prd-fep-046.btinternet.com@re-prd-rgout-002.btmx-prd.synchronoss.net>; Mon, 13 Dec 2021 10:16:38 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btinternet.com; s=btmx201904; t=1639390598; bh=J+htdAqH1j6s8H2JwjcdV2DMnosyDjPL0VOWa+LqcUA=; h=From:To:Cc:Subject:Date:Message-Id:X-Mailer:In-Reply-To:References:MIME-Version; b=Iw+9tahkU+rdlvHGw11lSA/rHC/1ym/9m+lLG3Ttb+5IjDokQr+5j4UljCDevKY2o29XoYq9qJS/QAIYL/VX+GhjsT7JcZ2DTVHK4kG65EX4lbuwt0wzcoIeueDn6aAdh3r95teDHzUvsTq28504YiS80OTKmB8YA/oaBiBoRWh1xXCXPGbnvAbnL5vbCuOXpmn7f95emLLEEkzN7K11MpE0bXpwD/JCV0GxDunKPTTTpBDfE8rP9f+Id7QL4i4A6JOGCj28XrXx41ZV6lQ492UiPM3LiDgVp3pTdneDdoI24y5giu6PJejnRWaTVJOhivHZE4PnMh1ckcbffBphCA== Authentication-Results: btinternet.com; none X-SNCR-Rigid: 613A8DE80D18AF92 X-Originating-IP: [217.42.116.92] X-OWM-Source-IP: 217.42.116.92 (GB) X-OWM-Env-Sender: richard_c_haines@btinternet.com X-VadeSecure-score: verdict=clean score=0/300, class=clean X-RazorGate-Vade: gggruggvucftvghtrhhoucdtuddrgedvuddrkeekgddugecutefuodetggdotefrodftvfcurfhrohhfihhlvgemuceutffkvffkuffjvffgnffgvefqofdpqfgfvfenuceurghilhhouhhtmecufedtudenucenucfjughrpefhvffufffkofgjfhgggfestdhqredtredttdenucfhrhhomheptfhitghhrghrugcujfgrihhnvghsuceorhhitghhrghruggptggphhgrihhnvghssegsthhinhhtvghrnhgvthdrtghomheqnecuggftrfgrthhtvghrnhepgfffuddvveffgfegveelledtieeludejueduhefftedtvefhtdehhfeuiefhgeetnecuffhomhgrihhnpehinhhkshgtrghpvgdrohhrghdpphhurhhlrdhorhhgpdhrvghsohhurhgtvgdrohhrghdpfiefrdhorhhgpdhsohhurhgtvghfohhrghgvrdhnvghtnecukfhppedvudejrdegvddrudduiedrledvnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehhvghloheplhhotggrlhhhohhsthdrlhhotggrlhguohhmrghinhdpihhnvghtpedvudejrdegvddrudduiedrledvpdhmrghilhhfrhhomheprhhitghhrghruggptggphhgrihhnvghssegsthhinhhtvghrnhgvthdrtghomhdprhgtphhtthhopegusghurhhgvghnvghrsehlihhnuhigrdhmihgtrhhoshhofhhtrdgtohhmpdhrtghpthhtohepphgruhhlsehprghulhdqmhhoohhrvgdrtghomhdprhgtphhtthhopehrihgthhgrrhgupggtpghhrghinhgvshessghtihhnthgv rhhnvghtrdgtohhmpdhrtghpthhtohepshgvlhhinhhugiesvhhgvghrrdhkvghrnhgvlhdrohhrgh X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean X-SNCR-hdrdom: btinternet.com Received: from localhost.localdomain (217.42.116.92) by re-prd-rgout-002.btmx-prd.synchronoss.net (5.8.716.04) (authenticated as richard_c_haines@btinternet.com) id 613A8DE80D18AF92; Mon, 13 Dec 2021 10:16:38 +0000 From: Richard Haines To: selinux@vger.kernel.org Cc: paul@paul-moore.com, dburgener@linux.microsoft.com, Richard Haines Subject: [PATCH V2 2/4] src/images: Remove current penguin Date: Mon, 13 Dec 2021 10:16:20 +0000 Message-Id: <20211213101622.29888-3-richard_c_haines@btinternet.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211213101622.29888-1-richard_c_haines@btinternet.com> References: <20211213101622.29888-1-richard_c_haines@btinternet.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Remove penguin image before replacement Signed-off-by: Richard Haines --- src/images/selinux-penguin.svg | 398 --------------------------------- 1 file changed, 398 deletions(-) delete mode 100644 src/images/selinux-penguin.svg diff --git a/src/images/selinux-penguin.svg b/src/images/selinux-penguin.svg deleted file mode 100644 index ca7f1c9..0000000 --- a/src/images/selinux-penguin.svg +++ /dev/null @@ -1,398 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From patchwork Mon Dec 13 10:16:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Haines X-Patchwork-Id: 12673615 X-Patchwork-Delegate: paul@paul-moore.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38732C433FE for ; Mon, 13 Dec 2021 10:18:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242594AbhLMKSq (ORCPT ); Mon, 13 Dec 2021 05:18:46 -0500 Received: from mailomta28-re.btinternet.com ([213.120.69.121]:39491 "EHLO re-prd-fep-047.btinternet.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S235027AbhLMKQn (ORCPT ); Mon, 13 Dec 2021 05:16:43 -0500 Received: from re-prd-rgout-002.btmx-prd.synchronoss.net ([10.2.54.5]) by re-prd-fep-047.btinternet.com with ESMTP id <20211213101639.SLUW24878.re-prd-fep-047.btinternet.com@re-prd-rgout-002.btmx-prd.synchronoss.net>; Mon, 13 Dec 2021 10:16:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btinternet.com; s=btmx201904; t=1639390599; bh=ovE0e7OCjvSlfTfx+3mERI6/JesKcnKfBCn+mXey2zA=; h=From:To:Cc:Subject:Date:Message-Id:X-Mailer:In-Reply-To:References:MIME-Version; b=fLP8x266LJjkXoIKrAGUVDUl5Iu/Jh2S7WWUByt9gk+t0TBJBq5Y/+pd/D8tLZupEvdDy2zgdTlt6q5RS/oTQZDkxh6QQ0/lhyn0oWv2Q62QDV9GXZfhFIXhZSua9ZZqjuwutXGV6nK7kfJBDJAi1BGB8vnoob0CsPz7Ca8JDcDX3RC7KdBAqMGtsPtd/D2nHy2P7pibZG+d9i9BBkLWZ//udaeeAqEtcT47dHpJ83HU8e1Y2jzQjE4EOqMQRKMSas5Xtchd/Kt7uBeO+7h9fQ2kSUj4S6Sg7HRxZXs9ExQ6oNj3FuyDlxj5EbJttN+j/Q4nDlu2i/NY4sKMYYFBkA== Authentication-Results: btinternet.com; none X-SNCR-Rigid: 613A8DE80D18AFC3 X-Originating-IP: [217.42.116.92] X-OWM-Source-IP: 217.42.116.92 (GB) X-OWM-Env-Sender: richard_c_haines@btinternet.com X-VadeSecure-score: verdict=clean score=0/300, class=clean X-RazorGate-Vade: gggruggvucftvghtrhhoucdtuddrgedvuddrkeekgddugecutefuodetggdotefrodftvfcurfhrohhfihhlvgemuceutffkvffkuffjvffgnffgvefqofdpqfgfvfenuceurghilhhouhhtmecufedtudenucenucfjughrpefhvffufffkofgjfhgggfestdekredtredttdenucfhrhhomheptfhitghhrghrugcujfgrihhnvghsuceorhhitghhrghruggptggphhgrihhnvghssegsthhinhhtvghrnhgvthdrtghomheqnecuggftrfgrthhtvghrnhepuedttdelleehueeggfeihfeitdehueekffeviedtffegffeiueegleejgeevgfeinecukfhppedvudejrdegvddrudduiedrledvnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehhvghloheplhhotggrlhhhohhsthdrlhhotggrlhguohhmrghinhdpihhnvghtpedvudejrdegvddrudduiedrledvpdhmrghilhhfrhhomheprhhitghhrghruggptggphhgrihhnvghssegsthhinhhtvghrnhgvthdrtghomhdprhgtphhtthhopegusghurhhgvghnvghrsehlihhnuhigrdhmihgtrhhoshhofhhtrdgtohhmpdhrtghpthhtohepphgruhhlsehprghulhdqmhhoohhrvgdrtghomhdprhgtphhtthhopehrihgthhgrrhgupggtpghhrghinhgvshessghtihhnthgvrhhnvghtrdgtohhmpdhrtghpthhtohepshgvlhhinhhugiesvhhgvghrrdhkvghrnhgvlhdrohhrgh X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean X-SNCR-hdrdom: btinternet.com Received: from localhost.localdomain (217.42.116.92) by re-prd-rgout-002.btmx-prd.synchronoss.net (5.8.716.04) (authenticated as richard_c_haines@btinternet.com) id 613A8DE80D18AFC3; Mon, 13 Dec 2021 10:16:39 +0000 From: Richard Haines To: selinux@vger.kernel.org Cc: paul@paul-moore.com, dburgener@linux.microsoft.com, Richard Haines Subject: [PATCH V2 3/4] src/images: Add new SELinux penguin Date: Mon, 13 Dec 2021 10:16:21 +0000 Message-Id: <20211213101622.29888-4-richard_c_haines@btinternet.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211213101622.29888-1-richard_c_haines@btinternet.com> References: <20211213101622.29888-1-richard_c_haines@btinternet.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Add new image from SELinux artwork repository for document covers. Signed-off-by: Richard Haines --- src/images/selinux-penguin_400.png | Bin 0 -> 65728 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/images/selinux-penguin_400.png GIT binary patch literal 65728 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�`Tc!LfR@|l#b5+u8<}GZYK*ZORh?u+ai7%o! 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 literal 0 HcmV?d00001 diff --git a/src/images/selinux-penguin_400.png b/src/images/selinux-penguin_400.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d30bfe836788b0859abae2cc955a4bd204c724 From patchwork Mon Dec 13 10:16:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Richard Haines X-Patchwork-Id: 12673617 X-Patchwork-Delegate: paul@paul-moore.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 15A1FC4332F for ; Mon, 13 Dec 2021 10:18:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242627AbhLMKSr (ORCPT ); Mon, 13 Dec 2021 05:18:47 -0500 Received: from mailomta12-re.btinternet.com ([213.120.69.105]:41426 "EHLO re-prd-fep-046.btinternet.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S239631AbhLMKQn (ORCPT ); Mon, 13 Dec 2021 05:16:43 -0500 Received: from re-prd-rgout-002.btmx-prd.synchronoss.net ([10.2.54.5]) by re-prd-fep-046.btinternet.com with ESMTP id <20211213101640.UFRH24326.re-prd-fep-046.btinternet.com@re-prd-rgout-002.btmx-prd.synchronoss.net>; Mon, 13 Dec 2021 10:16:40 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=btinternet.com; s=btmx201904; t=1639390600; bh=hwZOzLz/KFCGkGPcQQUzJoRPHD30MexAihxGjqIWqsw=; h=From:To:Cc:Subject:Date:Message-Id:X-Mailer:In-Reply-To:References:MIME-Version; b=BFlwMj0c16we3algNQ2Ap2WKkf+eRfBGkkxhqpaM1ZWJ1vx0NLmdQ2jTvUsZWY3U2LHuWY7X8uGiY9ZXFTJuPNpd4v0/FvUs5XWM4dAFQnCQezlSUxNf4zVQhLqA6MY7tCp3XX9pU/qJg0sbjM+G/U7tV299tQ8G/xhmu3JQFFbUDrvtPkaQGMH2ZFYPhbrUE99WiISVcrNHxku+qrFgIaxcPwykzgnpf07hHoo6WsA2z0ri3QMkItDr06Atvsdd4PKY9iWkhYf2/GJCj8Aju91DUboOc5RoGggXXS4Q1wtZvESPShuKf7n8dqTbdi5kiY0fNyPJ9bA0L7zxcewbGg== Authentication-Results: btinternet.com; none X-SNCR-Rigid: 613A8DE80D18AFD1 X-Originating-IP: [217.42.116.92] X-OWM-Source-IP: 217.42.116.92 (GB) X-OWM-Env-Sender: richard_c_haines@btinternet.com X-VadeSecure-score: verdict=clean score=0/300, class=clean X-RazorGate-Vade: gggruggvucftvghtrhhoucdtuddrgedvuddrkeekgddugecutefuodetggdotefrodftvfcurfhrohhfihhlvgemuceutffkvffkuffjvffgnffgvefqofdpqfgfvfenuceurghilhhouhhtmecufedtudenucenucfjughrpefhvffufffkofgjfhggtgfgsehtkeertdertdejnecuhfhrohhmpeftihgthhgrrhguucfjrghinhgvshcuoehrihgthhgrrhgupggtpghhrghinhgvshessghtihhnthgvrhhnvghtrdgtohhmqeenucggtffrrghtthgvrhhnpeffkeefheeugefgffejuefhfeeikeffudfhkeeufeefgeffjeeiudeklefffeevieenucffohhmrghinhepuhhpuggrthgvqdhmihhmvgdquggrthgrsggrshgvrdhlohgtrghlpdhgihhthhhusgdrtghomhdpghhnuhdrohhrghdpuggvvhhirghnthgrrhhtrdgtohhmpdgtohhnthhrihgsuhhtihhnghdrmhgunecukfhppedvudejrdegvddrudduiedrledvnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehhvghloheplhhotggrlhhhohhsthdrlhhotggrlhguohhmrghinhdpihhnvghtpedvudejrdegvddrudduiedrledvpdhmrghilhhfrhhomheprhhitghhrghruggptggphhgrihhnvghssegsthhinhhtvghrnhgvthdrtghomhdprhgtphhtthhopegusghurhhgvghnvghrsehlihhnuhigrdhmihgtrhhoshhofhhtrdgtohhmpdhrtghpthhtohepphgruhhlsehprghulhdqmhhoohhrvgdrtghomhdprhgtphhtthhopehrihgt hhgrrhgupggtpghhrghinhgvshessghtihhnthgvrhhnvghtrdgtohhmpdhrtghpthhtohepshgvlhhinhhugiesvhhgvghrrdhkvghrnhgvlhdrohhrgh X-RazorGate-Vade-Verdict: clean 0 X-RazorGate-Vade-Classification: clean X-SNCR-hdrdom: btinternet.com Received: from localhost.localdomain (217.42.116.92) by re-prd-rgout-002.btmx-prd.synchronoss.net (5.8.716.04) (authenticated as richard_c_haines@btinternet.com) id 613A8DE80D18AFD1; Mon, 13 Dec 2021 10:16:40 +0000 From: Richard Haines To: selinux@vger.kernel.org Cc: paul@paul-moore.com, dburgener@linux.microsoft.com, Richard Haines Subject: [PATCH V2 4/4] selinux-notebook: Add epub build Date: Mon, 13 Dec 2021 10:16:22 +0000 Message-Id: <20211213101622.29888-5-richard_c_haines@btinternet.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211213101622.29888-1-richard_c_haines@btinternet.com> References: <20211213101622.29888-1-richard_c_haines@btinternet.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: selinux@vger.kernel.org Build an epub document. Signed-off-by: Richard Haines --- BUILD.md | 23 +++++++++++++++----- CONTRIBUTING.md | 10 ++++----- Makefile | 48 +++++++++++++++++++++++++++++++++++------ README.md | 9 ++++---- src/cover.md | 16 ++++++++++++++ src/cover_epub.md | 2 ++ src/metadata.yaml | 14 ++++++++++++ src/styles_epub.css | 52 +++++++++++++++++++++++++++++++++++++++++++++ src/styles_html.css | 8 +++++++ src/styles_pdf.css | 8 +++++++ src/title.md | 16 -------------- 11 files changed, 169 insertions(+), 37 deletions(-) create mode 100644 src/cover.md create mode 100644 src/cover_epub.md create mode 100644 src/styles_epub.css diff --git a/BUILD.md b/BUILD.md index 34045cf..e6107ad 100644 --- a/BUILD.md +++ b/BUILD.md @@ -29,9 +29,9 @@ Extract from the README: > > % update-mime-database ~/.local/share/mime -# Build HTML or PDF Versions +# Build HTML, PDF or EPUB Versions -The SELinux Notebook can be rendered in both HTML and PDF using the included +The SELinux Notebook can be rendered in HTML, PDF and EPUB using the included Makefile. In order to build these versions of the notebook, "pandoc" and "weasyprint" must be installed on your system; consult your distribution documentation for information on installing these packages. @@ -41,9 +41,22 @@ following command: % make pdf -... and the following will generate the HTML notebook: +... the following will generate the HTML notebook: % make html -The PDF and HTML notebooks will be generated in newly created "pdf" and "html" -directories. +... and the following will generate the EPUB notebook: + + % make epub + +The PDF, HTML and EPUB notebooks will be generated in newly created "pdf", +"html" and "epub" directories. + +**Notes:** + +- The Notebook examples are not embedded into any of the document formats, + however they will have links to them via their build directory. +- When viewing the Notebook EPUB version, eBook readers do vary on rendering + tables, displaying images and resolving links to the examples. For Linux, + Foliate was found to be the most consistent, and can be found at: + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 43f1934..db137b0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,11 +10,11 @@ project. ## Make Sure Your Changes Render Correctly -The SELinux Notebook can be viewed in three different formats: Markdown, HTML, -and PDF. Your changes need to render correctly in all three formats. The -HTML and PDF formatted notebooks can be created using the included Makefile -and Markdown can be viewed directly via the GitHub source browser or any -number of Markdown viewers. +The SELinux Notebook can be viewed in four different formats: Markdown, HTML, +PDF and EPUB. Your changes need to render correctly in all four formats. +The HTML, PDF and EPUB formatted notebooks can be created using the included +Makefile and Markdown can be viewed directly via the GitHub source browser +or any number of Markdown viewers. ## Explain Your Work diff --git a/Makefile b/Makefile index f41bb16..1903982 100644 --- a/Makefile +++ b/Makefile @@ -2,20 +2,23 @@ # The SELinux Notebook # +SED = sed +PANDOC = pandoc CWD ?= $(shell pwd) SCRIPTS = $(CWD)/scripts SRCDIR = $(CWD)/src HTMLDIR ?= $(CWD)/html PDFDIR ?= $(CWD)/pdf +EPUBDIR ?= $(CWD)/epub IMAGES = $(SRCDIR)/images EXAMPLES = $(SRCDIR)/notebook-examples +EXAMPLES_EPUB = $(shell echo $(EXAMPLES) | $(SED) 's;/;\\/;g') METADATA = $(SRCDIR)/metadata.yaml HTML_OUT = SELinux_Notebook.html PDF_OUT = SELinux_Notebook.pdf +EPUB_OUT = SELinux_Notebook.epub -SED = sed -PANDOC = pandoc PANDOC_OPTS = --from markdown+pipe_tables PANDOC_OPTS += -V mainfont='DejaVu Serif' -V monofont='DejaVu Sans Mono' @@ -27,8 +30,8 @@ help: @echo "targets:" @grep "^#@ " Makefile | cut -c4- -#@ all build both the PDF and HTML versions -all: html pdf +#@ all build the PDF, HTML and EPUB versions +all: html pdf epub #@ navlinks update the navigation links in the markdown sources .PHONY: navlinks @@ -46,11 +49,13 @@ navlinks: echo "" >> $$i; \ done -#@ pdf build both the PDF version +#@ pdf build PDF version .PHONY: pdf pdf: $(DEP_FILE_LIST) $(METADATA) mkdir -p $(PDFDIR) cat $(METADATA) > $(PDFDIR)/.full_document.md + cat $(SRCDIR)/cover.md | $(SCRIPTS)/macros_section.sh \ + >> $(PDFDIR)/.full_document.md for i in $(DEP_FILE_LIST); do \ cat $$i | $(SCRIPTS)/macros_section.sh \ >> $(PDFDIR)/.full_document.md; \ @@ -70,11 +75,13 @@ pdf: $(DEP_FILE_LIST) $(METADATA) --css=$(SRCDIR)/styles_pdf.css --self-contained \ $(PDFDIR)/.full_document.md -o $(PDFDIR)/$(PDF_OUT)) -#@ html build both the HTML version +#@ html build HTML version .PHONY: html html: $(DEP_FILE_LIST) $(METADATA) mkdir -p $(HTMLDIR) cat $(METADATA) > $(HTMLDIR)/.full_document.md + cat $(SRCDIR)/cover.md | $(SCRIPTS)/macros_section.sh \ + >> $(HTMLDIR)/.full_document.md for i in $(DEP_FILE_LIST); do \ cat $$i | $(SCRIPTS)/macros_section.sh \ >> $(HTMLDIR)/.full_document.md; \ @@ -92,7 +99,34 @@ html: $(DEP_FILE_LIST) $(METADATA) --css=$(SRCDIR)/styles_html.css --self-contained \ $(HTMLDIR)/.full_document.md -o $(HTMLDIR)/$(HTML_OUT)) +#@ epub build EPUB version +.PHONY: epub +epub: $(DEP_FILE_LIST) $(METADATA) + mkdir -p $(EPUBDIR) + cat $(METADATA) > $(EPUBDIR)/.full_document.md + cat $(SRCDIR)/cover_epub.md | $(SCRIPTS)/macros_section.sh \ + >> $(EPUBDIR)/.full_document.md + for i in $(DEP_FILE_LIST); do \ + cat $$i | $(SCRIPTS)/macros_section.sh \ + >> $(EPUBDIR)/.full_document.md; \ + echo '' \ + >> $(EPUBDIR)/.full_document.md; \ + done + $(SCRIPTS)/macros_doc.sh $(EPUBDIR)/.full_document.md + $(SED) -i 's/](.*\.md#/](#/' $(EPUBDIR)/.full_document.md + # remove the section file name from all HTML links + $(SED) -i 's/href=.*\.md#/href="#/' $(EPUBDIR)/.full_document.md + # fixup path for examples, otherwise defaults to file:///EPUB/text + $(SED) -i 's/](.\/notebook-examples/](file:\/\/$(EXAMPLES_EPUB)/g' \ + $(EPUBDIR)/.full_document.md + [ -e $(EPUBDIR)/images ] || ln -s $(IMAGES) $(EPUBDIR) + [ -e $(EPUBDIR)/notebook-examples ] || ln -s $(EXAMPLES) $(EPUBDIR) + (cd $(EPUBDIR); $(PANDOC) $(PANDOC_OPTS) \ + --epub-cover-image=$(SRCDIR)/images/selinux-penguin_400.png \ + --css=$(SRCDIR)/styles_epub.css --self-contained \ + $(EPUBDIR)/.full_document.md -o $(EPUBDIR)/$(EPUB_OUT)) + #@ clean clean any build artifacts .PHONY: clean clean: - rm -rf $(HTMLDIR) $(PDFDIR) + rm -rf $(HTMLDIR) $(PDFDIR) $(EPUBDIR) diff --git a/README.md b/README.md index 9558101..f2e1c94 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # The SELinux Notebook -![](./src/images/selinux-penguin.svg) +![](./src/images/selinux-penguin_400.png) ## Introduction @@ -69,7 +69,8 @@ See: **** Logo designed by [*Máirín Duffy*](http://pookstar.deviantart.com/) -## Building HTML/PDF Versions +## Building HTML/PDF/EPUB Versions -The [**BUILD.md**](BUILD.md) file has more information on building HTML and PDF -versions of the notebook as well as alternate ways to view the source markdown. +The [**BUILD.md**](BUILD.md) file has more information on building HTML, PDF +and EPUB versions of the notebook as well as alternate ways to view the +source markdown. diff --git a/src/cover.md b/src/cover.md new file mode 100644 index 0000000..d3be82c --- /dev/null +++ b/src/cover.md @@ -0,0 +1,16 @@ + + + +# The SELinux Notebook + + + +![](./images/selinux-penguin_400.png) + + +**** + + + + + diff --git a/src/cover_epub.md b/src/cover_epub.md new file mode 100644 index 0000000..3f90deb --- /dev/null +++ b/src/cover_epub.md @@ -0,0 +1,2 @@ +**** + diff --git a/src/metadata.yaml b/src/metadata.yaml index 5097763..89bb523 100644 --- a/src/metadata.yaml +++ b/src/metadata.yaml @@ -1,3 +1,17 @@ --- title: The SELinux Notebook +author: Originally created by Richard Haines +subject: Security-Enhanced Linux (SELinux) +description: | + Gives a description of SELinux and its major components to provide + Mandatory Access Control services for GNU / Linux. Hopefully it will + show how the SELinux components link together and how SELinux-aware + applications / object manager have been implemented. +contributor: | + Anyone may contribute to this book, see + +rights: | + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 or + any later version published by the Free Software Foundation. --- diff --git a/src/styles_epub.css b/src/styles_epub.css new file mode 100644 index 0000000..3942ab3 --- /dev/null +++ b/src/styles_epub.css @@ -0,0 +1,52 @@ + +.title { + /* pandoc generates the h1 title with the "title" class */ + display: none; +} + +.author { + display: none; +} + +.rights { + display: none; +} + +html { + font-size: 100%; +} + +a { + color: blue; +} + +table { + /* limit to 95% page width */ + min-width: 50%; + max-width: 95%; + /* combine table borders when they are adjacent */ + border-collapse: collapse; +} +table th { + padding: 0.5em; + border: 1px solid black; + background-color: #d3d3d3; +} +table tr, td { + padding: 0.5em; + border: 1px solid black; +} + +img { + /* center and limit to 95% page width */ + display: block; + margin-left: auto; + margin-right: auto; + max-width: 95%; +} + +pre { + width: 95%; + padding: 1em; + background-color: #f5f5f5; +} diff --git a/src/styles_html.css b/src/styles_html.css index fef851e..0f28003 100644 --- a/src/styles_html.css +++ b/src/styles_html.css @@ -4,6 +4,14 @@ display: none; } +.author { + display: none; +} + +.rights { + display: none; +} + html { /* 1em is specified as 16pt, 75% should be 12pt */ font-size: 100%; diff --git a/src/styles_pdf.css b/src/styles_pdf.css index f0bba23..12ed81c 100644 --- a/src/styles_pdf.css +++ b/src/styles_pdf.css @@ -48,6 +48,14 @@ display: none; } +.author { + display: none; +} + +.rights { + display: none; +} + html { /* 1em is specified as 16pt, 75% should be 12pt */ font-size: 75%; diff --git a/src/title.md b/src/title.md index 03c5795..7f21617 100644 --- a/src/title.md +++ b/src/title.md @@ -1,19 +1,3 @@ - - - -# The SELinux Notebook - - - -![](./images/selinux-penguin.svg) - - -**** - - - - - ## Copyright Information