Ubuntu創建新用戶
$是普通管員,#是系統管理員,在Ubuntu下,root用戶默認是沒有密碼的,因此也就無法使用(據說是爲了安全)。想用root的話,得給root用戶設置一個密碼:
sudo passwd root
然後登錄時用戶名輸入root,再輸入密碼就行了。
ubuntu建用戶最好用adduser,雖然adduser和useradd是一樣的在別的linux糸統下,但是我在ubuntu下用useradd時,並沒有創建同名的用戶主目錄。
例子:adduser user1
這樣他就會自動創建用戶主目錄,創建用戶同名的組。
root@ubuntu:~# 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
就這樣就可以了。
二.修改主機名
裝ubuntu12.04系統時忘記修改主機名了,打開終端顯示olhho@xxx-virtual-machine
也可以在終端輸入: hostname 來查看主機名,可以通過以下方法來改成自己喜歡的主機名:
1.終端輸入su - 切換到root用戶,然後用vim編輯器打開配置文件/etc/hostname,也可以用gedit打開
root@xxx-virtual-machine:~# vim /etc/hostname
打開的文件內容就是主機名,修改爲你自己的就可以了,保存退出。
2.修改hosts文件,打開hosts文件,修改127.0.1.1這一行,把127.0.1.1後面的主機名修改成你自己的,
保存並退出。然後重啓Ubuntu系統即可。
在安裝系統的時候,經常會無意識的隨便起個用戶名,後面如果發現該用戶名不好或因爲環境需要須重起個用戶名,經過查找資料和親自測試發現有兩種方案可選:手動修改和使用usermod等命令自動修改。
方案一:手動修改各個關聯用戶文件
-
以root身份登錄
系統文件的修改需要root權限,這裏不管是原root用戶登錄還是普通用戶切換到root下都可以,只要有修改權限就行。 -
修改/etc/passwd這個文件中的用戶名部分、用戶組部分和主目錄部分
如我本來的用戶名爲hadoop,現在想修改爲seed,則要修改下面部分:
注意用戶組部分爲1000:1000中的第二個1000(組標識號),這裏沒有修改,因爲不需要新增加組而只是把原來的組名改掉即可(組標識號不變),見3。
-
修改/etc/group這個文件中的組名部分(組標識號不變),同時也將/etc/gshadow改寫一下
etc/group文件修改
/etc/gshadow文件修改
-
修改/etc/shadow文件中的用戶名部分,這個不改將無法登錄系統,這步非常重要。
-
修改/home/olduser爲/home/newuser,同時注意一定要修改其所屬的用戶和用戶組,這個很關鍵。
注意:這步使用命令
mv hadoop seed
修改後,其下所有的文件所屬用戶和用戶組都自動修改好,不需要自己手動用chown -R
修改。上面這5個步驟缺一不可,操作失誤很可能導致無法登入系統,認真完成上面的5個步驟重啓系統後即可修改成功。
-
修改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用戶名爲例:
-
以root身份登錄
-
usermod -l hadoop seed
該命令相當於做了兩件事:
(1)將/etc/passwd下的用戶名欄從seed修改爲hadoop,其他部分不變(2)將/etc/shadow下的用戶名欄從seed修改爲hadoop,其他部分不變
-
usermod -c hadoop hadoop
相當於將/etc/passwd下的註解欄修改爲hadoop,其他部分不變 -
groupmod -n hadoop seed
將原來的用戶組seed修改爲hadoop,只修改組名,組標識號不變,相當於修改了文件/etc/group和/etc/gshadow -
usermod -md /home/hadoop hadoop
相當於做了兩件事:
(1)將/etc/passwd下的登入目錄欄修改爲/home/hadoop,其他部分不變(2)將原來的用戶目錄/home/seed修改爲新的用戶目錄/home/hadoop
這些步驟可以說與方案一的一一對應,缺一不可。方案二簡單一點,但方案一更能讓我們理解這背後的運作機制。