如何在Linux中創建用戶[15個useradd命令示例]

我們都熟悉在Linux中稱為‘useradd’或‘adduser’的最常用命令。有時候,Linux系統管理員會被要求在Linux上創建具有特定屬性、限制或註釋的用戶帳戶。

Linux中,‘useradd’命令是一個用於在Linux和其他類Unix操作系統中添加或創建用戶帳戶的低級實用工具。‘adduser’命令與‘useradd’命令非常相似,因為它只是指向它的符號鏈接。

某些Linux發行版中,‘useradd’命令可能有一個稍微不同的版本。我建議在使用我們的說明創建新的Linux用戶帳戶之前閱讀您的文檔。

當我們在Linux終端中運行‘useradd’命令時,它會執行以下主要任務:

  • 它編輯/etc/passwd/etc/shadow/etc/group/etc/gshadow文件以創建新的用戶帳戶。
  • 為新用戶創建並填充主目錄。
  • 設置主目錄的權限和所有權。

使用者新增指令語法

useradd」指令的基本語法如下:

useradd [options] username

在本篇文章中,我們將展示在Linux中15個最常用的「useradd」指令,並附上實際範例。

1. 如何在Linux中新增使用者

要新增或建立新使用者,您必須使用「useradd」或「adduser」指令,後面跟著「使用者名稱」。「使用者名稱」是使用者用來登入系統的名稱。

每次只能新增一位使用者,且使用者名稱必須是獨一無二的,不能已經存在於系統中。

例如,要新增一位名為「tecmint」的新使用者,請使用以下指令:

useradd tecmint

當我們在Linux中使用「useradd」指令新增使用者時,該使用者會被建立為鎖定狀態。要解除該使用者帳戶的鎖定,我們需要使用「passwd」指令為該帳戶設定密碼。

passwd tecmint

Changing password for user tecmint.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
Create a User in Linux

一旦建立了新使用者,其資料會自動新增到「/etc/passwd」檔案中。這個檔案用來儲存使用者的資訊,而該條目應該是。

tecmint:x:1000:1000:tecmint:/home/tecmint:/bin/bash
View User Info in Linux

上述條目包含一組七個冒號分隔的欄位,每個欄位都有其獨特的意義。

讓我們來看看這些欄位是什麼:

  • 使用者名稱 – 使用者登入名稱用於登入系統。它應該介於1到32個字符之間。
  • 密碼 – 使用者密碼(或 'x' 字元)以加密格式存儲在 ‘/etc/shadow‘ 文件中。
  • 使用者 ID (UID) – 每個使用者都必須有一個使用者 ID (UID),代表 使用者識別號碼。默認情況下,UID 0 保留給 root 用戶,UID 1 到 99 保留給其他預定義帳戶。此外,UID 100 到 999 保留給系統帳戶和組。
  • 組 ID (GID) – 主要組 ID (GID),代表 組識別號碼,存儲在 ‘/etc/group‘ 文件中。
  • 用戶信息 – 此字段是可選的,允許您定義有關用戶的額外信息,例如用戶的全名。可以使用 finger 命令 填寫此信息。
  • 家目錄 – 用戶家目錄的絕對位置。
  • Shell – 用戶 Shell 的絕對位置,例如 /bin/bash

2. 如何創建具有不同家目錄的用戶

默認情況下,’useradd‘ 命令在 ‘ /home‘ 目錄下使用用戶名創建用戶的家目錄。例如,如上所示,用戶 ‘ tecmint‘ 的默認家目錄是 ‘/home/tecmint‘。

然而,這個行為可以通過使用’'-d'‘選項以及新的家目錄位置(例如,’/data/projects‘)來改變。例如,以下命令將創建一個用戶’anusha‘,並將其家目錄設置為’/data/projects‘。

# useradd -d /data/projects anusha
# passwd anusha

您可以使用以下cat命令查看用戶的家目錄和其他用戶相關信息,如用戶ID、組ID、shell和評論。

cat /etc/passwd | grep anusha

anusha:x:1001:1001::/data/projects:/bin/bash
Create a User with a Home Directory in Linux

3. 如何創建具有特定用戶ID的用戶

在Linux中,每個用戶都有自己的UID(唯一識別號)。默認情況下,當我們在Linux中創建一個新的用戶帳戶時,它會分配用戶ID 500501502,等等。

但是,我們可以使用’'-u'‘選項創建具有自定義用戶ID的用戶。例如,以下命令將創建一個用戶’navin‘,其自定義用戶ID為’1002‘。

useradd -u 1002 navin

現在,讓我們使用以下命令驗證使用定義的userid(1002)創建的用戶。

cat /etc/passwd | grep navin

navin:x:1002:1002::/home/navin:/bin/bash
Create a User with the User ID in Linux

注意:請確保用戶ID的值必須與系統上已創建的任何其他用戶的值不同。

4. 如何創建具有特定組ID的用戶

GID群組識別碼)類似地,每個使用者都有自己的GID。我們也可以使用'-g'選項來創建具有特定群組ID的使用者。

在這個例子中,我們將使用'-u''-g'選項同時為一個使用者‘tarunika’添加特定的UIDGID

useradd -u 1005 -g tecmint tarunika

現在,檢查‘/etc/passwd’文件中分配的使用者ID和群組ID。

cat /etc/passwd | grep tarunika

tarunika:x:1005:1000::/home/tarunika:/bin/bash

要驗證使用者的GID,使用id命令:

id -gn tarunika
Create a User with Group ID in Linux

5. 如何將使用者添加到多個群組

使用'-G'選項將使用者添加到其他群組。每個群組名稱之間用逗號分隔,中間沒有空格。

在這個例子中,我們將一個使用者‘tecmint’添加到多個群組,例如adminswebadmindevelopers

groupadd admins
groupadd webadmin
groupadd developers
usermod -a -G admins,webadmin,developers tecmint
useradd -G admins,webadmin,developers paddy

接下來,使用id命令驗證多個群組是否分配給該使用者。

id tecmint

uid=1000(tecmint) gid=1000(tecmint)
groups=1000(tecmint),1007(admins),1008(webadmin),1009(developers)
context=root:system_r:unconfined_t:SystemLow-SystemHigh
Add User to Group in Linux

6. 如何添加無家目錄的使用者

在某些情況下,出於安全原因,我們不希望為一個使用者分配家目錄,當這樣的使用者登錄到一個剛重新啟動的系統時,他們的家目錄將為root。當這樣的使用者使用‘su’命令時,他們的登錄目錄將是上一個使用者的家目錄。

使用'-M'選項可以創建不帶家目錄的使用者。例如,以下命令將創建一個不帶家目錄的使用者’shilpi‘。

useradd -M shilpi

現在,讓我們使用ls命令來驗證是否已創建不帶家目錄的使用者。

ls -l /home/shilpi

ls: cannot access /home/shilpi: No such file or directory
Create User Without Home Directory in Linux

7. 如何在Linux中創建帶有到期日期的使用者

默認情況下,當我們使用’useradd‘命令添加使用者時,使用者帳戶永不到期,這意味著他們的到期日期設置為0(表示永不過期)。

但是,我們可以使用'-e'選項來設置到期日期,該日期應該以YYYY-MM-DD格式。這對於為特定時間段創建臨時帳戶很有幫助。

在此示例中,我們創建一個名為’aparna‘的使用者,其帳戶到期日期為2021年8月27日,格式為YYYY-MM-DD

useradd -e 2021-08-27 aparna

接下來,在設置帳戶到期日期後,使用’chage‘命令驗證使用者’aparna‘的帳戶和密碼到期信息。

chage -l aparna

Last password change					: Jun 25, 2021
Password expires					: never
Password inactive					: never
Account expires						: Aug 27, 2021
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7
Create User With Account Expiry Date

8. 如何創建帶有密碼到期日期的使用者

'-f'參數用於定義密碼過期後的天數。值為0將在密碼過期後立即停用用戶帳戶。默認情況下,密碼過期值設置為-1,這意味著密碼永不過期。

在此示例中,我們將使用'-e''-f'選項為用戶’mansi‘設置45天的帳戶密碼過期日期。

useradd -e 2014-04-27 -f 45 mansi
Create User With Password Expiry Date

9. 如何在Linux中添加帶有評論的用戶

'-c'選項允許您添加自定義評論,例如用戶的全名,電話號碼等,到’/etc/passwd‘文件。評論可以作為一行添加,不帶任何空格。

例如,以下命令將添加一個用戶’mansi‘並將該用戶的全名Manis Khurana插入評論字段。

useradd -c "Manis Khurana" mansi

您可以使用tail 命令在’ /etc/passwd‘文件中的評論部分查看插入的評論。

tail -1 /etc/passwd

mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/sh
Create User with Full Name

10. 如何在Linux中創建用戶登錄殼

有時,我們添加與登錄殼無關的用戶,或者有時我們需要為我們的用戶分配不同的殼。我們可以使用’-s‘選項為每個用戶分配不同的登錄殼。

在這個例子中,將添加一個未設置登錄殼的用戶 ‘tecmint‘,即 ‘/sbin/nologin’ 殼。

useradd -s /sbin/nologin tecmint

您可以在 ‘/etc/passwd’ 文件中檢查用戶分配的殼。

tail -1 /etc/passwd

tecmint:x:1011:1014::/home/tecmint:/sbin/nologin
Create a User with a Login Shell

11. 如何創建具有指定主目錄、殼和注釋的用戶

以下命令將創建一個名為 ‘ravi‘ 的用戶,其主目錄為 ‘/var/www/tecmint‘,默認殼為 ‘/bin/bash’,並提供有關該用戶的其他信息。

useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi
Create a User with Home Directory and Login Shell

在上述命令中,選項 ‘'-m'‘ 和 ‘'-d'‘ 創建具有指定主目錄的用戶,而 ‘'-s'‘ 選項將用戶的默認殼設置為 ‘/bin/bash‘。’'-c'‘ 選項添加有關用戶的額外信息,而 ‘'-U'‘ 參數創建/添加與用戶同名的組。

12. 如何創建具有定義的主目錄、殼、注釋、UID/GID的用戶

該命令與上面的命令非常相似,但這裡將殼定義為 ‘/bin/zsh‘,並為用戶 ‘tarunika’ 設置自定義 UIDGID。’'-u'‘ 選項定義新用戶的 UID(即,100),而 ‘'-g'‘ 選項定義 GID(即,1000)。

useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 100 tarunika
Create a User with UID and GID

13. 如何創建具有主目錄、無殼、注釋和 UID 的用戶

下面的命令与上述两个命令非常相似。唯一的区别是,这里我们禁用了名为’avishek‘的用户的登录Shell,并自定义了用户ID(即1019)。

选项’'-s'将默认Shell设置为/bin/bash,但在这种情况下,我们将登录Shell设置为’/usr/sbin/nologin‘。这意味着用户’avishek‘将无法登录系统。

useradd -m -d /var/www/avishek -s /usr/sbin/nologin -c "TecMint Sr. Technical Writer" -u 1019 avishek
Create a User with UID and Nologin

14. 如何创建具有指定主目录、Shell、Skeleton和UID的用户

该命令中唯一的变化是,我们使用了选项’'-k'‘将自定义Skeleton目录设置为/etc/custom.skell,而不是默认目录/etc/skel。我们还使用了选项’'-s'‘为用户’navin‘定义了不同的Shell:/bin/tcsh

useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of TecMint" -u 1027 navin
Create a User with Shell and UID

15. 如何创建没有主目录、Shell或组,并带有注释的用户

以下命令与上述其他命令非常不同。在这里,我们使用了选项’'-M'‘来创建一个没有用户主目录的用户,并使用选项’'-N'‘指示系统仅创建一个用户名(而不包括组)。选项’'-r'‘用于创建系统用户。

useradd -M -N -r -s /bin/false -c "Disabled TecMint Member" clayton
Create a User with NoLogin and Group

有关'<‘diy17>useradd’的更多信息和选项,请在终端中运行'<‘diy18>useradd’命令以查看可用选项

useradd

如果您想修改使用者帳戶屬性,例如修改使用者名稱、使用者ID(UID)、主目錄、shell等,請使用usermod命令

Source:
https://www.tecmint.com/add-users-in-linux/