Skip to content

Commit f28d463

Browse files
committed
Enable SELinux
1 parent 90c8de9 commit f28d463

File tree

12 files changed

+71
-2
lines changed

12 files changed

+71
-2
lines changed

Dockerfile.dapper

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ FROM ubuntu:15.10
22

33
RUN apt-get update && \
44
apt-get -y install locales sudo vim less curl wget git rsync build-essential syslinux isolinux xorriso \
5-
libblkid-dev libmount-dev libselinux1-dev cpio genisoimage qemu-kvm python-pip ca-certificates
5+
libblkid-dev libmount-dev libselinux1-dev cpio genisoimage qemu-kvm python-pip ca-certificates pkg-config
66

77
RUN locale-gen en_US.UTF-8
88
ENV LANG en_US.UTF-8

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ assets/docker:
2727
curl -L "$(DOCKER_BINARY_URL)" > $@
2828
chmod +x $@
2929

30+
assets/selinux/policy.29:
31+
mkdir -p $(dir $@)
32+
curl -L "$(SELINUX_POLICY_URL)" > $@
3033

3134
ifdef COMPILED_KERNEL_URL
3235

@@ -43,7 +46,7 @@ $(BUILD)/kernel/:
4346
curl -L "$(COMPILED_KERNEL_URL)" | tar -xzf - -C $@
4447

4548

46-
$(DIST)/artifacts/initrd: bin/ros assets/docker $(BUILD)/kernel/ $(BUILD)/images.tar
49+
$(DIST)/artifacts/initrd: bin/ros assets/docker assets/selinux/policy.29 $(BUILD)/kernel/ $(BUILD)/images.tar
4750
mkdir -p $(dir $@)
4851
ARCH=$(ARCH) DFS_IMAGE=$(DFS_IMAGE) DEV_BUILD=$(DEV_BUILD) ./scripts/mk-initrd.sh $@
4952

assets/selinux/config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
SELINUX=permissive
2+
SELINUXTYPE=ros

assets/selinux/failsafe_context

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
system_r:kernel_t:s0

assets/selinux/lxc_contexts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
process = "system_u:system_r:svirt_lxc_net_t:s0"
2+
content = "system_u:object_r:virt_var_lib_t:s0"
3+
file = "system_u:object_r:svirt_lxc_file_t:s0"

assets/selinux/seusers

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
__default__:system_u:s0-s0

build.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
IMAGE_NAME=rancher/os
22
VERSION=v0.4.4-dev
33
DFS_IMAGE=rancher/docker:v1.10.1
4+
SELINUX_POLICY_URL=https://github.com/rancher/refpolicy/releases/download/v0.0.1/policy.29

init/init.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,10 @@ func RunInit() error {
220220
return config.LoadConfig()
221221
},
222222
loadModules,
223+
func(c *config.CloudConfig) (*config.CloudConfig, error) {
224+
return c, dockerlaunch.PrepareFs(&mountConfig)
225+
},
226+
initializeSelinux,
223227
sysInit,
224228
}
225229

@@ -236,5 +240,6 @@ func RunInit() error {
236240
if err != nil {
237241
return err
238242
}
243+
239244
return pidOne()
240245
}

init/selinux.go

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// +build linux
2+
3+
package init
4+
5+
import (
6+
log "github.com/Sirupsen/logrus"
7+
"github.com/rancher/os/config"
8+
"github.com/rancher/os/selinux"
9+
"io/ioutil"
10+
)
11+
12+
func initializeSelinux(c *config.CloudConfig) (*config.CloudConfig, error) {
13+
ret, _ := selinux.InitializeSelinux()
14+
15+
if ret != 0 {
16+
log.Debug("Unable to initialize SELinux")
17+
return c, nil
18+
}
19+
20+
// Set allow_execstack boolean to true
21+
if err := ioutil.WriteFile("/sys/fs/selinux/booleans/allow_execstack", []byte("1"), 0644); err != nil {
22+
log.Debug(err)
23+
return c, nil
24+
}
25+
26+
if err := ioutil.WriteFile("/sys/fs/selinux/commit_pending_bools", []byte("1"), 0644); err != nil {
27+
log.Debug(err)
28+
return c, nil
29+
}
30+
31+
return c, nil
32+
}

os-config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ rancher:
262262
- /etc/resolv.conf:/etc/resolv.conf
263263
- /etc/rkt:/etc/rkt
264264
- /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt.rancher
265+
- /etc/selinux:/etc/selinux
265266
- /lib/firmware:/lib/firmware
266267
- /lib/modules:/lib/modules
267268
- /run:/run

0 commit comments

Comments
 (0)