Linux 内核:设置通过 create_device() 创建的 /dev 文件的权限

2024-01-06

我正在制作一个小型 Linux 模块,它是 char 设备的驱动程序。 在我的代码中,我创建了设备类,而不是设备本身,因此 /dev 文件是 在我的系统中创建。问题是/dev文件只有root权限,而用户 对该文件既没有读、写也没有执行权限,我想更改 /dev 文件权限。

我在网上搜索了答案,发现是更改 udev 文件,但是这个 解决方案在我的情况下不起作用,因为我需要在模块加载到内核时动态更改权限。我正在编写的模块并不总是在我的机器上运行,因此我需要它来“动态”更改权限。

major_number_firewall = register_chrdev(0, device_name_firewall, &my_file_implementation_firewall);

device_class = class_create(THIS_MODULE, class_name_firewall);

log_file_device = device_create(device_class, NULL, MKDEV(major_number_firewall, MINOR_LOG), NULL, device_name_log_file);

有没有修改权限的功能?


  1. 你可以写一个小udev规则 http://www.reactivated.net/writing_udev_rules.html为了实现这一目标。

  2. 如果您正在实现字符设备驱动程序,请考虑使用misc_register() and misc_unregister()这是上述调用的包装(device_create()...)。参考结构杂项设备 http://lxr.linux.no/linux+v3.3.3/include/linux/miscdevice.h#L50

    struct miscdevice  {
        int minor;
        const char *name;
        const struct file_operations *fops;
        struct list_head list;
        struct device *parent;
        struct device *this_device;
        const char *nodename;
        umode_t mode;
    };
    

您可以使用会员(struct miscdevice *)->mode设置适当的权限(S_IRUGO | S_IRWXUGO | S_IALLUGO | 等...)

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux 内核:设置通过 create_device() 创建的 /dev 文件的权限 的相关文章

  • PHP 日志文件颜色

    我正在编写一个 PHP 日志文件类 但我想为写入文件的行添加颜色 我遇到的问题是颜色也会改变终端的颜色 我想要实现的是仅更改写入日志文件的行的颜色 class logClass extends Singleton private funct
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的
  • 在Linux中创建可执行文件

    我计划做的一件事是编写 非常简单的 Perl 脚本 并且我希望能够在不从终端显式调用 Perl 的情况下运行它们 我明白 要做到这一点 我需要授予他们执行权限 使用 chmod 执行此操作非常简单 但它似乎也是一个稍微费力的额外步骤 我想要
  • 在bash中用其他文件过滤一个文件

    我有一个带有数字的文件 例如 cat file 31038467 32048169 33058564 34088662 35093964 31018168 31138061 31208369 31538163 31798862 和其他例如
  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • 如何为小程序提供对文件系统写入的访问权限

    我在设置小程序的策略文件时遇到问题 我是第一次这样做 不知道如何在java中设置小程序的策略文件 实际上我想授予小程序在文件系统上写入的权限 为此我必须向小程序授予文件权限 所以我创建了一个名为 java policy 的文件 并将以下代码
  • bash "&" 不打印 "[1]+ Done "

    我在 bashrc 中调用一个脚本来打印打开终端时收到的新消息数 我希望该调用在访问网络时是非阻塞的 有时需要几秒钟 这意味着我无法使用终端直到完成 但是如果我输入 mailcheck 在我的 bashrc 中 它工作正常 但然后打印一个空
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • 为什么 proc/ID/maps 有多个共享库条目

    我正在查看嵌入式Linux下的proc ID maps 我注意到一些共享库在进程的内存映射中出现了几次 为什么会这样呢 40094000 400d9000 r xp 00000000 b3 09 723 system lib libc so
  • X 服务器使用什么像素格式?

    X 服务器使用什么像素格式 RGBA ARBG BGRA 如果有任何特定格式的话 Update 我专门寻找有关颜色分量顺序和位模式的信息 你的意思是帧缓冲区格式 或者所有支持的像素图格式 无论是哪一种 都取决于您的图形硬件 驱动程序和配置
  • 如何更改 Kubernetes 中的文件系统观察程序限制 (fs.inotify.max_user_watches)

    我在用着pm2 https github com Unitech pm2查看保存我的应用程序服务器的 NodeJS 程序源代码的目录 该程序在 Kubernetes 集群中运行 但是 我收到此错误 ENOSPC System limit f
  • CMake:使用其他平台的生成器。如何?

    如何使用 CMake 在 Linux 上生成 Visual Studio 项目文件 你不能 您必须在 Windows 上运行 CMake 才能为 Visual Studio 生成
  • 如何从 Linux 命令行打开 Sublime Text 2 文件到选项卡,而不是新窗口

    我有 ST2 设置 这样我就可以执行 sublime file txt 它将在 ST2 窗口中打开 但是我怎样才能让它在当前打开的窗口的新选项卡中打开呢 尝试 Sublime 命令行帮助 subl 帮助 Sublime Text 2 内部版
  • 检查 Linux 中给定进程的打开 FD 限制

    我最近有一个 Linux 进程 泄露 了文件描述符 它打开了文件描述符 但没有正确关闭其中一些文件描述符 如果我对此进行监控 我就可以提前得知该过程已达到其极限 有没有一种很好的 Bash 或 Python 方法来检查 Ubuntu Lin
  • 在linux中使用setcap [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 要将 cap net raw 功能添加到 例如 bin ping 我们使用以下命令 setcap cap net raw ep bin ping ep
  • 如何从powershell获取主机名?

    我如何获得hostname https stackoverflow com q 42014215 262852 for dur来自 powershell PS home thufir powershell gt PS home thufir
  • 如何将字符串推送到标准输入?在启动时通过 stdin 提供输入,然后以交互方式读取 stdin 输入 [重复]

    这个问题在这里已经有答案了 有没有办法在调用程序时将字符串 推送 到程序的标准输入流 这样我们就可以达到这样的效果 echo something my program 但不是在之后读取 EOF something my program将从原
  • 查找当前打开的文件句柄数(不是 lsof )

    在 NIX系统上 有没有办法找出当前正在运行的进程中有多少个打开的文件句柄 我正在从正在运行的进程中寻找在 C 中使用的 API 或公式 在某些系统上 见下文 您可以在 proc pid fd 中对它们进行计数 如果不属于其中之一 请参阅下
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • ftrace 是否允许捕获 Linux 内核的系统调用参数,或者仅捕获函数名称?

    目标是检查任何进程传递给特定系统调用 例如 exec open 等 的参数 来自官方文档 https www kernel org doc Documentation trace ftrace txt 没有描述记录函数参数的功能 主要查看

随机推荐

  • 如何在文件夹层次结构中找到所有不同的文件扩展名?

    在 Linux 机器上 我想遍历文件夹层次结构并获取其中所有不同文件扩展名的列表 从 shell 实现此目的的最佳方法是什么 试试这个 不确定这是否是最好的方法 但它有效 find type f perl ne print 1 if m s
  • 总和时间 odoo 9

    当在树视图中使用计算时 总和不可见 当使用 onChange sum 时 任何解决方案都可见如何修复它 我需要在从 csv 插入数据后自动填充 time total 字段进行计算 例子 Source class my data models
  • 动态类别的数据库架构

    Added 更新 1 请检查问题末尾 谢谢 Friends 我正在设计一个产品列表 其中包含类别和与类别相关的过滤器 我目前有一个带有静态类别的数据库架构 我必须让它们充满活力 我找不到正确的架构来使其动态化 因此我在表单中对架构进行了硬编
  • 创建一个不断扩大的圈子 iOS

    如何创建一个随着时间的推移而扩大的圈子 我想做这样的事情 UIView animateWithDuration 5 animations void Expand the circle Get the contextRef CGContext
  • 向 GridView 动态添加命令按钮

    我在尝试向网格添加按钮时遇到问题 我的 GridView 首先在 PageLoad 事件中加载数据 然后 我获取每行第一个单元格中的数据 并创建一个链接到 URL 的按钮 为了获取 URL 我必须使用第一个单元格中的数据作为参数来运行查询
  • 警告:mysql_result() 期望参数 1 为资源,给定布尔值[重复]

    这个问题在这里已经有答案了 我的 PHP 函数脚本昨晚工作正常 现在当我今天登录并进一步处理它时 我得到了 警告 mysql result 期望参数 1 为资源 给定布尔值 我不知道为什么这不起作用 我已经在线阅读了 PHP 手册 甚至还看
  • 如何将README.md文件添加到HEXO生成的博客的根目录中?

    我的博客是基于Github Pages我正在使用的程序是HEXO 生成的文件HEXO不包含 README md 文件 因此我无法在 Github 存储库页面上声明我的博客 所以我想将 README md 文件添加到该文件夹 中HEXO生成
  • Spring Boot Keycloak - 承载:如何解决 NOT_ATTEMPTED:仅承载?

    角度 v v4 0 2 Spring Boot v 1 5 2 RELEASE Keycloak v 2 4 0 Final 稍后会升级 我读到了关于同一问题的电子邮件对话 http keycloak user 88327 x6 nabbl
  • 如何查找堆中对象的数量

    如何在Java程序中找到堆上存活对象的数量 jmap 是标准的 java 实用程序 可用于捕获堆转储和统计信息 我不能说 jmap 使用什么协议连接到 JVM 来获取此信息 并且不清楚此信息是否可用于直接在 JVM 中运行的程序 尽管我确信
  • Snort 消息 - 警告:没有为策略 0 配置预处理器

    我已经安装并配置了snort 2 9 7 2并且它运行没有问题 但是 我的问题是 以下警告是什么意思 没有为策略 0 配置预处理器 当我运行命令时显示此消息 snort v 此消息表明没有加载 snort 预处理器 为了消除此警告 请使用以
  • Domino Designer 中的 javascript 版本?

    在处理基于 Web 的 Domino 表单时 onChange字段 JavaScript 的事件 我无法使用某些语法 因为它会抛出错误并且代码将无法保存 例子有 代替var 我想用const and let 但它不会接受它 此外 当尝试使用
  • 我应该将哪个 .NET Azure 服务总线库用于队列?

    Microsoft 在 NuGet 上有两个 Azure 服务总线包 WindowsAzure ServiceBus https www nuget org packages WindowsAzure ServiceBus Use this
  • addField类型图像和缩略图路径

    我有一个 Magento 网上商店 刚刚创建了一个带有扩展名 Modulecreator 的自定义模块 该模块带有一个标准的管理界面 可以处理文件上传 我发现 如果您想显示缩略图 可以使用 图像 字段类型 addField myfield
  • 如何在 Objective-C 中记录每个被调用的类方法的名称? [复制]

    这个问题在这里已经有答案了 当我想查看对象方法调用的顺序时 我必须像这样记录我实现的每个方法 void updateTime float time NSLog s PRETTY FUNCTION 因此我必须把这段代码放在类的每个方法中 每次
  • 如果我想建立一个自定义数据库,我该怎么做? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我构建了一个以前的程序 它获取客户信息并将其存储在 txt 文件的文件夹中 不太切实际 但现在我想升级该程序以提高效率 并将信息放入某
  • 如何更改 Joomla 管理 URL

    默认情况下 Joomla 管理 URL 是您的站点名称 管理员 我如何为 Joomla 1 5 更改此设置 以便它不会影响我的模块和组件或后端的任何其他内容 我认为这不是一个好主意 因为模块 组件中指向 administrator 的一些链
  • 无法从 Gstreamer 找到 get-launch-1.0

    我在 OSX Mac 上运行 我已经在此处找到的 GStreamer 1 5 1 中安装了各种软件包 http gstreamer freedesktop org data pkg osx http gstreamer freedeskto
  • 为什么这个 rust HashMap 宏不再起作用?

    我以前用过 macro export macro rules map T ident key expr gt value expr gt let mut m T new m insert key value m 要创建对象 如下所示 let
  • 将 EoS 发送到文件接收器,同时从 tee 中删除分支

    我写了一个v4l2src同时显示和记录的代码 我的管道看起来像 queue videosink v4l2src tee queue filesink 目前我可以一起显示 记录 还可以随意动态启动和停止记录分支 使用 ctrl c sigin
  • Linux 内核:设置通过 create_device() 创建的 /dev 文件的权限

    我正在制作一个小型 Linux 模块 它是 char 设备的驱动程序 在我的代码中 我创建了设备类 而不是设备本身 因此 dev 文件是 在我的系统中创建 问题是 dev文件只有root权限 而用户 对该文件既没有读 写也没有执行权限 我想