• buildroot 多用户配置


    1. 环境

    1. # 下载 buildroot
    2. git clone git://git.buildroot.net/buildroot.git
    3. # 查看所有分支
    4. git branch -a

    我使用分支为:remotes/origin/2022.02.x

    1. # 切换分支命令
    2. git checkout -b 2022.02 remotes/origin/2022.02.x
    1. # 使用的 ubuntu 环境为:
    2. liangtao:opt$uname -a
    3. Linux ubuntu 5.4.0-131-generic #147~18.04.1-Ubuntu SMP Sat Oct 15 13:10:18 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

    使用的单板配置为:imx6ullevk_defconfig

    2. 添加多用户配置

    参考博客:

    Buildroot根文件系统权限表、用户表、设备管理

    参考手册:buildroot手册

    buildroot 中,默认的 root 用户,可以使用 make menuconfig 来配置;密码在下面菜单设置;

    1. System configuration --->
    2. () Root password

    在手册中,提到可以使用 BR2_ROOTFS_USERS_TABLES 来指定多用户表;

     1. 在任意路径添加一个 users_table.txt

    或者采用官方的建议:创建一个 board/公司名/项目名/ 目录,把 users_table.txt 放入该目录;

    If additional user accounts have to be created, create board///users_table.txt and add that path to BR2_ROOTFS_USERS_TABLES.

     2. 使用 make menuconfig 来配置路径;

     3. 使用 make savedefconfig 来将修改的配置写入 imx6ullevk_defconfig 文件中;

    4. 参考手册在 users_table.txt 中创建系统用户;

    例:

    1. - 818 USB 818 * - - - USB group
    2. USER1 823 USER1 823 ! /home/USER1 /bin/sh USB USER1 app
    3. USER2 824 USER2 824 ! /home/USER2 /bin/sh USB USER2 app

    规则如下:

     - 818 USB 818 * - - - USB group

    解释:

    - 没有用户名,只创建用户组

    818 用户名 id,即 UID,不会生效;

    USB 用户组名

    818 用户组 id,即 GID

    * 不允许登录

    - 无指定家目录

    - 无指定 shell

    - 无其它用户组

    USB group 简单的 commit

    USER1 823 USER1 823 ! /home/USER1 /bin/sh USB USER1 app

    解释:

    USER1 用户名为 USER1

    823 用户名 id,即 UID

    USER1 同名组名

    823 用户组 id,即 GID

    ! 不允许登录

    /home/USER1 指定家目录为 USER1,该目录 buildroot 会自动帮你创建

    /bin/sh 指定 shell 为 /bin/sh

    USB 指定 USER1 除了 USER1 组外,还属于 USB 组

    USER1 app 简单的 commit

    至于 USER1 指定 shell 为 /bin/sh 的原因:我指定过为 /bin/false,这样通过如下命令执行应用不成功,所以指定了 shell;

    su -l USER1 -c "/home/USER1/app &"

    5. 编译 make all

    3. 修改节点权限

    由于我在 buildroot 中配置的动态节点创建的方式为 mdev;

    1. System configuration --->
    2. /dev management (Dynamic using devtmpfs + mdev) --->

    所以我可以通过修改 /etc/mdev.txt 文件来修改 /dev/ 下的节点权限; 

     其它方式可以查看手册 6.2 /dev management

    mdev 编写规则参考:mdev的使用以及mdev.conf的规则配置

    我的 mdev.txt 文件如下:

    1. # system all-writalbe devices
    2. full 0:0 666
    3. null 0:0 666
    4. ptmx 0:0 666
    5. random 0:0 666
    6. tty 0:0 666
    7. zero 0:0 666
    8. # serial port devices
    9. ttymxc[1-7] 0:0 666
    10. # misc devices
    11. sd[a-z][0-9] 0:0 666 @/etc/hotplug.sh
    12. sd[a-z] 0:0 666 $/etc/hotplug.sh

    4.将自己的文件编译进 buildroot 文件系统中

    关键字为:BR2_ROOTFS_OVERLAY

    buildroot 会把指定目录下的文件拷贝到文件系统中;

  • 相关阅读:
    出去重复的列值(关键词:distinct)
    【Day32】LeetCode刷刷刷。[1700. 无法吃午餐的学生数量 ]
    Scala——While和do..While循环控制
    FPGA设计时序约束五、设置时钟不分析路径
    王道考研计算机网络——传输层
    Leecode DAY16: 二叉树的最大深度 and 二叉树的最小深度 and 完全二叉树的节点个数
    猿创征文|力扣15 - 三数之和【奇妙的双指针】
    查看iOS应用的ipa包构建版本6种方法
    【Java基础】方法重写、修饰符、权限修饰符及final、static关键字
    RabbitMQ开启消息发送确认和消费手动确认
  • 原文地址:https://blog.csdn.net/liangtao_1996/article/details/127654480