在安裝系統(tǒng)的時(shí)候润脸,經(jīng)常會(huì)無意識(shí)的隨便起個(gè)用戶名毙驯,后面如果發(fā)現(xiàn)該用戶名不好或因?yàn)榄h(huán)境需要須重起個(gè)用戶名爆价,經(jīng)過查找資料和親自測試發(fā)現(xiàn)有兩種方案可選:手動(dòng)修改和使用usermod等命令自動(dòng)修改铭段。
方案一:手動(dòng)修改各個(gè)關(guān)聯(lián)用戶文件
以root身份登錄
系統(tǒng)文件的修改需要root權(quán)限序愚,這里不管是原root用戶登錄還是普通用戶切換到root下都可以爸吮,只要有修改權(quán)限就行。-
修改/etc/passwd這個(gè)文件中的用戶名部分锰霜、用戶組部分和主目錄部分
如我本來的用戶名為hadoop锈遥,現(xiàn)在想修改為seed所灸,則要修改下面部分:
修改/etc/passwd文件
注意用戶組部分為1000:1000中的第二個(gè)1000(組標(biāo)識(shí)號(hào)),這里沒有修改侠驯,因?yàn)椴恍枰略黾咏M而只是把原來的組名改掉即可(組標(biāo)識(shí)號(hào)不變)吟策,見3檩坚。 -
修改/etc/group這個(gè)文件中的組名部分(組標(biāo)識(shí)號(hào)不變)匾委,同時(shí)也將/etc/gshadow改寫一下
etc/group文件修改
修改/etc/group文件
/etc/gshadow文件修改
修改/etc/gshadow文件 -
修改/etc/shadow文件中的用戶名部分薯鳍,這個(gè)不改將無法登錄系統(tǒng)挖滤,這步非常重要壶辜。
修改/etc/shadow文件 -
修改/home/olduser為/home/newuser,同時(shí)注意一定要修改其所屬的用戶和用戶組奋救,這個(gè)很關(guān)鍵尝艘。
注意:這步使用命令
mv hadoop seed
修改后,其下所有的文件所屬用戶和用戶組都自動(dòng)修改好狡汉,不需要自己手動(dòng)用chown -R
修改盾戴。
上面這5個(gè)步驟缺一不可尖啡,操作失誤很可能導(dǎo)致無法登入系統(tǒng)衅斩,認(rèn)真完成上面的5個(gè)步驟重啟系統(tǒng)后即可修改成功畏梆。
-
修改sudoers文件
經(jīng)過上述步驟后具温,一般人都認(rèn)為大功告成了铣猩,而網(wǎng)上資料也最多只有上面幾個(gè)步驟达皿,其實(shí)還有一點(diǎn)很重要龄寞,以后你在使用sudo時(shí)會(huì)提示"xxx is not in the sudoers file. This incident will be reported.其中xxx是你的用戶名物邑,也就是你的用戶名沒有權(quán)限使用sudo色解,這主要是因?yàn)閟udoers文件里記錄的還是原來的用戶名科阎,需要更新過來锣笨,步驟如下:
(1)進(jìn)入超級(jí)用戶模式错英。也就是輸入"su -"
注意這里有"-" ,這和su是不同的簿煌,在用命令”su”的時(shí)候只是切換到root姨伟,但沒有把root的環(huán)境變量傳過去夺荒,還是當(dāng)前用戶的環(huán)境變量伍玖,用”su -”命令將環(huán)境變量也一起帶過去窍箍,就象和root登錄一樣椰棘。
(2)添加文件的寫權(quán)限。
chmod u+w /etc/sudoers
(3)編輯/etc/sudoers文件帆卓。
vi /etc/sudoers
進(jìn)入編輯模式罪郊,找到這一 行:
root ALL=(ALL) ALL
在它的下面添加:
hadoop ALL=(ALL) ALL
這里的hadoop是你的新用戶名悔橄,然后保存退出挣柬。
(4)撤銷文件的寫權(quán)限邪蛔。
chmod u-w /etc/sudoers
<p>
</p>
方案二:使用命令usermod修改
首先介紹下usermod命令的基本用法:
usermod [-LU][-c <備注>][-d <登入目錄>[-m]][-e <有效期限>]
[-f <緩沖天數(shù)>][-g <群組>][-G <群組>][-l <帳號(hào)名稱>][-s <shell>]
[-u <uid>[-o]] [用戶帳號(hào)]
描述:
usermod命令會(huì)參照你命令列上指定的部分修改系統(tǒng)帳號(hào)檔淤击。下列為usermod可選用的參數(shù)。
-c <備注>
更新/etc/passwd中的注解欄。
-d <登入目錄>
更新使用者新的登入目錄(用戶目錄)矢腻。如果給定-m選項(xiàng)猎唁,使用者舊目錄會(huì)搬到新的目錄去诫隅,如舊目錄不存在則建個(gè)新的。
-e <有效期限>
加上使用者帳號(hào)停止日期豁生。日期格式為MM/DD/YY.
-f <緩沖天數(shù)>
帳號(hào)過期幾日后永久停權(quán)。當(dāng)值為0時(shí)帳號(hào)則立刻被停權(quán)。而當(dāng)值為-1時(shí)則關(guān)閉此功能豌骏。預(yù)設(shè)值為-1。
-g <群組>
更新使用者新的起始登入群組。群組名須已存在洒琢。群組ID必須參照既有的的群組。群組ID預(yù)設(shè)值為1挖帘。
-G <群組>
定義使用者為一堆groups的成員拇舀。群組名同-g選項(xiàng)的限制薄辅。如果使用者現(xiàn)在的群組不再此列脱惰,則將使用者由該群組中移除旧乞。
-l <帳號(hào)名稱>
變更使用者login時(shí)的名稱為login_name尺栖,即修改用戶登錄名货徙。其于不變屡贺。特別是糕再,使用者目錄名應(yīng)該也會(huì)跟著更動(dòng)成新的登入名殴蹄。
-s <shell>
指定新登入shell究抓。如此欄留白,系統(tǒng)將選用系統(tǒng)預(yù)設(shè)shell袭灯。
-u <uid>
使用者ID值刺下。必須為唯一的ID值,除非用-o選項(xiàng)稽荧。數(shù)字不可為負(fù)值橘茉。預(yù)設(shè)為最小不得小于99而逐次增加。0~99傳統(tǒng)上是保留給系統(tǒng)帳號(hào)使用姨丈。使用者目錄樹下所有的檔案目錄其userID會(huì)自動(dòng)改變畅卓。放在使用者目錄外的檔案則要自行手動(dòng)更動(dòng)。
警告
usermod不允許你改變正在線上的使用者帳號(hào)名稱蟋恬。當(dāng)usermod用來改變userID髓介,必須確認(rèn)這名user沒在電腦上執(zhí)行任何程序,否則會(huì)報(bào)“usermod: user xxx is currently logged in”錯(cuò)誤筋现。因此必須root用戶登錄或者其他用戶登錄然后切換到root身份唐础,而不能在當(dāng)前用戶下切換至root進(jìn)行修改。
修改用戶名步驟如下:以原來的用戶名seed修改為hadoop用戶名為例:
以root身份登錄
-
usermod -l hadoop seed
該命令相當(dāng)于做了兩件事:
(1)將/etc/passwd下的用戶名欄從seed修改為hadoop矾飞,其他部分不變
(2)將/etc/shadow下的用戶名欄從seed修改為hadoop一膨,其他部分不變
-
usermod -c hadoop hadoop
相當(dāng)于將/etc/passwd下的注解欄修改為hadoop,其他部分不變
groupmod -n hadoop seed
將原來的用戶組seed修改為hadoop洒沦,只修改組名豹绪,組標(biāo)識(shí)號(hào)不變,相當(dāng)于修改了文件/etc/group和/etc/gshadow-
usermod -md /home/hadoop hadoop
相當(dāng)于做了兩件事:
(1)將/etc/passwd下的登入目錄欄修改為/home/hadoop申眼,其他部分不變
(2)將原來的用戶目錄/home/seed修改為新的用戶目錄/home/hadoop
這些步驟可以說與方案一的一一對(duì)應(yīng)瞒津,缺一不可。方案二簡單一點(diǎn)括尸,但方案一更能讓我們理解這背后的運(yùn)作機(jī)制巷蚪。