记录对整个/etc目录扩大权限导致的ssh无法启动和mysql无法正确加载配置文件问题。
一、无法ssh登陆虚拟机(centos7系统)前段时间公司的虚拟机重启后突然无法ssh登陆了(虚拟机上的java应用、mysql等服务依旧完好运行),但端口22处于关闭状态,重新启动虚拟机也是问题依旧,当时初步判断是sshd服务没有正常启动,之前虚拟机的root用户是给另外一个人操作的,由于身在外地,也无法直接登陆查找是什么原因导致此事件的发生,最后让同事从vmware中直接登陆重启sshd服..
一、无法ssh登陆虚拟机(centos7系统)
前段时间公司的虚拟机重启后突然无法ssh登陆了(虚拟机上的java应用、mysql等服务依旧完好运行),但端口22处于关闭状态,重新启动虚拟机也是问题依旧,
当时初步判断是sshd服务没有正常启动,之前虚拟机的root用户是给另外一个人操作的,由于身在外地,也无法直接登陆查找是什么原因导致此事件的发生,最后让同事从vmware中直接登陆重启sshd服务,说是好了(具体是否好了存疑)。
后来回到公司,发现问题依旧,仍然无法ssh登陆虚拟机。
尝试重新启动sshd 服务: service sshd restart
结果提示:“Failed to start OpenSSH Server daemon”
进一步查找系统日志:
error: Permissions 0777 for '/etc/ssh/ssh_host_ed25519_key' are too open.
根据提示发现/etc/ssh下的所有*key文件的权限全部被chmod 为777了。权限太大,sshd直接报异常,无法启动了。
(后面还发现/etc目录被整个目录下所有文件全部扩大权限为777了。他可能执行的是【chmod 777 -R /etc 】真牛)
于是执行恢复权限(所有者有访问权限)命令:chmod 600 /etc/ssh/*key
然后重新启动sshd。终于成功启动sshd服务。可以ssh登陆此虚拟机了。
二、mysql的配置文件my.cnf无效。
可以登陆了,我就打算更新一下java应用,首先更新对应的mysql数据库。结果发现之前运行很好的初始化脚本出现异常,提示表不存在(其实表存在),
一查发现是大小写问题:
show VARIABLES like 'lower_case_table_names';
显示lower_case_table_names 0
记得之前设置的是1,于是查找配置文件/etc/my.cnf,文件中设置了lower_case_table_names=1,奇怪的是为什么没有生效呢?
于是通过命令查询看看mysqld当前启用的是哪个配置文件:
查看是否使用了指定目录的my.cnf
>ps aux|grep mysql|grep 'my.cnf' 输出为空,表示没有设置使用指定目录的my.cnf。
查看mysql启动时读取配置文件的默认目录
mysql --help|grep 'my.cnf'
输出:
mysql: [Warning] World-writable config file '/etc/my.cnf' is ignored.
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf
提示警告,/etc/my.cnf被忽略了。
查询/etc/my.cnf的权限设置,发现又是被设置了777。
重新重新修改权限:chmod 644 /etc/my.cnf。
重新启动myslq:service mysqld restart
mysql正常使用配置文件/etc/my.cnf,一切恢复正常。
然后跟之前操作这台虚拟的人确认,他回复确实对/etc执行过 chmod 777这样的操作,具体为什么这么操作记不起来了。
切记以后不要盲目扩大整个etc目录的权限。!!!
更多推荐
所有评论(0)