背景
事情起因源自阿里云服務上安裝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踩坑問題,意識到程式員人生就要不停的學習,否則,經驗從何而談,不要怕出問題,編程之路不僅要學知識點,更重要的是解決問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293603.html
標籤:其他
