十一、buildroot系统登录配置
4.6、系统登录
4.6.1、系统登录方式配置
1、系统初始化配置选择
配置路径 :
→ System configuration → Init system
配置参数说明:
BusyBox
简介:
BusyBox是一个非常小巧的工具集合,它提供了许多常见的 Unix 工具,并通过一个单一的可执行文件来实现。这些工具包括 shell、文件管理、网络工具等。在许多嵌入式系统中,BusyBox被用作系统的init进程。特点:
- 小巧:适用于资源有限的环境,像嵌入式设备或开发板。
- 易于定制:可以选择只编译必要的工具,减少系统占用。
- 高效:启动速度快,占用资源少。
- 适用场景:广泛用于嵌入式系统、开发板等。
选择
BusyBox作为初始化系统意味着你会使用一个简化的初始化过程,适用于轻量级、快速启动的场景。
systemV
简介:
SystemV是传统的 Unix 初始化系统,早期的 Linux 系统使用的是 System V 风格的init系统。它通常依赖于多个脚本来启动和管理系统服务。特点:
- 脚本驱动:服务通过
/etc/init.d/目录下的脚本来启动。 - 兼容性:对于许多旧的 Linux 发行版和 Unix 系统,
SystemV是一种标准。 - 较为繁琐:服务的管理通常通过手动启动脚本进行,较为复杂。
选择
SystemV表示你希望使用传统的方式来管理系统的启动过程。- 脚本驱动:服务通过
OpenRC
简介:
OpenRC是一个轻量级的初始化系统,最初由 Gentoo Linux 开发,但现在也可以在许多其他 Linux 发行版中使用。它通过脚本和事件驱动的方式启动和管理服务。特点:
- 轻量级:与
systemd相比,它占用的资源较少。 - 依赖管理:能够有效地处理服务的依赖关系。
- 兼容性:它与
systemd和SysVinit脚本兼容。
选择
OpenRC可以带来一个简洁、快速的启动过程,并且它不依赖于systemd.- 轻量级:与
systemd
简介:
systemd是当前许多现代 Linux 发行版的默认初始化系统。它不仅负责启动系统,还提供了大量功能来管理系统服务、日志记录、并行化启动等。特点:
- 高效并行启动:通过并行化启动多个服务来加快系统启动速度。
功能强大:包括服务管理、日志管理、网络配置等。
- 复杂性:配置和管理相对复杂,需要学习
systemctl命令等。
选择
systemd是现代 Linux 系统中最常见的选择,它能够提供强大的服务管理和系统控制功能。- 复杂性:配置和管理相对复杂,需要学习
None
简介:选择
None表示系统没有启用任何初始化系统。这种情况比较少见,通常用于某些非常特殊的定制环境,或者在非常简化的系统中。特点:
- 不使用任何 init 系统:系统启动时不会通过传统的 init 系统进行服务管理。
需要手动配置:没有 init 系统时,用户需要自行编写启动脚本来管理系统服务。
选择
None的场景较为特殊,适合对系统有完全控制需求的用户。
2、登录界面配置
配置路径 :
→ System configuration → Run a shell on serial console after boot
配置参数说明:
/sbin/getty (login prompt):使用getty提供登录提示:getty是一个常见的程序,负责在终端上显示登录提示并启动登录程序。选择此选项会在串行终端上显示登录提示,让用户输入用户名和密码进行登录。它通常用于传统的命令行登录界面。/bin/sh:启动sh(shell):选择这个选项会在串行终端上启动一个sh(Bash 或其他 shell),而不是显示登录提示。这意味着系统会直接提供一个 shell 提示符,用户可以直接在命令行界面进行操作,而不需要进行身份验证或登录。适用于嵌入式系统的调试或开发环境,便于直接访问系统。/bin/login:使用login提供登录界面:这个选项会启动login程序,提供标准的登录界面。与getty相似,login会在终端上提示用户输入用户名和密码,但它通常用于在系统启动时通过串行端口提供更为安全的登录方式。none:不使用任何登录方式:如果选择此选项,则串行端口不会提供任何登录界面或 shell。这意味着如果你想通过串行端口访问系统,可能需要其他方式来启用访问,如通过网络连接等
4.6.2、用户及密码配置
文件路径 : ./board/rockchip/rk3566_rk3568/fs-overlay/etc
1、添加文件 group
root:x:0:
mo:x:1000:
用于定义系统中的用户组信息。它包含了组名、组密码(通常为空)和组成员。
root:x:0::
root是组名。x表示组的密码(在大多数现代 Linux 系统中,组密码通常没有使用,因此该字段为空或为x)。0是组的 GID(组标识符),这里0代表超级用户(root)组。- 最后部分为空,表示该组没有成员(成员通常是其他用户的用户名,用逗号分隔)。
mo:x:1000::
mo是组名。x表示组的密码。1000是该组的 GID(对于普通用户组,一般从1000开始)。- 最后部分为空,表示该组也没有其他成员。
2、添加文件 passwd
root:x:0:0:root:/root:/bin/sh
mo:x:1000:1000:mo user:/home/mo:/bin/sh
存储系统中每个用户的基本信息,如用户名、UID、GID、家目录和默认 shell 。
root:x:0:0:root:/root:/bin/sh:
root是用户名。x表示密码字段,表示密码存储在shadow文件中(现代 Linux 系统使用shadow文件来存储密码信息,x只是占位符)。0是 UID(用户标识符),表示该用户是超级用户(root)。0是 GID(组标识符),表示该用户属于root组。root是用户的全名或描述字段(这里是 root 用户的描述)。/root是该用户的家目录路径。/bin/sh是该用户的默认 shell(在这个例子中是sh,可以是bash或其他 shell)。
mo:x:1000:1000:mo user:/home/mo:/bin/sh:
mo是用户名。x表示密码字段,密码信息在shadow文件中。1000是 UID(这个通常分配给第一个非系统用户,表示普通用户mo)。1000是 GID(这个通常是用户的默认组的 GID)。mo user是该用户的描述信息。/home/mo是该用户的家目录路径。/bin/sh是该用户的默认 shell。
3、添加文件 shadow
root:$1$xyz$xxxxxxxxxxxxxx/:0:0:99999:7:::
mo:$1$xyz$xxxxxxxxxxxxxx/:0:0:99999:7:::
用于存储用户的加密密码和密码过期信息,它是 passwd 文件的补充。它只有管理员(root)权限才能访问,保证密码的安全性。
root:$1$xyz$xxxxxxxxxxxxxx/:0:0:99999:7::::
root是用户名。$1$xyz$xxxxxxxxxxxxxx/是 root 用户的加密密码。$1$:表示这是使用 MD5 哈希算法加密的密码。后面的字符是密码的哈希值。xyz:这是 盐值(salt)。盐值是一个用于混淆哈希过程的字符串,它的作用是让同样的密码每次加密的结果不同。盐值可以是随机生成的,通常是 8 到 16 个字符的字符串。- 加密后的哈希值:
$1$xyz$后面跟着的是实际的 MD5 哈希值,这部分是加密后的用户密码。它看起来像一个随机字符串,是通过对密码和盐值进行哈希计算得到的。
0表示密码最后一次修改的日期(自 1970 年 1 月 1 日以来的天数)。这里0代表密码尚未设置或尚未修改。0表示密码最小使用期限,即用户必须等待多长时间才能更改密码。这里的0表示没有限制。99999表示密码最大使用期限,即密码最大有效期。99999意味着密码永不过期。7表示密码过期前提前多少天警告用户更改密码。这里是 7 天。
mo:$1$xyz$xxxxxxxxxxxxxx/:0:0:99999:7::::
mo是用户名。$1$xyz$xxxxxxxxxxxxxx/是mo用户的加密密码(与 root 用户类似,使用 MD5 哈希算法)。0表示密码的最后修改日期。0表示密码最小使用期限。99999表示密码最大使用期限(永不过期)。7表示密码到期前 7 天警告用户。
4、密码计算方式
python -c 'from crypt import crypt; print(crypt("root", "$1$xyz$"))'
5、创建用户目录
# /buildroot/board/rockchip/common/post-build.sh
# 创建 mo 用户的目录
mkdir -p /home/mo
chown mo:mo /home/mo
chmod 755 /home/mo
4.6.3、默认登录子账号
文件路径 : ./buildroot/package/busybox/busybox.mk
修改添加内容如下
ifeq ($(BR2_TARGET_SERIAL_SHELL_GETTY),y)
BUSYBOX_SERIAL_SHELL = "$(SYSTEM_GETTY_PORT)::respawn:/sbin/getty -L $(SYSTEM_GETTY_OPTIONS) $(SYSTEM_GETTY_PORT) $(SYSTEM_GETTY_BAUDRATE) $(SYSTEM_GETTY_TERM)"
else
ifeq ($(BR2_TARGET_SERIAL_SHELL_SH),y)
BUSYBOX_SERIAL_SHELL = "::respawn:-/bin/sh -f mo"
else ifeq ($(BR2_TARGET_SERIAL_SHELL_LOGIN),y)
BUSYBOX_SERIAL_SHELL = "::respawn:-/bin/login -f mo"
else
BUSYBOX_SERIAL_SHELL =
endif
https://www.yiyuanjichang.net/api/v1/client/subscribe?token=4772d11bfd3a784bdc6b198200a74eaf
十一、buildroot系统登录配置的更多相关文章
- Linux系统安全配置基线
一:共享账号检查 配置名称:用户账号分配检查,避免共享账号存在 配置要求:1.系统需按照实际用户分配账号: 2.避免不同用户间共享账号,避免用户账号和服务器间通信使用的账号共享. 操作指南:参考配置操 ...
- SAPGUI系统登录页面配置的SAProuter有什么用
大家在安装完SAPGUI后,准备添加系统列表进行登录时,注意过这个SAProuter字段么? 从SAP的帮助文档上可以找到SAProuter的定义: https://help.sap.com/saph ...
- 在Mac系统上配置Android真机调试环境
在Mac系统上配置Android真机调试环境 mac上配置安卓环境还说挺方便的,真机调试也比win上要好一些.win上被各种软件强行安装了xxx助手. 在mac上就了一个干净的感觉. 下载Androi ...
- linux基础-第十一单元 系统监控
第十一单元 系统监控 系统监视和进程控制工具-top和free top命令的功能 TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序 ...
- Winform开发框架之权限管理系统改进的经验总结(3)-系统登录黑白名单的实现
在一般的权限系统里面,可能经常会看到系统的黑名单或者白名单的拦截功能.在一般权限系统里面,常见的黑名单就是禁止用户在某些IP上登录系统,白名单就是允许用户只在某些IP上登录系统.本随笔主要介绍在我的权 ...
- 在window系统下配置login.sql
在window系统下配置login.sql 他的位置是登录用户的文件夹,我的win7系统位置是: C:\Users\Administrator 我的login.sql下载地址: http://file ...
- VB.NET版机房收费系统---七仙女之系统登录
VB.NET第一版机房收费系统,告一段落,验收的时候.问题也是大大的存在,没实用上设计模式,什么触发器.存储过程,都没实用上.看看其她小伙伴的,七层实现登录?那是什么东东,相比較我的三层而言,多了两倍 ...
- 从.Net到Java学习第十一篇——SpringBoot登录实现
从.Net到Java学习系列目录 通过前面10篇文章的学习,相信我们对SpringBoot已经有了一些了解,那么如何来验证我们的学习成果呢?当然是通过做项目来证明啦!所以从这一篇开始我将会对之前自己做 ...
- Windows 10 系统,配置jdk系统环境变量
1. 下载jdk包,下载路径为:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html, ...
- Centos6.5之ssh免密码登录配置
Centos6.5之ssh免密码登录配置 centos ssh 免密码登录 0.说明 这里为了方便说明问题,假设有A和B两台安装了centos6.5的主机.目标是实现A.B两台主机分别能够通过ssh免 ...
随机推荐
- BUUCTF---这是Base??
题目 dict:{0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11 ...
- Static Timing Analysis Basics
Preface This note only introduce the essential concepts about Static Timing Analysis, which not cont ...
- Javascript try catch finally
很少用到javascript的异常捕获,突然需要,发现挺全的,小小记录下,留爪. 直接打码: //public.js //异常输出 function exception(ex) { console.l ...
- 一款让 Everything 更加如虎添翼的 .NET 开源辅助工具!
前言 相信很多同学都应该用过 Everything 这个实用的 Windows 文件搜索神器吧,今天大姚给大家分享一款让 Everything 更加如虎添翼的 .NET 开源辅助工具:Everythi ...
- Spring Cloud Gateway网关
一.Spring Cloud Gateway组件的核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求由(路由)转发到对应的微服务 网关的执行过程:当一个请求到达网关,网关利用断言,查看该请求是 ...
- AI浏览器自动化实战
只需一句话,AI 即可自动操作浏览器: 搜索商品: 下单支付: 甚至还能进行深度研究(Deep Research),自动生成完整的攻略报告: Browser use 是一个开源项目,使 AI 大模型能 ...
- app自动化:Androiddriver操作api
一.获取操作的api 1.currentActivity():获取当前activity 一般获取到当前activity与预期进行断言 androidDriver.currentActivity(); ...
- 备份一个http/https请求,用的比较多的POST json数据
var data = new object[] { new { sn = SN, mac = Mac } }; var jobj = await Task.Run(() => { try { u ...
- html input 是否允许浏览器字段默认值 或者之前输入的值
autocomplete 属性是 HTML5 中的新属性,在input中autocomplete属性是默认开启的. 1.定义:autocomplete属性规范表单是否启用自动完成功能.自动完成允许浏览 ...
- 使用IDEA构建SpringBoot应用镜像
目录 前置设置 编写Dockerfile文件 添加运行配置 前置设置 确保IDEA已经设置了服务器Docker的信息.[1] 确保您有可运行的SpringBoot项目 编写Dockerfile文件 D ...