我关注了教程指南关于“如何使用 LKM 在 C 程序中创建 Linux Proc 文件”。
我已经成功创建了模块并将其加载。现在我想回显到我的 proc 文件以确保调用应该调用的方法。
我努力了:
$ echo "hello" > /proc/procEntry123 # But it says permission is denied!
$ sudo echo "hello" > /proc/procEntry123 # Same error message.
我如何提升权限来回应此文件?我是此系统的唯一用户和管理员。
答案1
但它说许可被拒绝!
它可能这样说是因为您在调用时设置了限制性权限create_proc_entry()
。(0644 转换为“u = rw,go = r”,仅向所有者授予写权限,默认为root。)
我在它前面加上了“sudo”——同样的消息。
重定向(例如>
或)|
由正在运行的 shell 执行,前它调用sudo
。
您必须使用sudo sh -c "echo blah > /proc/blah"
,或者运行带有的 root shell sudo -s
。
我是唯一的用户——这是我自己的私人机器!
在 Linux 中这无关紧要。无论谁使用计算机,文件权限都会被强制执行。
如果你不想这样做,可以以 root 身份登录,或使用pam_cap
为自己授予cap_dac_override
权限 - 但无论哪种方法将要迟早都会惹麻烦。