Skip to content

Commit c8b5e15

Browse files
committed
selinux: add SelinuxSetEnforceMode implementation
Signed-off-by: Ahmet Alp Balkan <[email protected]>
1 parent f03b7f8 commit c8b5e15

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

libcontainer/selinux/selinux.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,14 @@ func ReserveLabel(scon string) {
231231
}
232232
}
233233

234+
func selinuxEnforcePath() string {
235+
return fmt.Sprintf("%s/enforce", selinuxPath)
236+
}
237+
234238
func SelinuxGetEnforce() int {
235239
var enforce int
236240

237-
enforceS, err := readCon(fmt.Sprintf("%s/enforce", selinuxPath))
241+
enforceS, err := readCon(selinuxEnforcePath())
238242
if err != nil {
239243
return -1
240244
}
@@ -246,6 +250,10 @@ func SelinuxGetEnforce() int {
246250
return enforce
247251
}
248252

253+
func SelinuxSetEnforce(mode int) error {
254+
return writeCon(selinuxEnforcePath(), fmt.Sprintf("%d", mode))
255+
}
256+
249257
func SelinuxGetEnforceMode() int {
250258
switch readConfig(selinuxTag) {
251259
case "enforcing":

libcontainer/selinux/selinux_test.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,18 @@ func TestSELinux(t *testing.T) {
4040
t.Log(flabel)
4141
selinux.FreeLxcContexts(plabel)
4242
t.Log("getenforce ", selinux.SelinuxGetEnforce())
43-
t.Log("getenforcemode ", selinux.SelinuxGetEnforceMode())
43+
mode := selinux.SelinuxGetEnforceMode()
44+
t.Log("getenforcemode ", mode)
45+
46+
defer selinux.SelinuxSetEnforce(mode)
47+
if err := selinux.SelinuxSetEnforce(selinux.Enforcing); err != nil {
48+
t.Fatalf("enforcing selinux failed: %v", err)
49+
}
50+
if err := selinux.SelinuxSetEnforce(selinux.Permissive); err != nil {
51+
t.Fatalf("setting selinux mode to permissive failed: %v", err)
52+
}
53+
selinux.SelinuxSetEnforce(mode)
54+
4455
pid := os.Getpid()
4556
t.Logf("PID:%d MCS:%s\n", pid, selinux.IntToMcs(pid, 1023))
4657
err = selinux.Setfscreatecon("unconfined_u:unconfined_r:unconfined_t:s0")

0 commit comments

Comments
 (0)