2007-01-15

新增使用者群組及修改Shell啟動文件

裝置預設只有一組帳號和密碼 (admin),而且是具有管理者權限的,如果今天你只是透過 WL500g 來操作,並不會動到系統,那麼總是用 admin 登入好像不太好。但是很不幸的,Oleg 大大為了系統穩定,他的韌體裡面附的 busybox 並不支援 adduser、addgroup 等帳號群組操作的命令,這些動作只好自己來。不過稍有 Linux 概念的大概都知道,帳號群組主要就是搞 /etc/passwd 和 /etc/group 兩個檔案,我們要做的就是在裡面加記錄、設定使用者密碼,並且更新到 flash 裡面。

首先新增使用者。編輯帳號設定檔 /etc/passwd:

nano /etc/passwd

在最後一行加入新增使用者的紀錄。假設這個使用者叫 user1,使用者 ID 1001,群組 ID 1001,使用者目錄在 /opt/user/user1 下面(內容都可以改),設定的紀錄為:

user1:x:1001:1001:user:/opt/user/user1:/bin/sh

存檔離開後,接者編輯群組設定檔 /etc/group

nano /etc/group

在最後一行加入新增群組的紀錄。上面提到的新群組 ID 為 1001,因此新增的的紀錄為:

user:x:1001:

接下來設定新使用者的密碼:

passwd user1

設定好之後記得處理目錄和權限的問題。以上面的紀錄為例,這個新的使用者 user1 的根目錄是在 /opt/user/user1 下面,假設以後新增的使用者都屬於"user"群組,根目錄都會在 /opt/user 的下面,因此我們需要在 /opt 下面建立一個屬於群組 "user" 的目錄,然後在這個目錄下建立使用者的目錄,並且用 chgrp & chown 來設定目錄與使用者和群組的使用權限:

mkdir /opt/user
mkdir /opt/user/user1
chgrp -R user /opt/user
chown -R user1 /opt/user/user1

對即將登入的新使用者來說,有些系統的登入訊息、PATH 設定和執行檔別名(alias)可以透過統一的 Shell 啟動文件來幫使用者設定預設值,像是大家習慣用的 dir 只有在 dos 環境上有,管理者可以透過啟動文件替使用者預先建立類似 dir = ls 的別名,或放入要給使用者看的訊息,這樣不管你新增幾個使用者在登入時都可以套用同一份設定。預設系統有一份啟動文件,檔案和密碼群組設定檔放在同一個目錄,我們可以先編輯它:

nano /etc/profile

我主要只是更改了 PROMPT 的提示符號,並且增加我自己常用的一些命令的 alias,有興趣可以參考:

export PS1="\u@\h[\w]:"
alias ls="ls --color=auto"
alias cls="clear"
alias dir="ls -al"
alias flush="flashfs save; flashfs commit; flashfs enable"
alias ftp="ncftp"
alias lo="exit"
alias md="mkdir"
alias rd="rmdir"

如果要建立特定使用者用的 alias,可以在使用者目錄下建立一個 .profile,裡面放入該使用者專用的設定。當帳號、群組、目錄和請動文件都設定好了,最後一個步驟就是寫入 flash。由於 /etc/passwd 和 /etc/group 這兩個檔案是很重要的系統檔,在 flush flash 時也希望能一併被備份起來,所以我們要多做一個動作:

echo "/etc/passwd" >>/usr/local/.files
echo "/etc/group" >>/usr/local/.files
echo "/etc/profile" >>/usr/local/.files

產生的 .files 會提醒當在做「設定檔備份」的時候,會一併備份上面幾個檔案,確保使用者資料不會遺失。接下來就要更新 flash 囉(可以注意一下,執行到 flashfs save 命令時會多備份到 /usr/local/.files):

flashfs save
flashfs commit
flashfs enable

(以上的三個命令也可以用我建立的 alias: flush 一併執行~偷懶用..)這時候系統已經生效了,新使用者應該就可以登入囉!不過如果使用者要改密碼,和管理者 admin 要改密碼一樣,一定要更新寫入 flash,這樣你的機器重開後新密碼才會保存下來。

回應: 4

匿名 提到...

hi,
abin,当我按照你的步骤做"新增使用者群组"时,当用到"passwd user1"commander 时出现了ERROR如下
PASSWD:UNKOWN USER USER1
如何解决这个问题,我用的机子是WL500GP,TKS!

Abin 提到...

您確定您的 /etc/passwd 下面已經有 "user1" 這個帳號了嗎?這個錯誤訊息就是找不到帳號,才沒辦法更改密碼。

Unknown 提到...

Hi abin,
我沒辦法更改group and owner,可是user1已經可以登入了...
admin@(none)[/opt]:chgrp -R user /opt/user
chgrp: /opt/user: Operation not permitted
chgrp: /opt/user: Operation not permitted
admin@(none)[/opt]:chown -R user1 /opt/user/user1
chown: /opt/user/user1: Operation not permitted
chown: /opt/user/user1: Operation not permitted

已經reboot過了,password也都更新了,user1 login後也會到/opt/user/user1下,請幫我看看如何解決...謝謝.

Abin 提到...

To hsieh: 看訊息的狀況,看起來是權限不足。請先確定你「的確」是用 admin 帳號登入(看提示符號你好像是 admin 沒錯?!),才能夠做這類 change group 或 change owner 的操作,訊息看起來是你權限不足 (不會是用 user1 login 然後想做這些動作吧,這樣一定不會失敗滴)。
另外,也可以檢查 /etc/passwd 裡 admin 帳號,user id & group id 是不是都是 "0"(不會不小心有改到吧)。
最後,我看到你的提示符號:admin@(none)[/opt]:
看起來你連 hostname 都還沒設定: 「(none)」(不知道有沒關係)。

張貼留言

歡迎留言或發表意見,不過要理性不做人身攻擊。匿名的朋友得到回應的速度會比較慢喔~
發問相關的禮貌和規矩請先參考這篇文章,不當留言、和本文無關的回應可能會被直接刪除無視喔!