嵌入式arm linux设置登录用户和用户密码

2019-07-12 14:33发布

        最近在开发基于arm linux的集中器,出于保护系统的目的,需要给系统设置登录用户名和密码,因此就在网上查询了下怎样给嵌入式arm linux系统设置登录用户名和密码的方法,结果如下: 设置登录用户和用户密码,在/etc/inittab文件中,内容如下:
#first:run the system script file
::sysinit:/etc/init.d/rcS
#::askfirst:-/bin/sh
::sysinit:-/bin/login
::ctrlaltdel:-/sbin/reboot
#umount all filesystem
::shutdown:/bin/umount -a -r
#restart init process
::restart:/sbin/init 加上注释,第四项是设置登录界面的,利用的是busybox中的login程序。我将第三项注释掉,添加了一个第四项。在/etc/目录下创建一个passwd文件和shadow文件,passwd文件中内容为
root:x:0:0:root:/:/bin/sh
第一段表示登录用户名,第二段如果是x表示密码在shadow中,为密文,不可见。第三段表示当前用户的UID等级,一般root超级用户的UID为0,表示等级最高,最好将其他用户的UID等级设置为0.第四段暂不说,详细忘了,可以网上搜索,第五段表示登录名的全名,不是很重要,可以表示该用户的地址等。第六段表示默认登录后所在目录,第七段表示登录后执行的脚本。arm Linux中是/bin/sh而不是/bin/bash。

shadow文件中内容为:
root:Wdfdfqwe:17226:::::
第一段表示登录的用户名
第二段表示密文密码。

设置用户密码:
passwd root
之后输入该用户的密码,之后在shadow中就会生成密文密码,你是无法知道具体含义的,生成密文密码后,可以将shadow文件中的密文密码放入到制作根文件系统的文件夹中,然后烧录以便不用每次都设置密码。 在我的嵌入式系统中使用passwd root设置root用户密码后,在shadow文件中并没有看到如上面所说的shadow文件中的内容,反而我的shadow文件是空的,但是在passwd文件中可以看到加了密的密码如下,原因是busybox中生成passwd工具的时候配置没有设置好,可以如下方法解决: 我的系统中的passwd内容:

之后重启系统,root登录后,reboot无法使用,此时使用reboot -f可以重启。

设置好登录界面和密码后,如果使用telent登录也会需要输入登录名和密码,有保护系统的效果。密码如果忘了,只能在文件夹形式的根文件系统中,将shadow文件中的密文密码弄成空,这样表示没有密码,然后重新烧录,系统启动后,直接输入登录名就可以登录到系统中,此时可以在重新利用passwd root重新给root用户设置密码,设置成功后在shadow文件中又生成了该密码对应的密文密码,此时将这个shadow文件中该用户对应的密文密码复制到文件夹形式的根文件系统中,重新制作文件系统重新烧录即可。
如果不想要登录界面了,不用每次都输入登录名和密码了,只需要将ininttab文件中的第四项注释掉,将第三项注释打开。 在实际使用的过程中还遇到一个登陆问题,就是系统启动后一段时间没有登陆的操作会出现下面的问题:Login timed out after 60 seconds,这个超时提醒,后续的操作都不起作用。 后来在我的inittab文件中增加了一句::respawn:/bin/login,respawn确保login超时后重新进入login。不加respawn login会超时然后直接进入命令行。 详细解释passwd文件和shadow文件:

一、/etc/passwd
/etc/passwd 文件是一个纯文本文件,每行采用了相同的格式: 
name:password:uid:gid:comment:home:shell 
name 用户登录名 
password 用户口令。此域中的口令是加密的,常用x表示。当用户登录系统时,系统对输入的口令采取相同的算法,与此域中的内容进行比较。如果此域为空,表明该用户登录时不需要口令。 
uid 指定用户的 UID。用户登录进系统后,系统通过该值,而不是用户名来识别用户。 
gid GID。如果系统要对相同的一群人赋予相同的权利,则使用该值。 
comment 用来保存用户的真实姓名和个人细节,或者全名。 
home 指定用户的主目录的绝对路径。 
shell 如果用户登录成功,则要执行的命令的绝对路径放在这一区域中。它可以是任何命令。
如果/etc/passwd文件存放的是用户的信息,由6个分号组成的7个信息,解释如下 
(1):用户名。 
(2):密码(已经加密) 
(3):UID(用户标识),操作系统自己用的 
(4):GID组标识。 
(5):用户全名或本地帐号 
(6):开始目录 
(7):登录使用的Shell,就是对登录命令进行解析的工具。
例如:abc:x:501:501::/home/abc:/bin/bash
二、/etc/shadow
如果查看/etc/shadow文件存放的特殊帐号信息如下: 
name:!!:13675:0:99999:7:::  
每一行给一个特殊帐户定义密码信息,每个字段用 : 隔开。 
字段 1 定义与这个 shadow 条目相关联的特殊用户帐户。 
字段 2 包含一个加密的密码。 
字段 3 自 1/1/1970 起,密码被修改的天数 
字段 4 密码将被允许修改之前的天数(0 表示“可在任何时间修改”) 
字段 5 系统将强制用户修改为新密码之前的天数(1 表示“永远都不能修改”) 
字段 6 密码过期之前,用户将被警告过期的天数(-1 表示“没有警告”) 
字段 7 密码过期之后,系统自动禁用帐户的天数(-1 表示“永远不会禁用”) 
字段 8 该帐户被禁用的天数(-1 表示“该帐户被启用”) 
字段 9 保留供将来使用

如果查看/etc/shadow下存放的普通帐号信息如下: 
(1):帐号名称 
(2):密码:这里是加密过的,但高手也可以解密的。要主要安全问题(代!符号标识该帐号不能用来登录) 
(3):上次修改密码的日期 
(4):密码不可被变更的天数 
(5):密码需要被重新变更的天数(99999表示不需要变更) 
(6):密码变更前提前几天警告 
(7):帐号失效日期 
(8):帐号取消日期 
(9):保留条目,目前没用 
例如:abc:!!:14768:0:99999:7:::