解决linux下无法添加用户和组的问题(groupadd命令不可用)
今天需要给一个linux服务器安装mysql,在安装mysql的时候,出现错误提示:
[root@localhost softwaretools]# rpm -ivh MySQL-server-5.5.23-1.rhel5.x86_64.rpm
Preparing... ########################################### [100%]
1:MySQL-server ########################################### [100%]
chown: “mysql:mysql”: 无效的用户
chown: “mysql:mysql”: 无效的用户
因为mysql在安装的时候需要创建mysql组和mysql用户,看到这样的错误,于是想到了,手工创建组和用户,然后再重装mysql。
结果执行命令:
[root@localhost softwaretools]# groupadd mysql
groupadd:无法打开组文件(groupadd: unable to open group file)
此时就奇怪了,当前用的明明是root用户,为什么没有创建组和用户的权限呢。
接下来,就是一堆百度、谷歌,各种博客论坛。
得出一点点结论:
1,添加用户需要用到passwd和shadow这两个文件
2,添加组需要用到shadow和gshadow这两个文件
此时第一感觉,可能是文件权限的问题,使用 ls -l 命令发现权限正常。
奇怪的很了,于是又需要找度娘和谷哥,最终发现问题,找到了2个命令(lsattr和chattr),是因为隐藏权限在作怪:
对这2个命令的简单做下说明:
[root@localhost ~]# lsattr /etc/passwd------------- /etc/passwd[root@localhost ~]# lsattr /etc/group----i-------- /etc/group[root@localhost ~]# lsattr /etc/shadow------------- /etc/shadow[root@localhost ~]# lsattr /etc/gshadow----i-------- /etc/gshadow
既然这样只要把i权限去掉就应该好了。
使用命令chattr命令修改文件隐藏权限,执行如下命令:
chattr -i /etc/gshadow
chattr -i /etc/group
然后手工添加了一个用户进行测试,结果可以正常执行了。
最后又将mysql彻底卸载后,重装,一切顺利。