Linux profile and inittab file

Linux profile and inittab file_第1张图片
题图:gratisography

Linux profile and inittab file

/etc/profile文件是每个用户登录时都会运行的环境变量设置,属于系统级别的环境变量,设置在里面的东西对所有用户适用。/etc/inittab文件是系统初始化进入busybox后跑的一个配置文件。

下面通过具体例子,来分析这两个文件。

1.profile文件

通过两个例子来说明profile的使用。

a.修改路径提示


在console后,会有前面的一段提示信息,如下:

root@OpenWrt:/#
root@OpenWrt:/# cd etc/init.d/
root@OpenWrt:/etc/init.d#

会提示路径等,那这些信息是在那边限制的呢,就是位于/etc/中的profile文件,里面有个参数PS1,如下:

export PS1='\u@\h:\w\$ '
  • \u:当前用户名 ;
  • @:显示@ ;
  • \h:显示主机第一个名 ;
  • \w:完整工作目录,
  • $:显示$

b.添加初次进入console提示信息


在路由器开机完后,在console按下回车键,会跳出一串拼接而成的openwrt字样,如下:

# cat /etc/banner
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (Chaos Calmer, r49389)
 -----------------------------------------------------

那上面那一串字符是哪里提供的呢?如果想使用自己特色的符号在怎么修改,下面就进行说明。

其实那一串字符是在/etc/banner里面

# cat /etc/banner
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (Chaos Calmer, r49389)
 -----------------------------------------------------

那我们需要做的就是,把/etc/banner里面的内容改成我们需要的形状,然后在/etc/profile里面添加/etc/banner的调用即可。

如在/etc/banner文件下加入如下字形

cat /etc/banner 
   ______                      __
  |  ____|.----..----..----. |  |_ .----..----.
  | |____ |   _||  -_||    | |   _||    ||   _|
  |______||__|  |____||____|.|____||____||__|
                                  C R E A T O R
 -----------------------------------------------------
 CHAOS CALMER (Chaos Calmer, r49389)
 -----------------------------------------------------

在/etc/profile里面添加如下语句

[ -f /etc/banner ] && cat /etc/banner

在console上进行测试验证,看结果是否正确。

2.inittab文件

busybox的init进程的初始化被分解为一系列初始化活动来完成,这些初始化活动通常被写入inittab配置文件里,init进程通过调用inittab来执行这次活动。

a.inittab文件的含义格式


inittab配置文件中的每一条都被看做是一个初始化活动,busybox中定义了8种初始化活动供inittab文件使用,如下:

活动名称 含义
sysinit 为init进程提供初始化命令脚本
wait 告诉init进程必须等到相应的进行执行完成之后,才能继续执行
once 仅执行相应的进程一次
respawn 当相应的进行终止之心时,重新启动该进行
askfirst 与respawn类似,不过init进程先输出“Please press Enter to active this console”,等用户按回车键之后,才启动子程序
shutdown 当系统关机时,执行相应的进程
restart 当init进程重启时,执行相应的进程,通常此处执行的进程就是init本身
ctrlatldel 当按Ctrl+Alt+Delete组合键时,执行相应的进程

openwrt下还有一个初始化活动就是askconsole,好像与askfirst是一样的意思。

inittab输入的格式如下:

:::

每个字段的含义如下:

字段 含义
id 表示该进程要使用的控制台,省略则与init进程一样的控制台
runlevels 对于busybox提供的init程序,这个字段没有意思,可以省略
action 表示init进程如何控制该子进程
process 要执行的程序,它可以是可执行程序,也可以是脚本

在busybox的init_main()函数里会调用parse__inittab()函数来解析inittab文件,如果没有inittab文件parse_inittab()函数也会添加默认值。

b.添加console访问权限


如果用过cisco或huawei的部分路由器,为了安全性考虑,进行串口登入的时候也希望像ssh那样要求输入用户名和密码才能进入控制台,这样可以防止其他人员随意更改盗取路由信息。

console的访问权限与Linux桌面系统如Ubuntu的用户管理类似,所以需要先对Linux的用户管理有一定了解,简单说明就是,通过/etc/passwd和/etc/shadow文件进行匹配。

/etc/passwd文件存储账户信息,如root后面的x代表密码为隐性的,存在shadow里面。

cat /etc/passwd 
root:x:0:0:root:/root:/bin/ash
daemon:*:1:1:daemon:/var:/bin/false
ftp:*:55:55:ftp:/home/ftp:/bin/false
network:*:101:101:network:/var:/bin/false
nobody:*:65534:65534:nobody:/var:/bin/false

/etc/shadow文件存储经过加密后的密码,如root后面的一大串字符。

cat /etc/shadow 
root:$1$hPNSjUZA$7eKqEpqVYltt9xJ6f0OGf0:15533:0:99999:7:::
daemon:*:0:0:99999:7:::
ftp:*:0:0:99999:7:::
network:*:0:0:99999:7:::
nobody:*:0:0:99999:7:::

所以在嵌入式Linux上也类似,我们要做的就是对这几个文件的添加设置,下面就如何添加访问权限进行说明。

1.修改/etc/inittab
Linux文件系统的启动一般都要经过busybox,所以第一步就需要将inittab初始化活动进行修改,inittab脚本内容一般如下:

::sysinit:/etc/init.d/rcS
::shutdown:/bin/umount -a -r
::respawn:-/bin/sh

修改为

::sysinit:/etc/init.d/rcS
::shutdown:/bin/umount -a -r
::respawn:-/bin/login

2.将Ubuntu里面的/etc/passwd、/etc/group、/etc/shadow到rootfs/etc下

# cp /etc/passwd   rootfs/etc
# cp /etc/group    rootfs/etc 
# cp /etc/shadow   roofs/etc

对以下三个文件修改,只保存与root相关的项,根据具体情况内容会有所不同。

  • 修改passwd为root:x:0:0:root:/root:/bin/ash,只保存与root相关项

  • 修改group为root:x:0:root,只保存与root相关项

  • 修改shadow为root:$1$1$hPNSjUZA$7eKqEpqVYltt9xJ6f0OGf0:15533:0:99999:7:::,只保存与root相关项

登陆开发板时需输入用户名密码,Ubuntu桌面系统的一致。

Linux profile file的分析就到这边,有感悟时会持续会更新。

注:以上内容都是本人在学习过程积累的一些心得,难免会有参考到其他文章的一些知识,如有侵权,请及时通知我,我将及时删除或标注内容出处,如有错误之处也请指出,进行探讨学习。文章只是起一个引导作用,详细的数据解析内容还请查看Linux相关教程,感谢您的查阅。

你可能感兴趣的:(Linux profile and inittab file)