linux - 如何在 Linux 上更改 tty 组(使用 buildroot 构建)

标签 linux embedded-linux tty buildroot usergroups

我正在使用 Buildroot 为嵌入式设备构建 Linux Kernel 3.14.28。

/dev/ 中,所有的 ttys 都是 root:root 而不是像标准 Linux 那样的 root:dialout。因此,如果不以 root 身份登录,就无法访​​问任何 ttyX。

如何将 tty 组永久更改为 root:dialout?我尝试使用 chown 命令更改它,但它在重新启动时再次变为 root:root

最佳答案

TL;DR:选择 mdev 作为您的设备管理器,并使用 tty 组而不是 dialout .

内核的 devtmpfs 创建具有默认名称、所有者和权限的设备节点。它还会在创建节点时发送一个 uevent,这允许 uevent 处理程序更改名称、所有权或权限,或者做任何它想做的事情。以前这被称为热插拔系统,但现在它更加通用。

Buildroot 提供三种 uevent 处理程序之间的选择:mdev,它是 busybox 的一部分,eudev,它是一个独立的 udev 分支,以及udevsystemd 初始化系统的一部分。这些处理程序配置有规则文件,这些文件指定在特定类型的设备出现时如何处理。

对于您的特定需求,mdev 是最佳选择,因为它非常简单、易于理解、不占用太多空间,并且默认配置就足够了。在 Buildroot 的菜单配置中,转到系统配置/dev 管理 并选择Dynamic using mdev。然后重建你的根文件系统。它现在将填充 mdev 二进制文件(busybox 的一部分)、启动它的初始化脚本和 /etc/mdev 中的默认规则文件。 session 。此默认文件包含:

tty[0-9]*       root:tty 660

这意味着 tty 设备将把它们的组更改为 tty 并且它们的组读取和写入权限。因此,您只需确保登录用户属于 tty 组,并且 Bob 是您的叔叔即可。

如果默认的 mdev.conf 文件对您来说不够用(例如,如果您确实需要组为 dialout),那么您可以创建一个文件系统覆盖,将package/busybox/mdev.conf复制到/etc/mdev.conf,并根据需要修改。可以找到有关 mdev.conf 格式的完整文档 in the busybox sources .

关于linux - 如何在 Linux 上更改 tty 组(使用 buildroot 构建),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30846176/

相关文章:

c - execvp 导致内存问题

linux - 使用 `exec 1>file` 后,如何停止将 STDOUT 重定向到文件并恢复 STDOUT 的正常操作?

python -\b 字符的反义词是什么,即一种不可删除的空格?

linux - 为什么bash脚本启动的进程在终端关闭后不会退出?

linux - tty 驱动程序在读/写操作期间如何与 UART 驱动程序交互?

linux - 有没有办法确定 Linux 中可用视频 RAM 的数量?

linux - Haskell Yesod 问题

linux - copy_to_user 在 linux 内核版本 4.12.8 中未定义

linux-kernel - 如何检查内核中是否启用或禁用了 SMP?

c++ - arm-linux-gnueabihf-g++ 是否具有可靠的 C++0x 支持