2018-03-06 14:11:44 -05:00
/ *
2018-12-20 13:32:31 +02:00
Copyright 2017 - 2018 The Kubernetes Authors .
2018-03-06 14:11:44 -05:00
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
2018-12-20 13:32:31 +02:00
package kernel
2018-03-06 14:11:44 -05:00
import (
"fmt"
2018-06-21 19:02:30 +03:00
"io/ioutil"
2020-05-20 11:31:09 +03:00
"sigs.k8s.io/node-feature-discovery/source"
2018-03-06 14:11:44 -05:00
)
2018-12-20 13:32:31 +02:00
// Detect if selinux has been enabled in the kernel
func SelinuxEnabled ( ) ( bool , error ) {
2020-05-20 11:31:09 +03:00
status , err := ioutil . ReadFile ( source . SysfsDir . Path ( "fs/selinux/enforce" ) )
2018-03-06 14:11:44 -05:00
if err != nil {
2021-02-25 12:12:06 -05:00
return false , fmt . Errorf ( "failed to detect the status of selinux, please check if the system supports selinux and make sure /sys on the host is mounted into the container: %s" , err . Error ( ) )
2018-03-06 14:11:44 -05:00
}
if status [ 0 ] == byte ( '1' ) {
// selinux is enabled.
2018-12-20 13:32:31 +02:00
return true , nil
2018-03-06 14:11:44 -05:00
}
2018-12-20 13:32:31 +02:00
return false , nil
2018-03-06 14:11:44 -05:00
}