事情起因源自阿里云服务上安装ES(elasticsearch),学习ES的路上可能都会遇到的一个问题,就是无法在root账户下启动ES服务,具体报错信息如下:
uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
解决方案:创建一个新的用户,但是创建过程中并不是很顺利,于是诞生了此篇文章。 参考了网上大概相似的解决方案,但是使用未解决。 例如:https://www.cnblogs.com/Detector/p/7850099.html
[root@izbp1hcw0fjg64l58525bqz etc]# lsattr /etc/passwd
-----a-------e-- /etc/passwd
[root@izbp1hcw0fjg64l58525bqz etc]# chattr -a /etc/passwd
[root@izbp1hcw0fjg64l58525bqz etc]# lsattr /etc/passwd
-------------e-- /etc/passwd
但是小编的阿里云服务器中**/etc/passwd**并不是i权限,属于a权限;
究其根源,还是文件权限问题,于是乎小编一顿操作,把a权限也删除了,居然成功了;
[root@izbp1hcw0fjg64l58525bqz etc]# adduser elk
adduser:无法打开 /etc/shadow
## 很明显/etc/shadow也无法打开
[root@izbp1hcw0fjg64l58525bqz etc]# lsattr /etc/shadow
-----a-------e-- /etc/shadow
[root@izbp1hcw0fjg64l58525bqz etc]# chattr -a /etc/shadow
[root@izbp1hcw0fjg64l58525bqz etc]# adduser elk
[root@izbp1hcw0fjg64l58525bqz etc]# passwd elk
更改用户 elk 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@izbp1hcw0fjg64l58525bqz etc]# chown -R elk /opt
细心的小伙伴可能会发现上面创建过程中**/etc/shadow**也无法打开,于是小编按照相同的逻辑处理权限问题,同样成功,最后成功创建ELK用户;
对于Linux文件权限a和i进行简单的复习:
对于此种解决方案是小编第一次采用的,但是并未生效; 故推荐优先使用上述方案,如果仍未解决,可以尝试一下这种方案是否能够解决;
1.若存在使用root账户删除,原因可能是之前使用到这个文件没有正常关闭。 2.如果不存在passwd.lock文件,排查是否存在pwd.lock(小编的服务器存在这个文件,上面第一种文件不存),然后删除。 命令:rm .pwd.lock
注意.pwd.lock 这个名称可能不一样,可以到etc目录去查看
安装ES踩坑问题,意识到程序员人生就要不停的学习,否则,经验从何而谈,不要怕出问题,编程之路不仅要学知识点,更重要的是解决问题。