【Linux系列】无法创建用户useradd:无法打开 /etc/passwd
背景事情起因源自阿里云服务上安装ES(elasticsearch),学习ES的路上可能都会遇到的一个问题,就是** 无法在root账户下启动ES服务**,具体报错信息如下:uncaught exception in thread [main]org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can n
背景
事情起因源自阿里云服务上安装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
- 权限 i 说明设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。
[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进行简单的复习:
-
i:不可修改权限 例:chattr u+i filename 则filename文件就不可修改,无论任何人,如果需要修改需要先删除i权限,用chattr -i filename就可以了。查看文件是否设置了i权限用lsattr filename。
-
a:只追加权限, 对于日志系统很好用,这个权限让目标文件只能追加,不能删除,而且不能通过编辑器追加。可以使用chattr +a设置追加权限。
另外一种解决方案
对于此种解决方案是小编第一次采用的,但是并未生效;
故推荐优先使用上述方案,如果仍未解决,可以尝试一下这种方案是否能够解决;
- 方案描述:
命令:cd /etc
ls -al(查询所有文件,包括后缀文件)
是否存在**/etc/passwd.lock**的文件;
1.若存在使用root账户删除,原因可能是之前使用到这个文件没有正常关闭。
2.如果不存在passwd.lock文件,排查是否存在pwd.lock(小编的服务器存在这个文件,上面第一种文件不存),然后删除。
命令:rm .pwd.lock
注意.pwd.lock 这个名称可能不一样,可以到etc目录去查看
总结
安装ES踩坑问题,意识到程序员人生就要不停的学习,否则,经验从何而谈,不要怕出问题,编程之路不仅要学知识点,更重要的是解决问题。
更多推荐
所有评论(0)