无法在 xenial 上运行 systemtap 脚本。可能是 SSL 问题

无法在 xenial 上运行 systemtap 脚本。可能是 SSL 问题

我有一台运行 xenial 的笔记本电脑。我没有安装调试内核符号,因为我似乎找不到它们。我在 stapdev 和 stapusr 组中,uname -a如下所示:

Linux zippy1981-Inspiron-15-7568 4.4.0-21-generic #37-Ubuntu SMP 2016 年 4 月 18 日星期一 18:33:37 UTC x86_64 x86_64 x86_64 GNU/Linux

这似乎是缺少 SSL 证书的问题,但我不知道如何纠正它。运行一个简单的 stap 单行输出以下内容:

zippy1981@zippy1981-Inspiron-15-7568:~$ stap -e 'probe kernel.function("sys_open") {log("hello world") exit()}'
Using a compile server.
Error initializing NSS for dbm:/etc/systemtap/ssl/client
(-8015) Database has the wrong format.
Unable to find a suitable compile server.  [man stap-server]
The following servers are online:
 host=zippy1981-Inspiron-15-7568.local address=fe80::881:e05c:d69d:de29%enx00e08f008e53 port=37512 sysinfo="4.4.0-21-generic x86_64" version=2.9 certinfo="00:a6:b9:e1:85"
 host=zippy1981-Inspiron-15-7568.local address=172.17.0.1 port=37512 sysinfo="4.4.0-21-generic x86_64" version=2.9 certinfo="00:a6:b9:e1:85"
 host=zippy1981-Inspiron-15-7568.local address=192.168.0.211 port=37512 sysinfo="4.4.0-21-generic x86_64" version=2.9 certinfo="00:a6:b9:e1:85"
No servers matched the selection criteria of online,trusted,compatible.
Passes: via server failed.  Try again with another '-v' option.
The kernel on your system requires modules to be signed for loading.
The module created by compiling your script must be signed by a systemtap compile-server.  [man stap-server]
--use-server was automatically selected in order to request compilation by a compile-server.
Tip: /usr/share/doc/systemtap/README.Debian should help you get started.
zippy1981@zippy1981-Inspiron-15-7568:~$

我应该怎么办?

答案1

这个旧版本的 systemtap 的错误消息对问题的描述不够具体。关键行是“使用编译服务器”。为什么使用这样的服务器?因为您的帐户没有构建和运行任意 systemtap 脚本所需的权限。Systemtap 希望通过使用由您的本地系统管理员授权的编译服务器,您的非特权用户能够运行该脚本。然后,由于它找到的所有服务器都没有这样的授权,因此这种努力失败了。

root那么,该怎么办呢?最简单的方法是以:的身份运行 systemtap sudo stap ....。第二简单的方法是将您的用户 ID 放入stapdevstapusrUNIX 组中,其权限大致与 root 相当。在这两种情况下,您都可以在本地构建和运行任意 stap 脚本。第三简单的方法是设置远程编译和有限权限;有关详细信息,请参阅man stap-server

相关内容