mirror of
https://github.com/ARM-software/devlib.git
synced 2025-01-31 02:00:45 +00:00
devlib/collector/dmesg: handle CONFIG_SECURITY_DMESG_RESTRICT
Some kernels compiled with CONFIG_SECURITY_DMESG_RESTRICT can restrict reading the dmesg buffer to root user as a security hardening measure. Detect this case and use root accordingly.
This commit is contained in:
parent
0d259be01b
commit
552040f390
@ -20,6 +20,7 @@ from datetime import timedelta
|
|||||||
|
|
||||||
from devlib.collector import (CollectorBase, CollectorOutput,
|
from devlib.collector import (CollectorBase, CollectorOutput,
|
||||||
CollectorOutputEntry)
|
CollectorOutputEntry)
|
||||||
|
from devlib.target import KernelConfigTristate
|
||||||
|
|
||||||
|
|
||||||
class KernelLogEntry(object):
|
class KernelLogEntry(object):
|
||||||
@ -167,6 +168,8 @@ class DmesgCollector(CollectorBase):
|
|||||||
self.basic_dmesg = '--force-prefix' not in \
|
self.basic_dmesg = '--force-prefix' not in \
|
||||||
self.target.execute('dmesg -h', check_exit_code=False)
|
self.target.execute('dmesg -h', check_exit_code=False)
|
||||||
self.facility = facility
|
self.facility = facility
|
||||||
|
self.needs_root = bool(target.config.typed_config.get(
|
||||||
|
'CONFIG_SECURITY_DMESG_RESTRICT', KernelConfigTristate.NO))
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -178,7 +181,7 @@ class DmesgCollector(CollectorBase):
|
|||||||
|
|
||||||
def start(self):
|
def start(self):
|
||||||
self.reset()
|
self.reset()
|
||||||
# Empty the dmesg ring buffer
|
# Empty the dmesg ring buffer. This requires root in all cases
|
||||||
self.target.execute('dmesg -c', as_root=True)
|
self.target.execute('dmesg -c', as_root=True)
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
@ -195,7 +198,7 @@ class DmesgCollector(CollectorBase):
|
|||||||
facility=self.facility,
|
facility=self.facility,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.dmesg_out = self.target.execute(cmd)
|
self.dmesg_out = self.target.execute(cmd, as_root=self.needs_root)
|
||||||
|
|
||||||
def set_output(self, output_path):
|
def set_output(self, output_path):
|
||||||
self.output_path = output_path
|
self.output_path = output_path
|
||||||
|
Loading…
x
Reference in New Issue
Block a user