1. 程式人生 > >Linux系統中修改使用者名稱

Linux系統中修改使用者名稱

Ubuntu建立新使用者

$是普通管員,#是系統管理員,在Ubuntu下,root使用者預設是沒有密碼的,因此也就無法使用(據說是為了安全)。想用root的話,得給root使用者設定一個密碼:
sudo passwd root
然後登入時使用者名稱輸入root,再輸入密碼就行了。
ubuntu建使用者最好用adduser,雖然adduser和useradd是一樣的在別的linux糸統下,但是我在ubuntu下用useradd時,並沒有建立同名的使用者主目錄。
例子:adduser user1
這樣他就會自動建立使用者主目錄,建立使用者同名的組。
[email protected]:~# sudo adduser linuxidc

[sudo] password for xx:
輸入xx使用者的密碼,出現如下資訊
正在新增使用者"linuxidc"…
正在新增新組"linuxidc" (1006)…
正在新增新使用者"linuxidc" (1006) 到組"linuxidc"…
建立主目錄"/home/linuxidc"…
正在從"/etc/skel"複製檔案…
輸入新的 UNIX 口令:
重新輸入新的 UNIX 口令:
兩次輸入linuxidc的初始密碼,出現的資訊如下
passwd: password updated successfully
Changing the user information for linuxidc
Enter the new value, or press ENTER for the default

Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Full Name []:等資訊一路回車
這個資訊是否正確? [Y/n] y

新增sudo許可權

不論是adduser還是useradd的使用者都暫時沒有sudo的許可權,所以要想實現sudo還需進行配置。

修改group

因為Ubuntu安裝的時候,預設使用者是有sudo的,那麼就是因為預設使用者處在sudo的group下,只用:

cat /etc/group | grep 'sudo'
  • 1
  • 1

這樣就能到sudo的group了,可以看到一般數字是:27.

修改使用者組:

usermod -G 27 new_username
  • 1
  • 1

這樣就可以了。

修改sudoers

直接修改sudoers檔案,然後在root ALL=(ALL:ALL) ALL下面新增上:

new_username ALL=(ALL:ALL) ALL
  • 1
  • 1

就這樣就可以了。


二.修改主機名

也可以在終端輸入: hostname 來檢視主機名,可以通過以下方法來改成自己喜歡的主機名:

1.終端輸入su - 切換到root使用者,然後用vim編輯器開啟配置檔案/etc/hostname,也可以用gedit開啟

開啟的檔案內容就是主機名,修改為你自己的就可以了,儲存退出。

Linux系統Ubuntu下修改使用者名稱和主機名

2.修改hosts檔案,開啟hosts檔案,修改127.0.1.1這一行,把127.0.1.1後面的主機名修改成你自己的,

儲存並退出。然後重啟Ubuntu系統即可。

Linux系統Ubuntu下修改使用者名稱和主機名


在安裝系統的時候,經常會無意識的隨便起個使用者名稱,後面如果發現該使用者名稱不好或因為環境需要須重起個使用者名稱,經過查詢資料和親自測試發現有兩種方案可選:手動修改和使用usermod等命令自動修改。

方案一:手動修改各個關聯使用者檔案

  1. 以root身份登入
    系統檔案的修改需要root許可權,這裡不管是原root使用者登入還是普通使用者切換到root下都可以,只要有修改許可權就行。

  2. 修改/etc/passwd這個檔案中的使用者名稱部分、使用者組部分和主目錄部分
    如我本來的使用者名稱為hadoop,現在想修改為seed,則要修改下面部分:


    修改/etc/passwd檔案

    注意使用者組部分為1000:1000中的第二個1000(組標識號),這裡沒有修改,因為不需要新增加組而只是把原來的組名改掉即可(組標識號不變),見3。

  3. 修改/etc/group這個檔案中的組名部分(組標識號不變),同時也將/etc/gshadow改寫一下
    etc/group檔案修改


    修改/etc/group檔案

    /etc/gshadow檔案修改


    修改/etc/gshadow檔案
  4. 修改/etc/shadow檔案中的使用者名稱部分,這個不改將無法登入系統,這步非常重要。


    修改/etc/shadow檔案
  5. 修改/home/olduser為/home/newuser,同時注意一定要修改其所屬的使用者和使用者組,這個很關鍵。


    注意:這步使用命令mv hadoop seed修改後,其下所有的檔案所屬使用者和使用者組都自動修改好,不需要自己手動用chown -R修改。

    上面這5個步驟缺一不可,操作失誤很可能導致無法登入系統,認真完成上面的5個步驟重啟系統後即可修改成功。

  6. 修改sudoers檔案
    經過上述步驟後,一般人都認為大功告成了,而網上資料也最多隻有上面幾個步驟,其實還有一點很重要,以後你在使用sudo時會提示"xxx is not in the sudoers file. This incident will be reported.其中xxx是你的使用者名稱,也就是你的使用者名稱沒有許可權使用sudo,這主要是因為sudoers檔案裡記錄的還是原來的使用者名稱,需要更新過來,步驟如下:

    (1)進入超級使用者模式。也就是輸入"su -"
    注意這裡有"-" ,這和su是不同的,在用命令”su”的時候只是切換到root,但沒有把root的環境變數傳過去,還是當前使用者的環境變數,用”su -”命令將環境變數也一起帶過去,就象和root登入一樣。

    (2)新增檔案的寫許可權。

    chmod u+w /etc/sudoers

    (3)編輯/etc/sudoers檔案。

    vi /etc/sudoers

    進入編輯模式,找到這一 行:
    root ALL=(ALL) ALL
    在它的下面新增:
    hadoop ALL=(ALL) ALL
    這裡的hadoop是你的新使用者名稱,然後儲存退出。

    (4)撤銷檔案的寫許可權。

    chmod u-w /etc/sudoers

方案二:使用命令usermod修改

首先介紹下usermod命令的基本用法:

usermod [-LU][-c <備註>][-d <登入目錄>[-m]][-e <有效期限>]
[-f <緩衝天數>][-g <群組>][-G <群組>][-l <帳號名稱>][-s <shell>]
[-u <uid>[-o]] [使用者帳號]

描述:
usermod命令會參照你命令列上指定的部分修改系統帳號檔。下列為usermod可選用的引數。
-c <備註>
更新/etc/passwd中的註解欄。
-d <登入目錄>
更新使用者新的登入目錄(使用者目錄)。如果給定-m選項,使用者舊目錄會搬到新的目錄去,如舊目錄不存在則建個新的。
-e <有效期限>
加上使用者帳號停止日期。日期格式為MM/DD/YY.
-f <緩衝天數>
帳號過期幾日後永久停權。當值為0時帳號則立刻被停權。而當值為-1時則關閉此功能。預設值為-1。
-g <群組>
更新使用者新的起始登入群組。群組名須已存在。群組ID必須參照既有的的群組。群組ID預設值為1。
-G <群組>
定義使用者為一堆groups的成員。群組名同-g選項的限制。如果使用者現在的群組不再此列,則將使用者由該群組中移除。
-l <帳號名稱>
變更使用者login時的名稱為login_name,即修改使用者登入名。其於不變。特別是,使用者目錄名應該也會跟著更動成新的登入名。
-s <shell>
指定新登入shell。如此欄留白,系統將選用系統預設shell。
-u <uid>
使用者ID值。必須為唯一的ID值,除非用-o選項。數字不可為負值。預設為最小不得小於99而逐次增加。0~99傳統上是保留給系統帳號使用。使用者目錄樹下所有的檔案目錄其userID會自動改變。放在使用者目錄外的檔案則要自行手動更動。

警告

usermod不允許你改變正在線上的使用者帳號名稱。當usermod用來改變userID,必須確認這名user沒在電腦上執行任何程式,否則會報“usermod: user xxx is currently logged in”錯誤。因此必須root使用者登入或者其他使用者登入然後切換到root身份,而不能在當前使用者下切換至root進行修改。

修改使用者名稱步驟如下:以原來的使用者名稱seed修改為hadoop使用者名稱為例:

  1. 以root身份登入

  2. usermod -l hadoop seed
    該命令相當於做了兩件事:
    (1)將/etc/passwd下的使用者名稱欄從seed修改為hadoop,其他部分不變


    (2)將/etc/shadow下的使用者名稱欄從seed修改為hadoop,其他部分不變


  3. usermod -c hadoop hadoop
    相當於將/etc/passwd下的註解欄修改為hadoop,其他部分不變


  4. groupmod -n hadoop seed
    將原來的使用者組seed修改為hadoop,只修改組名,組標識號不變,相當於修改了檔案/etc/group和/etc/gshadow

  5. usermod -md /home/hadoop hadoop
    相當於做了兩件事:
    (1)將/etc/passwd下的登入目錄欄修改為/home/hadoop,其他部分不變


    (2)將原來的使用者目錄/home/seed修改為新的使用者目錄/home/hadoop


這些步驟可以說與方案一的一一對應,缺一不可。方案二簡單一點,但方案一更能讓我們理解這背後的運作機制。