iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0

前面幾天我們學習了Linux的基本命令,今天我們來看看Linux的使用者管理。

Linux的使用者

Linux系統中,每個使用者都有一個唯一的UID(用戶 ID)和一個或多個GID(群組 ID)來識別他們。這些ID都存儲在/etc/passwd和/etc/group這兩個文件中。

UID(User ID)

用於識別使用者,其中UID >= 1000提供給一般使用者使用,而UID 0 預設給系統使用。至於1~999習慣留給系統作為保留帳號

由於系統上面啟動的網路服務或背景服務希望使用較小的權限去運作,因此不希望使用 root 的身份去執行這些服務, 所以我們就得要提供這些運作中程式的擁有者帳號才行。這些系統帳號通常是不可登入的, 所以才會有我們在第十章提到的 /sbin/nologin 這個特殊的 shell 存在。[name=vbird]

GID(Group ID)

用於識別群組與規範群組名稱與 GID 的對應


順便一提,ls -l中在擁有者與群組的欄位顯示的用戶/群組名稱也是從UID與GID中找到對照的帳號名稱。如果手動更改用戶的UID的話,ls -l在找不到用戶名的情況下會直接顯示原本用戶的UID


新增/刪除使用者

新增使用者

在Linux中要新增帳號主要有三種方式

  • useradd
    useradd是Linux系統中用來新增使用者帳號的命令123。這個命令可以讓系統管理員創建新的使用者帳號,並設定該帳號的各種屬性,如主目錄、登入shell、UID、GID等。
    • 基本語法
      # useradd [options] LOGIN
      注意:建立完使用者帳號需使用# passwd LOGIN來為用戶設定密碼
    • OPTIONS
      • -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)給該用戶如果目錄不存在
  • adduser
    adduser這個指令是一個Perl腳本,它在內部調用了useradd命令來創建新的使用者,可以讓你按照步驟建立使用者。這個指令在大部分Linux Distro都內建

(除了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教學)
  1. 先建立所需要的群組( vi /etc/group )
  2. 建立帳號的各個屬性( vi /etc/passwd )
  3. 將 passwd 與 shadow 同步化 ( pwconv )
  4. 建立該帳號的密碼 ( passwd acount )
  5. 建立使用者家目錄 ( cp -r /etc/skel /home/account )
  6. 更改家目錄屬性 ( 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

上一篇
Day19: 實作篇:使用shell script問chatGPT問題
下一篇
Day21: 使用者群組
系列文
I Use Linux BTW: 談Linux與其指令30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言