先用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命令又看不到,所以就导致了这种错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)