• buildroot制作的嵌入式Linux根文件系统启动后不是root用户,提示没有权限


    一、问题描述

      如果在使用buildroot制作的嵌入式Linux根文件系统启动后,发现不是以root用户身份登录,这可能是由于文件系统权限设置不当或用户配置问题导致的。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    二、解决办法

    以下是一些可能的解决办法:
    1.检查busybox权限
    正如您提到的日志中的信息,busybox的权限可能存在问题。busybox是一个集成了许多常用Linux命令和工具的单个可执行文件,它在嵌入式系统中非常常见。
    使用ls -l命令检查busybox的权限。如果看到类似-rwsr-xr-x的权限,其中的s表示设置了SUID(Set User ID)位,这可能导致非root用户以root权限执行该命令。
    如果busybox的权限设置不当,您可以使用chmod命令来修改它。例如,要移除SUID位,可以执行chmod a-s busybox。

    chmod a-s busybox
    
    • 1

    或者使用指令

    sudo chown root * -R
    
    • 1

    这条命令的意思是更改当前目录下所有的文件的owner(就是所有者)为root,-R意思是循环遍历,如果当前目录下有子目录,同时更改那些子目录。
    2.检查/etc/passwd和/etc/shadow文件
    这些文件定义了系统上的用户和他们的权限。确保root用户的条目是正确的,并且没有被错误地修改。
    如果这些文件被错误地修改,您可能需要手动编辑它们以恢复root用户的正确设置。
    3.检查initramfs或initramfs配置
    如果buildroot使用initramfs作为初始文件系统,那么initramfs的配置可能有问题。检查initramfs的配置脚本,确保root用户的设置是正确的。
    4.检查buildroot配置
    重新检查buildroot的配置文件,确保没有错误或遗漏的配置项,这些可能会影响根文件系统的用户设置。
    5.重新构建根文件系统
    如果上述方法都不能解决问题,您可能需要重新构建根文件系统。确保在构建过程中遵循正确的步骤,并且所有的依赖项和配置都是正确的。
    6.查看启动日志和系统日志
    仔细查看启动过程中的日志和系统日志,以查找可能导致非root用户登录的线索。这可能会提供一些关于问题的更多详细信息。
    7.检查SELinux或AppArmor策略:
    如果您的系统启用了SELinux或AppArmor等安全模块,确保它们的策略没有阻止root用户登录或执行必要的操作。
    注意
    请注意,直接修改系统文件或权限可能会导致系统不稳定或安全风险。在进行任何更改之前,请确保了解这些更改的含义和潜在影响,并始终在测试环境中进行验证。

    三、实际测试

    查看busy的权限
    在这里插入图片描述
    使用指令修改,指令

    chmod a-s busybox
    
    • 1

    查看修改后的权限
    在这里插入图片描述
    或者使用指令:

    sudo chown root * -R
    
    • 1

    这条命令的意思是更改当前目录下所有的文件的owner(就是所有者)为root,-R意思是循环遍历,如果当前目录下有子目录,同时更改那些子目录。
    查看修改后的权限,如下:
    在这里插入图片描述
    下载测试
    在这里插入图片描述
    系统正常启动。

  • 相关阅读:
    【c++每天一题】 小小演唱家
    ABAP BASE64/STRING/XSTRING/BINARY 等之间的转换总结
    C# chatGPT API调用示例
    Java集合框架(二)Set
    什么是信创测试?信创测试工具有哪些?
    Modsecurity安装+Nginx+腾讯云CentOS+XSS-Labs靶场+WAF规则
    基于Modbus TCP的MCGS上位机软件教程
    flutter 身兼数职的getx —— 依赖管理
    【Linux C编程】(一)POSIX多线程及读写优先算法
    css的属性选择器的妙用,来用它实现一个轻量的tips组件吧
  • 原文地址:https://blog.csdn.net/weixin_46158019/article/details/136614005