Running the KernelShark GUI with Root privileges is not recommended due to security reasons. The user will be allowed to continue on its own risk. Suggested-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204475 Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@xxxxxxxxx> --- kernel-shark/src/KsMainWindow.cpp | 28 ++++++++++++++++++++++++++++ kernel-shark/src/KsMainWindow.hpp | 2 ++ 2 files changed, 30 insertions(+) diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp index 6439265..2f86517 100644 --- a/kernel-shark/src/KsMainWindow.cpp +++ b/kernel-shark/src/KsMainWindow.cpp @@ -76,6 +76,9 @@ KsMainWindow::KsMainWindow(QWidget *parent) _createMenus(); _initCapture(); + if (geteuid() == 0) + _rootWarning(); + _splitter.addWidget(&_graph); _splitter.addWidget(&_view); setCentralWidget(&_splitter); @@ -1271,3 +1274,28 @@ void KsMainWindow::_deselectB() _mState.updateLabels(); _graph.glPtr()->model()->update(); } + +void KsMainWindow::_rootWarning() +{ + QString cbFlag("noRootWarn"); + + if (_settings.value(cbFlag).toBool()) + return; + + QMessageBox warn; + warn.setText("KernelShark will have Root privileges."); + warn.setInformativeText("Continue on your own risk."); + warn.setIcon(QMessageBox::Warning); + warn.setStandardButtons(QMessageBox::Close); + + QCheckBox cb("Don't show this message again."); + + auto lamCbChec = [&] (int state) { + if (state) + _settings.setValue(cbFlag, true); + }; + + connect(&cb, &QCheckBox::stateChanged, lamCbChec); + warn.setCheckBox(&cb); + warn.exec(); +} diff --git a/kernel-shark/src/KsMainWindow.hpp b/kernel-shark/src/KsMainWindow.hpp index 62e66a0..4a7b8ab 100644 --- a/kernel-shark/src/KsMainWindow.hpp +++ b/kernel-shark/src/KsMainWindow.hpp @@ -238,6 +238,8 @@ private: void _deselectB(); + void _rootWarning(); + void _updateFilterMenu(); void _filterSyncCBoxUpdate(kshark_context *kshark_ctx); -- 2.20.1