Linux的文件权限(Linux file permission)

2019-09-21 01:51发布

有其下根用户运行的进程。

ps aux | grep ProcessX
root     11565  0.0  0.7  82120 22976 ?        Ssl  14:57   0:02 ProcessX

现在ls -l /proc/11565/ (PID)给出了这样的结果。

total 0
dr-xr-xr-x 2 root root 0 Aug  9 16:06 attr
-rw-r--r-- 1 root root 0 Aug  9 16:06 autogroup
-r-------- 1 root root 0 Aug  9 16:06 auxv
-r--r--r-- 1 root root 0 Aug  9 16:06 cgroup
--w------- 1 root root 0 Aug  9 16:06 clear_refs
-r--r--r-- 1 root root 0 Aug  9 16:06 cmdline
-rw-r--r-- 1 root root 0 Aug  9 16:06 coredump_filter
-r--r--r-- 1 root root 0 Aug  9 16:06 cpuset
lrwxrwxrwx 1 root root 0 Aug  9 16:06 cwd -> /usr/local/bin
-r-------- 1 root root 0 Aug  9 16:06 environ
lrwxrwxrwx 1 root root 0 Aug  9 16:06 exe -> /usr/local/bin/ProcessX
dr-x------ 2 root root 0 Aug  9 16:06 fd
dr-x------ 2 root root 0 Aug  9 16:06 fdinfo
-r-------- 1 root root 0 Aug  9 16:06 io
-rw------- 1 root root 0 Aug  9 16:06 limits
-rw-r--r-- 1 root root 0 Aug  9 16:06 loginuid
-r--r--r-- 1 root root 0 Aug  9 16:06 maps
-rw------- 1 root root 0 Aug  9 16:06 mem
-r--r--r-- 1 root root 0 Aug  9 16:06 mountinfo
-r--r--r-- 1 root root 0 Aug  9 16:06 mounts
-r-------- 1 root root 0 Aug  9 16:06 mountstats
dr-xr-xr-x 6 root root 0 Aug  9 16:06 net
-r--r--r-- 1 root root 0 Aug  9 16:06 numa_maps
-rw-r--r-- 1 root root 0 Aug  9 16:06 oom_adj
-r--r--r-- 1 root root 0 Aug  9 16:06 oom_score
-rw-r--r-- 1 root root 0 Aug  9 16:06 oom_score_adj
-r--r--r-- 1 root root 0 Aug  9 16:06 pagemap
-r--r--r-- 1 root root 0 Aug  9 16:06 personality
lrwxrwxrwx 1 root root 0 Aug  9 16:06 root -> /
-rw-r--r-- 1 root root 0 Aug  9 16:06 sched
-r--r--r-- 1 root root 0 Aug  9 16:06 schedstat
-r--r--r-- 1 root root 0 Aug  9 16:06 sessionid
-r--r--r-- 1 root root 0 Aug  9 16:06 smaps
-r--r--r-- 1 root root 0 Aug  9 16:06 stack
-r--r--r-- 1 root root 0 Aug  9 16:06 stat
-r--r--r-- 1 root root 0 Aug  9 16:06 statm
-r--r--r-- 1 root root 0 Aug  9 16:06 status
-r--r--r-- 1 root root 0 Aug  9 16:06 syscall
dr-xr-xr-x 6 root root 0 Aug  9 16:06 task
-r--r--r-- 1 root root 0 Aug  9 16:06 wchan

现在,两者的地位和地图文件权限是一样的( -r--r--r-- )。 但是,当我发出cat /proc/11565/maps与非特权(非root)用户,它给了我否认权限。 但是,对于cat /proc/11565/status ,输出符合市场预期。

有什么事我是缺少在这里?

Answer 1:

这是因为该文件的权限不是您遇到的唯一的保护。

这些都不是一个文件系统上的只是普通的文本文件, procfs是一个窗口过程的内部,你必须闯过这两个文件的权限, 以及任何其他的保护措施。

地图显示有关内存使用情况和其中的可执行代码位于所述处理空间内有潜在危险的信息。 如果你看看ASLR,你会看到,这是防止潜在的攻击者知道哪里代码加载的方法,它是没有意义的,揭示它在世界可读进入procfs

这种保护加入,早在2007年 :

这种变化用“ptrace_may_attach”允许访问之前读取地图内容,实现了检查。 为了控制这种保护,新的旋钮的/ proc / sys目录/内核/ maps_protect已经加入,与相应的更新到procfs的文档。

ptrace_may_attach()内它调用的功能之一实际上)处于下面的代码:

if (((current->uid != task->euid) ||
     (current->uid != task->suid) ||
     (current->uid != task->uid) ||
     (current->gid != task->egid) ||
     (current->gid != task->sgid) ||
     (current->gid != task->gid))     && !capable(CAP_SYS_PTRACE))
   return -EPERM;

让,除非你有相同的真实用户/组ID,保存的用户/组ID和有效的用户/组ID(即没有偷偷摸摸setuid的东西),他们一样拥有该进程的用户/组ID,你不能看到里面说,“文件”(除非你的程序有CAP_SYS_PTRACE课程的能力)。



文章来源: Linux file permission