busybox启动默认以root用户登陆运行却没有root权限

在以nfs根文件系统启动后发现虽然默认是以root用户登陆的,但是shell默认不是以root权限运行的,表现就是在终端中的command prompt显示的是"$"而不是"#",之前遇到过几次,但是没有深入探讨原因,只是粗暴的把所有文件的owner改成root,这次在buildroot中编译出来的文件系统又存在这个问题了,那么就看看具体原因吧.

在终端中输入"whoami"命令,输出是default用户

看看"default"这个用户对应uid号是什么

$cat /etc/passwd

default:x:1000:1000:Default non-root user:/home/default:/bin/sh

用"id"命令看看当前的用户的id信息,显示的如下

$ id

uid=0(root) gid=0(root) euid=1000(default)

恩?多了个euid=1000(default),

也就是说shell被设置了SUID,所以才会导致euid和uid不一致,变成了属主"default"
查看一下shell的程序(实际上就是busybox)
$ ls -l /bin/busybox 
-rwsr-xr-x    1 default  default     720080 May 27  2017 /bin/busybox
恩,这个"s"证明了上面的想法是正确的,而这个"s"就表示这个文件设置了
SUID,也就是说在运行时的euid是这个文件的属主,如果这个属主是"root",那么这个没有问题,但是这里却是"default",所以导致了登陆后权限变成了普通的用户default,
为了解决这个问题,我们只需要在根文件系统中copy一下就ok了,比如
$cp /bin/busybox /
$cp /busybox /bin
$ls -l /bin/busybox
-rwxr-xr-x    1 default  root        720080 May 27  2017 /bin/busybox
"s"已经变成了"x"
这样应该就没有问题了,重启板子后发现一切正常
#whoami
root
# id

uid=0(root) gid=0(root)


后续总结一下euid和SUID等权限相关的知识点

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值