权限 – 什么阻止设备文件被执行?
发布时间:2020-12-14 00:43:54 所属栏目:Linux 来源:网络整理
导读:我正在编写一个内核字符设备驱动程序,我已经实现了fops.read和FIONREAD(0x541B)ioctl. read返回的数据是ELF可执行文件. ls -l确认设备具有r-x权限,并且以下两个命令都允许我执行包含的ELF二进制文件: # cp /dev/foo0 /tmp/bar /tmp/bar-or-# cat /dev/foo0
我正在编写一个内核字符设备驱动程序,我已经实现了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 foo_open foo_ioctl 0x0000541B foo_read size=131072 off=0 foo_ioctl 0x0000541B foo_read size=131072 off=13096 foo_release Hello from /tmp/bar! ... 请注意,内核消息指示调用的各种驱动程序消息.但是,当我尝试直接运行设备时,出现错误: # /dev/foo0 foo_open foo_release /bin/sh: 6: /dev/foo0: Permission denied 什么检查可能导致权限错误,是否可以覆盖它而不从根本上破坏Linux?我正在使用带有最小sysroot映像的4.18.3内核. 解决方法
从
man 2 execve 开始:
Linux内核只允许执行常规文件,而不是字符设备或任何其他特殊文件.内核检查in the if (!S_ISREG(file_inode(file)->i_mode)) goto exit; 如果你真的想要的话,你可以重新构建没有那个检查的内核,但它可能是有充分理由的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- macos – Emacs 23,OS X,multi-tty和emacsclient
- linux – / etc / hosts和/etc/resolv.conf之间的区别
- 第四季-专题9-Linux驱动开发前奏
- 第十章:内核同步方法
- linux – 哪种方式是与Chef一起安装软件包最“优雅”的方式
- 如何在linux上的eclipse上编译android项目之前的.sh
- linux – 跟踪pthread调度
- linux-kernel – 每秒滴答和jiffies.有什么不同?
- liunx ubuntu/centos apt-get正在等待报头(waiting for he
- linux – Rsync -avzHP遵循硬链接而不是将它们复制为硬链接