1. 程式人生 > >ubuntu16.04下無法登入或迴圈登入的解決方法

ubuntu16.04下無法登入或迴圈登入的解決方法

問題起因

由於docker daemon需要繫結到主機的Unix socket而不是普通的TCP埠,而Unix socket的屬主為root使用者,所以其他使用者只有在命令前新增sudo選項才能執行相關操作。
docker 需要使用者具有 sudo 許可權,為了避免每次命令都輸入sudo,所以我們需要把本機當前使用者加到docker使用者組裡面。
由於是粗心,從網上找到一篇,就把下面這句執行了:

sudo 迴圈登入 -aG docker $USER

然後呢,我發現好像並沒有什麼用誒,我也沒在意,然後繼續加上sudo進行docker打包映象了。
後來,偶爾發現當前使用者下面好多資料夾我都沒有許可權了
???
然後下載一個檔案,都不能存了??

後來就打算重啟看看,重啟登入介面就進入了死迴圈,如標題:迴圈登入

還好是linux,還好我有root。

問題原因

然後在grub處進入了recovery模式,後來也前思後想,應該是那句寫的有問題,才導致這樣問題的。
但是那句本身沒有錯,因為我最開始沒有加docker這個組。
後面一看,/home/xxx許可權,全部被改為docker使用者組的了。
通過檢視/etc/passwd,/etc/group,/etc/shadow,瞭解到,
當前使用者xxx確實被加入到了docker下面,但是就是/home/xxx下面許可權都屬於docker了。

解決方法

更改/home/xxx下面所有檔案的uid和gid。
chgrp 組名 檔名 -R
chown 使用者名稱 檔名 -R
-R標識遞迴目錄下所有檔案

後記

開始遇到這個問題比較懵,網上看同樣標題的部落格,有說解除安裝全部驅動重灌的,有說全部刪除某個特定檔案的各種。。
不過還是具體問題具體分析吧,linux開源,老大root帳號密碼我都有,還愁不能解決嗎哈哈哈。

那麼當輸入使用者帳號登入時,系統幫你處理了什麼呢?
1. 先找尋/etc/passwd 裡面,是否有你輸入的帳號,如果沒有則跳出。如果有的花,去/etc/group中把相應的uid和gid讀出來,並且把該帳號的主資料夾與shell設定也一併讀出。
2. 核對密碼錶,去/etc/shadow 裡面找出對應帳號與uid,核對你剛剛輸入的密碼。
3. 如果都ok,那就進入shell1控管的階段了。