admin管理员组文章数量:1566616
在以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信息,显示的如下
$ iduid=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等权限相关的知识点
版权声明:本文标题:busybox启动默认以root用户登陆运行却没有root权限 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1727083419a1097116.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论