加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

Linux rootfs:如何开机就自动添加某个用户?

12/17 10:50
133
阅读需 4 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

项目开发需求,需要开机后就自动创建某个用户+密码

厂家提供的sdk,只有adduser命令,该命令添加用户时,会有终端交互,需要手动输入2次密码,所以无法通过简单脚本方式创建。

要实现自动填充密码,可以借助工具expect,但是该工具移植还需要依赖tcl库。外加产品存储空间比较有限,本着能省就省原则,彭老师选择了另外一种方法,就是直接修改rootfs的shadow、passwd文件。

环境

sdk:复旦微
Buildroot 2018.02.3

步骤

1、adduser 手动添加命令

开发板上手动添加用户ftp,密码:123456

# adduser ftp
adduser: /home/ftp: No such file or directory
Changing password for ftp
New password: 
Bad password: too weak
Retype password: 
passwd: password for ftp changed by root

添加用户之后,命令会修改文件

/etc/shadow
/etc/passwd

在这2个文件的最下面会增加用户ftp相关信息。

    /etc/shadow
# cat /etc/shadow
…………
ftp:$1$AQb2UA9p$mX8fQskQJcHm0t4QlVk4A1:0:0:99999:7:::
    /etc/passwd
# cat /etc/passwd
…………
ftp:x:1000:1000:Linux User,,,:/home/ftp:/bin/sh

2、将用户信息配置到rootfs

将该信息添加到厂家提供的sdk的buildroot目录下:

/home/peng/xxx/work/xxx/sdk/buildroot-2018.02.3/output/target/etc
peng@ubuntu:~/work/xxx/sdk/buildroot-2018.02.3/output/target/etc$ ls passwd shadow -l
-rwxr--r-- 1 peng peng 339 Nov 15 17:24 passwd
-rwx------ 1 peng peng 242 Nov 15 17:24 shadow

用管理员权限修改这两个文件:

    shadow

    passwd

编译烧录重启,即可用ftp用户登录。

注意

修改用户密码,如果登入不了的问题,可能和系统时间默认有关,系统时间太旧了(1970),导致密码无效

所以必须用date命令手动设置一下系统时间:

date -s "2024-11-23 15:12"

可以把这个命令放到系统自动启动脚本里,开机自动运行即可。

sdkbuildroot-2018.02.3outputtargetetcinit.drcS

 

相关推荐

电子产业图谱

公众号『一口Linux』号主彭老师,拥有15年嵌入式开发经验和培训经验。曾任职ZTE,某研究所,华清远见教学总监。拥有多篇网络协议相关专利和软件著作。精通计算机网络、Linux系统编程、ARM、Linux驱动、龙芯、物联网。原创内容基本从实际项目出发,保持原理+实践风格,适合Linux驱动新手入门和技术进阶。