linux不能读取文件,linux – 即使拥有适当的权限,也无法读取/ proc / pid / stack文件...

据我所知,如果我有权这样做,我应该能够读取常规文件内容.

以下是运行Linux系统的其中一个进程的堆栈文件(/ proc / pid / stack)的ls -l堆栈输出:

-r – r – r– 1 Usr1 Usr1 0 Sep 20 18:08 stack

查看权限,我应该能够读取该文件.

虽然每当我尝试将文件(vi堆栈)读取为Usr1时,它只显示一个空文件.同时当我尝试以root用户身份打开文件时,我得到以下输出.

[] ptrace_stop 0x154 / 0x270

[] get_signal_to_deliver 0x3dc / 0x610

[] do_signal 0x3f / 0x8d0

..

..

..

我无法弄清楚到底发生了什么?

解决方法:

这里不寻常的是/ proc / pid / stack的打开成功,但是尝试从中读取它会返回EPERM.

用于显示/ proc / pid / stack,fs / proc / base.c:proc_pid_stack()内容的内核源代码调用lock_trace(),如果调用者无权访问ptrace,则会返回权限错误目标过程.

在许多Linux发行版中,有一些Linux安全模块可能会限制ptrace的使用.其中一个是Yama,如果你使用Ubuntu你会遇到.使用ptrace的权限仅限于root或目标的祖先(通常是父级)进程.你可以用它来检查

root@ubuntu:~# cat /proc/sys/kernel/yama/ptrace_scope

1

并且可以通过执行来禁用它

root@ubuntu:~# echo 0 > /proc/sys/kernel/yama/ptrace_scope

此后,您将能够cat / proc / pid / stack.

标签:linux,proc,files

来源: https://codeday.me/bug/20190816/1669223.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值