嵌入式Linux Busybox创建用户后无法登录的解决方案

先用addgroup命令添加一个mysql组:addgroup -S mysql
再用adduser命令添加一个mysql用户:adduser -S -G mysql -s /bin/sh mysql
(-S表示组号或用户号从100开始,不加-S那就从1000开始)
设置密码:passwd mysql
完了之后,su mysql登录,结果提示:
[root@exynos4412 /]# su mysql
su: can't execute '/bin/sh': Permission denied
在电脑上用telnet远程连接登录:telnet 192.168.0.4
结果窗口一闪就消失了:

exynos4412 login: mysql
Password:
login: can't change directory to '/home/mysql'
login: can't change directory to '/': Permission denied


Connection to host lost.

在串口里面一看,/home/mysql的所属用户和组都是mysql,/bin/sh也有读写执行权限,有权限啊,到底是怎么回事?

[root@exynos4412 /]# ls -l /home
total 8
drwxr-sr-x    2 daemon   daemon        4096 Sep 15  2021 daemon
drwxr-sr-x    2 mysql    mysql         4096 Jan  1 00:04 mysql
[root@exynos4412 /]# ls -l /bin/sh
lrwxrwxrwx    1 root     root             7 Aug 27  2021 /bin/sh -> busybox

再看看根目录的权限,可根目录的权限要怎么看呢?
“ls -l /”,看不了啊,看到的都是根目录里面的目录和文件的权限。
“ls -al /”,显示隐藏文件,再看看呢:

[root@exynos4412 /]# ls -al
total 60
drwx------   17 daemon   daemon        4096 Sep 15  2021 .
drwx------   17 daemon   daemon        4096 Sep 15  2021 ..
drwx------    4 daemon   daemon        4096 Aug 28  2021 .Trash-1000
-rw-------    1 root     root          1163 Jan  1 00:02 .ash_history
-rw-------    1 root     root          1140 Sep 15  2021 .bash_history
drwxr-xr-x    2 root     root          4096 Sep 15  2021 bin
drwxr-xr-x    7 root     root         14120 Jan  1 00:00 dev
drwxr-xr-x    4 root     root          4096 Jan  1 00:12 etc
drwxr-xr-x    4 root     root          4096 Jan  1 00:12 home
drwxr-xr-x    3 root     root          4096 Sep  5  2021 lib
lrwxrwxrwx    1 root     root            11 Aug 27  2021 linuxrc -> bin/busybox
drwxr-xr-x    3 root     root          4096 Jan  1  2000 mnt
drwxr-xr-x    2 root     root          4096 Sep 15  2021 opt
dr-xr-xr-x   93 root     root             0 Jan  1  1970 proc
drwxr-sr-x   32 root     root          4096 Sep 15  2021 root
drwxr-xr-x    2 root     root          4096 Aug 27  2021 sbin
dr-xr-xr-x   12 root     root             0 Jan  1 00:00 sys
drwxrwxrwt    2 root     root            40 Jan  1 00:00 tmp
drwxrwxr-x    8 root     root          4096 Sep 15  2021 usr
drwxrwxr-x    4 root     root          4096 Sep 13  2021 var

那个.和..怎么都是daemon用户,而且权限是700?
我们再用“stat /”命令看看:

[root@exynos4412 /]# stat /
  File: /
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: b332h/45874d    Inode: 2           Links: 17
Access: (0700/drwx------)  Uid: ( 1000/  daemon)   Gid: ( 1000/  daemon)
Access: 2021-09-15 07:45:35.000000000
Modify: 2021-09-15 06:50:21.000000000
Change: 2000-01-01 00:17:36.000000000

果然问题出在这里,根目录的所属用户和组都是1000号daemon,而权限是0700,其他用户(除了root)根本无权限访问!
找到问题了,我们就好办了。
修改权限:chmod 755 /
修改所属用户和组:chown root:root /
好了,问题解决了,现在su mysql和telnet都能登录mysql账户了。

[root@exynos4412 /]# ls -al
total 60
drwxr-xr-x   17 root     root          4096 Sep 15  2021 .
drwxr-xr-x   17 root     root          4096 Sep 15  2021 ..
(以下省略)

为什么根目录的默认所属用户和组会是1000号,权限默认是700呢?
这是因为,我们在给SD卡分区的时候,是在电脑上的Linux虚拟机里面操作的,当时我们登录的不是root账户,而是自己的账户,账户号刚好是1000。分完区,SD卡插到板子上启动,挂载SD卡的ext4分区为根文件系统,根目录的权限用ls -l命令又看不到,所以就导致了这种错误。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巨大八爪鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值