权限 – 什么阻止设备文件被执行?

权限 – 什么阻止设备文件被执行?,第1张

概述我正在编写一个内核字符设备驱动程序,我已经实现了fops.read和FIONREAD(0x541B)ioctl. read返回的数据是ELF可执行文件. ls -l确认设备具有r-x权限,并且以下两个命令都允许我执行包含的ELF二进制文件: # cp /dev/foo0 /tmp/bar && /tmp/bar-or-# cat /dev/foo0 > /tmp/bar && /tmp/bar 我正在编写一个内核字符设备驱动程序,我已经实现了fops.read和FIONREAD(0x541B)ioctl. read返回的数据是ELF可执行文件. ls -l确认设备具有r-x权限,并且以下两个命令都允许我执行包含的ELF二进制文件:

# cp /dev/foo0 /tmp/bar && /tmp/bar-or-# cat /dev/foo0 > /tmp/bar && /tmp/barfoo_openfoo_ioctl 0x0000541Bfoo_read size=131072 off=0foo_ioctl 0x0000541Bfoo_read size=131072 off=13096foo_releaseHello from /tmp/bar!...

请注意,内核消息指示调用的各种驱动程序消息.但是,当我尝试直接运行设备时,出现错误:

# /dev/foo0foo_openfoo_release/bin/sh: 6: /dev/foo0: Permission denIEd

什么检查可能导致权限错误,是否可以覆盖它而不从根本上破坏linux?我正在使用带有最小sysroot映像的4.18.3内核.

解决方法 从 man 2 execve开始:

EACCES The file or a script interpreter is not a regular file.

linux内核只允许执行常规文件,而不是字符设备或任何其他特殊文件.内核检查in the do_open_execat function in fs/exec.c:

if (!S_ISREG(file_inode(file)->i_mode))    goto exit;

如果你真的想要的话,你可以重新构建没有那个检查的内核,但它可能是有充分理由的.

总结

以上是内存溢出为你收集整理的权限 – 什么阻止设备文件被执行?全部内容,希望文章能够帮你解决权限 – 什么阻止设备文件被执行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1024466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存