我试图ls
在 strace 下运行这个简单的程序,但它不让我运行。你们能想到这是为什么吗?
[jeffjose@skipper ~]$ strace ls
strace: ptrace(PTRACE_TRACEME, ...): Permission denied
我在 Fedora 17b 上,我的 shell 是tcsh
。如果需要,我可以提供更多信息。
更新:Christopher 指出,有一个关于此问题的错误报告。他还建议我调整 selinux 或禁用它。这是唯一的方法吗?这是什么意思?如果我这样做,我会做什么?有人可以详细说明并回答这个问题吗?我会选择它作为我的查询的正确答案。谢谢!
更新2:我正在进行一些调试gdb
,然后又出现了这个问题。幸运的是,那里清楚地提到了需要做什么。
warning: the SELinux boolean 'deny_ptrace' is enabled, you can disable this process attach protection by: (gdb) shell sudo setsebool deny_ptrace=0
我能够strace
毫无困难地运行。但这是什么意思?我刚才做了什么?
答案1
SELINUX 是用于强化服务器的(安全增强型 Linux),在桌面上运行它有点过分。
但是如果您想了解 selinux,一个好方法是在您的台式机上以宽容模式运行它。
我使用一个名为 setroubleshooter 的工具,当 selinux 的某个策略被违反时,它会向我发送桌面通知。如果操作合法,我可以“生成本地策略模块以允许此访问”
例如今天我的机器上的 gnome3 违反了 selinux,但由于我处于宽容模式,因此没有被拒绝。selinuxtroubleshooter 提供了以下建议:
You should report this as a bug.
You can generate a local policy module to allow this access.
Allow this access for now by executing:
# grep gnome-session-c /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
这两个命令允许您检查和设置 SELINUX
$ getenforce
Permissive
$ setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ]
玩得开心。