前面幾天我們學習了Linux的基本命令,今天我們來看看Linux的使用者管理。
Linux系統中,每個使用者都有一個唯一的UID(用戶 ID)和一個或多個GID(群組 ID)來識別他們。這些ID都存儲在/etc/passwd和/etc/group這兩個文件中。
用於識別使用者,其中UID >= 1000提供給一般使用者使用,而UID 0 預設給系統使用。至於1~999習慣留給系統作為保留帳號
由於系統上面啟動的網路服務或背景服務希望使用較小的權限去運作,因此不希望使用 root 的身份去執行這些服務, 所以我們就得要提供這些運作中程式的擁有者帳號才行。這些系統帳號通常是不可登入的, 所以才會有我們在第十章提到的 /sbin/nologin 這個特殊的 shell 存在。[name=vbird]
用於識別群組與規範群組名稱與 GID 的對應
順便一提,ls -l
中在擁有者與群組的欄位顯示的用戶/群組名稱也是從UID與GID中找到對照的帳號名稱。如果手動更改用戶的UID的話,ls -l
在找不到用戶名的情況下會直接顯示原本用戶的UID
在Linux中要新增帳號主要有三種方式
# useradd [options] LOGIN
# passwd LOGIN
來為用戶設定密碼-s, --shell SHELL
: 指定登入時使用的shell-D [OPTIONS]
: 只有-D時顯示預設設定值,若後面有加其他OPTION則覆蓋預設值。以下是使用-D切換預設shell為bash的範例# useradd -D -s $(which bash)
-g, --gid GROUP
: 指定用戶主要群組,預設為與用戶名相同-G, --groups GROUP1[,GROUP2,...[,GROUPN]]
-m, --create-home
: 建立家目錄(/home/$USER
)給該用戶如果目錄不存在(除了Arch Linux以外,
BTW I Use Arch)
[root@c8763yee c8763yee]# adduser amogus
Login name for new user: amogus
User ID ('UID') [ defaults to next available ]: ^C
[root@c8763yee c8763yee]# adduser
Login name for new user []: amogus
User ID ('UID') [ defaults to next available ]:
egrep: warning: egrep is obsolescent; using grep -E
egrep: warning: egrep is obsolescent; using grep -E
Initial group [ users ]: amogus
- Group 'amogus' does not exist
- Please choose another
Initial group [ users ]:
Additional UNIX groups:
Users can belong to additional UNIX groups on the system.
For local users using graphical desktop login managers such
as XDM/KDM, users may need to be members of additional groups
to access the full functionality of removable media devices.
* Security implications *
Please be aware that by adding users to additional groups may
potentially give access to the removable media of other users.
If you are creating a new user for remote shell access only,
users do not need to belong to any additional groups as standard,
so you may press ENTER at the next prompt.
Press ENTER to continue without adding any additional groups
Or press the UP arrow key to add/select/edit additional groups
: wheel
Home directory [ /home/amogus ]
Shell [ /bin/bash ]
Expiry date (YYYY-MM-DD) []:
New account will be created as follows:
---------------------------------------
Login name.......: amogus
UID..............: [ Next available ]
Initial group....: users
Additional groups: wheel
Home directory...: /home/amogus
Shell............: /bin/bash
Expiry date......: [ Never ]
This is it... if you want to bail out, hit Control-C. Otherwise, press
ENTER to go ahead and make the account.
/etc/passwd/
與/etc/shadow
,步驟如下(來自鳥哥Linux教學)
- 先建立所需要的群組( vi /etc/group )
- 建立帳號的各個屬性( vi /etc/passwd )
- 將 passwd 與 shadow 同步化 ( pwconv )
- 建立該帳號的密碼 ( passwd acount )
- 建立使用者家目錄 ( cp -r /etc/skel /home/account )
- 更改家目錄屬性 ( chown -R account.group /home/account )
[name=vbird]
你可以使用 userdel
指令來刪除指定的使用者及與該使用者相關的檔案。例如,如果你想刪除名為 foo
的使用者,你可以輸入 userdel foo
。
-r
選項。例如,userdel -r foo
。-r
和 -f
選項。例如,userdel -rf foo
。-Z
選項。例如,userdel -Z foo