无法在 strace 下运行程序

无法在 strace 下运行程序

我试图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 ]

玩得开心。

相关内容