自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux useradd 命令介紹

系統(tǒng) Linux
任何計(jì)算機(jī)系統(tǒng)中,添加用戶都是最重要的事之一;本文著重介紹如何在 Linux 系統(tǒng)中添加用戶。

[[311991]]

使用 useradd 命令來添加用戶(并且根據(jù)需要修改賬號)。

任何計(jì)算機(jī)系統(tǒng)中,添加用戶都是最重要的事之一;本文著重介紹如何在 Linux 系統(tǒng)中添加用戶。

正式開始之前,我先提三個(gè)概念。首先,跟大多數(shù)操作系統(tǒng)一樣,Linux 用戶也需要一個(gè)賬號才能登錄。本文只介紹本地賬號,不涉及網(wǎng)絡(luò)賬號,如 LDAP。其次,每個(gè)賬號都有一個(gè)名字(username)和一個(gè)對應(yīng)的數(shù)字(用戶 ID)。最后,每個(gè)用戶通常都在一個(gè)組內(nèi),每個(gè)組都有一個(gè)名字和一個(gè)組 ID。

你可能已經(jīng)想到了,Linux 提供了添加用戶的命令行工具,就是 useradd 命令。有些版本也叫 adduser。為了方便使用,很多發(fā)行版上這個(gè)命令是一個(gè)指向 useradd 命令的符號鏈接。

  1. $ file `which adduser`
  2. /usr/sbin/adduser: symbolic link to useradd

來看一下 useradd。

注意:本文描述的默認(rèn)環(huán)境是 Red Hat Enterprise Linux 8.0。你可能會發(fā)現(xiàn)本文描述的這些文件和某些默認(rèn)值與某些 Linux 發(fā)行版或其他 Unix 操作系統(tǒng)(FreeBSD 或 Solaris)偶爾會有差異。

默認(rèn)處理

useradd 的基本用法相當(dāng)簡單:提供一個(gè)用戶名就可以添加一個(gè)用戶。

  1. $ sudo useradd sonny

在本例中,useradd 命令創(chuàng)建了一個(gè)名為 sonny 的賬號。此命令同時(shí)創(chuàng)建了一個(gè)同名的組,sonny 被放進(jìn)了這個(gè)組,這個(gè)組也是 sonny 賬號的主組。命令執(zhí)行時(shí),根據(jù)配置文件 /etc/default/useradd/etc/login.defs 中的不同設(shè)置,也會有其他的參數(shù),如語言和 shell。對于一個(gè)私人系統(tǒng)或微小的單服務(wù)商業(yè)環(huán)境,這些參數(shù)已經(jīng)足夠了。

上面兩個(gè)文件控制 useradd 的處理,用戶的信息保存在 /etc 目錄下的一些其他文件中,關(guān)于這些信息的講解會貫穿全文。

文件 描述 域 (加粗的表示由 useradd 命令設(shè)置)
passwd 存儲用戶賬號信息 用戶名:未使用:UID:GID:備注:家目錄:shell
shadow 存儲用戶賬號的安全信息 用戶名:加密密碼:上次修改時(shí)間:最短使用天數(shù):最長使用天數(shù)間:修改前警示天數(shù):過期后寬限時(shí)間:未使用
group 存儲組信息 組名:未使用:GID:成員列表

自定義處理

當(dāng)管理員需要更好地控制賬號時(shí),可以使用命令行來自定義,如指定一個(gè)用戶的 ID。

用戶和組 ID

默認(rèn)情況下,useradd 試圖使用相同的用戶 ID(UID)和主組 ID(GID),但也不完全是。雖然 UID 與 GID 相同不是必須的,但如果相同,會更方便管理員管理。

下面的場景就是一個(gè) GID 與 UID 不同的例子?,F(xiàn)在我添加另一賬號,名為 Timmy。通過使用 getent 命令來比較 sonnytimmy 兩個(gè)賬號,顯示兩個(gè)用戶和對應(yīng)的主組。

  1. $ getent passwd sonny timmy
  2. sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
  3. timmy:x:1002:1003::/home/timmy:/bin/bash
  4.  
  5. $ getent group sonny timmy
  6. sonny:x:1002:
  7. timmy:x:1003:

不幸的是,兩者的 UID 和 GID 都不相同。因?yàn)槟J(rèn)的處理是,創(chuàng)建用戶時(shí),把下一個(gè)可用的 UID 賦給用戶,然后把同一個(gè)數(shù)字作為主組 ID 賦給它。然而,當(dāng)要使用的組 ID 已經(jīng)被使用時(shí),就再把下一個(gè)可用的 GID 賦給它。為了弄清細(xì)節(jié),我猜想 1001 這個(gè) GID 已經(jīng)被使用了,用一個(gè)命令確認(rèn)了一下。

  1. $ getent group 1001
  2. book:x:1001:alan

book 的 ID 是 1001,因此新創(chuàng)建的用戶的 GID 都有偏移量 1。這就是為什么系統(tǒng)管理員在用戶創(chuàng)建過程中需要多設(shè)置一些值的一個(gè)實(shí)例。為了解決這個(gè)問題,我必須先確定下一個(gè)可用的 UID 和 GID 是否相同。確定下一個(gè)可用值時(shí),可以使用 getent groupgetent passwd 命令,通過 -u 參數(shù)傳遞要確認(rèn)的值。

  1. $ sudo useradd -u 1004 bobby
  2.  
  3. $ getent passwd bobby; getent group bobby
  4. bobby:x:1004:1004::/home/bobby:/bin/bash
  5. bobby:x:1004:

另一個(gè)需要指定 ID 的場景是,通過 NFS 訪問遠(yuǎn)程系統(tǒng)上的文件時(shí)。對于一個(gè)給定的用戶,當(dāng) NFS 所有客戶端和服務(wù)系統(tǒng)的 ID 都一樣時(shí),管理員更容易控制。在我的文章 使用 autofs 掛載 NFS 中有詳細(xì)介紹。

更多自定義

一些其他的指定用戶信息的參數(shù)也用得比較頻繁。這里是一些你會經(jīng)常用到的參數(shù)的概括例子。

注釋

注釋選項(xiàng)是通過 -c 參數(shù)指定的一個(gè)解釋文本字段,可以提供一段簡短的描述或其他信息。

  1. $ sudo useradd -c "Bailey is cool" bailey
  2. $ getent passwd bailey
  3. bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash

一個(gè)用戶可以被指定一個(gè)主組和多個(gè)次組。-g 參數(shù)指定主組名稱或 GID。如果不指定,useradd 會以用戶名創(chuàng)建一個(gè)主組(前面演示過)。-G(大寫)參數(shù)用一個(gè)逗號分隔的組列表來指定此用戶所屬的組,這些組就是次組。

  1. $ sudo useradd -G tgroup,fgroup,libvirt milly
  2. $ id milly
  3. uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)

家目錄

useradd 的默認(rèn)處理是,在 /home 目錄下創(chuàng)建用戶的家目錄。然而,下面的參數(shù)可以改寫家目錄的基礎(chǔ)目錄。-b 設(shè)置另一個(gè)可以創(chuàng)建家目錄的基礎(chǔ)目錄。例如指定 /home2 而不是 /home。

  1. $ sudo useradd -b /home2 vicky
  2. $ getent passwd vicky
  3. vicky:x:1013:1013::/home2/vicky:/bin/bash

-d 參數(shù)可以指定一個(gè)與用戶名不同的家目錄。

  1. $ sudo useradd -d /home/ben jerry
  2. $ getent passwd jerry
  3. jerry:x:1014:1014::/home/ben:/bin/bash

目錄模板

指定 -k 參數(shù)會在創(chuàng)建新用戶時(shí),復(fù)制 /etc/skel 目錄下的所有文件到用戶的家目錄中。這些文件通常是 shell 配置文件,當(dāng)然也可以是系統(tǒng)管理員想在新建用戶時(shí)使用的任何文件。

Shell

-s 參數(shù)可以指定 shell。如果不指定,則使用默認(rèn)的 shell。例如,下面的例子中 ,配置文件中定義的 shell 是 bash,但 wally 這個(gè)用戶指定的是 zsh

  1. SHELL=/bin/bash
  2.  
  3. $ sudo useradd -s /usr/bin/zsh wally
  4. $ getent passwd wally
  5. wally:x:1004:1004::/home/wally:/usr/bin/zsh

安全

安全是用戶管理的重中之重,因此 useradd 命令也提供了很多關(guān)于安全的選項(xiàng)。可以使用 -e 參數(shù),以 YYYY-MM-DD 的格式指定一個(gè)用戶的過期時(shí)間。

  1. $ sudo useradd -e 20191231 sammy
  2. $ sudo getent shadow sammy
  3. sammy:!!:18171:0:99999:7::20191231:

當(dāng)密碼過期時(shí),賬號也會自動(dòng)失效。-f 參數(shù)指定密碼過期后經(jīng)過幾天賬號失效。如果設(shè)為 0,則立即失效。

  1. $ sudo useradd -f 30 willy
  2. $ sudo getent shadow willy
  3. willy:!!:18171:0:99999:7:30::

實(shí)例

生產(chǎn)環(huán)境中,創(chuàng)建一個(gè)用戶賬號時(shí)會用到多個(gè)參數(shù)。例如,我要?jiǎng)?chuàng)建一個(gè) Perry 賬號,可能會用下面的命令:

  1. $ sudo useradd -u 1020 -c "Perry Example" \
  2. -G tgroup -b /home2 \
  3. -s /usr/bin/zsh \
  4. -e 20201201 -f 5 perry

查看前面的內(nèi)容來理解每個(gè)選項(xiàng)。用下面的命令確認(rèn)結(jié)果:

  1. $ getent passwd perry; getent group perry; getent shadow perry; id perry
  2. perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
  3. perry:x:1020:
  4. perry:!!:18171:0:99999:7:5:20201201:
  5. uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)

一點(diǎn)小建議

useradd 命令是所有 Unix(不僅僅是 Linux)系統(tǒng)管理員都必知必會的命令。由于用戶創(chuàng)建不能出錯(cuò),需要第一次就正確,所以理解它的每一個(gè)選項(xiàng)很重要。這意味著你需要有一套深思熟慮的命名約定,包括為整個(gè)企業(yè)環(huán)境而不僅僅是一個(gè)單系統(tǒng)預(yù)留一個(gè)專用的 UID/GID 范圍,尤其是你為一個(gè)成長中的組織工作時(shí)。 

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2010-03-18 16:57:02

Linux命令

2022-11-03 11:19:22

2019-07-29 10:56:32

Linuxuseradd命令創(chuàng)建用戶賬號

2010-06-22 17:45:34

Linux Autom

2010-06-22 09:28:31

Linux at命令

2010-03-18 16:34:33

Linux命令

2010-06-21 15:44:17

Linux apt命令

2009-12-25 10:59:06

2010-06-21 17:10:02

Linux Arp命令

2012-05-11 10:10:47

Linuxgrep

2010-03-05 16:44:52

Linux終端命令

2010-06-23 17:16:33

Linux Bash

2010-06-24 16:04:44

2010-03-09 09:55:14

Linux mount

2010-03-10 18:29:41

2010-03-05 16:19:47

2010-06-23 16:31:10

Linux Bash

2016-12-08 22:26:28

2009-08-11 10:30:00

linux中du命令參linux命令行參數(shù)linux命令行

2010-06-11 16:57:37

Linux 查看進(jìn)程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號