You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置/dev设备权限?S_IRUSR权限异常及权限位差异咨询

DEVICE_ATTR权限异常与权限宏区别解析

为什么/dev节点权限是crw-------?

首先要明确:DEVICE_ATTR 宏是用来在sysfs文件系统中创建属性文件的,它的权限参数只影响sysfs中的文件,和 /dev 下的设备节点权限没有直接关系。

你看到的 /dev 节点权限 crw-------(对应八进制0600),来源通常是这两种情况:

  • 手动执行mknod命令创建设备节点时,若未通过-m参数指定权限,默认会使用0600的权限;
  • 由udev/mdev自动创建设备节点时,若没有自定义规则,会采用默认策略(通常就是0600),需要修改udev规则文件(如/etc/udev/rules.d/*.rules)中的MODE字段来调整权限。

如果你的目标是让/dev节点变成只读,要么在mknod时加-m 0400参数,要么在udev规则里设置MODE="0400"。

S_IRUSR与S_IRUGO的区别

这两个都是POSIX权限宏,定义在<linux/stat.h>中:

  • S_IRUSR:仅授予文件所有者读权限,对应八进制的0400;
  • S_IRUGO:同时授予所有者、所属组、其他所有用户读权限,它是S_IRUSR | S_IRGRP | S_IROTH的组合,对应八进制的0444。

另外补充:如果是用DEVICE_ATTR设置sysfs属性的只读权限,若你只希望所有者可读,用S_IRUSR;若希望所有用户都能读,就用S_IRUGO。注意如果同时指定了store函数(即第四个参数不为NULL),内核会结合权限位判断是否允许写操作——比如权限位只有S_IRUSR时,即使有store函数,普通用户也无法写入该sysfs属性。

内容的提问来源于stack exchange,提问作者Its me

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:52:13