您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Linux中如何使用useradd命令的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
正式開(kāi)始之前,我先提三個(gè)概念。首先,跟大多數(shù)操作系統(tǒng)一樣,Linux 用戶也需要一個(gè)賬號(hào)才能登錄。本文只介紹本地賬號(hào),不涉及網(wǎng)絡(luò)賬號(hào),如 LDAP。其次,每個(gè)賬號(hào)都有一個(gè)名字(username)和一個(gè)對(duì)應(yīng)的數(shù)字(用戶 ID)。最后,每個(gè)用戶通常都在一個(gè)組內(nèi),每個(gè)組都有一個(gè)名字和一個(gè)組 ID。
你可能已經(jīng)想到了,Linux 提供了添加用戶的命令行工具,就是 useradd
命令。有些版本也叫 adduser
。為了方便使用,很多發(fā)行版上這個(gè)命令是一個(gè)指向 useradd
命令的符號(hào)鏈接。
$ file `which adduser`/usr/sbin/adduser: symbolic link to useradd
來(lái)看一下 useradd
。
注意:本文描述的默認(rèn)環(huán)境是 Red Hat Enterprise Linux 8.0。你可能會(huì)發(fā)現(xiàn)本文描述的這些文件和某些默認(rèn)值與某些 Linux 發(fā)行版或其他 Unix 操作系統(tǒng)(FreeBSD 或 Solaris)偶爾會(huì)有差異。
useradd
的基本用法相當(dāng)簡(jiǎn)單:提供一個(gè)用戶名就可以添加一個(gè)用戶。
$ sudo useradd sonny
在本例中,useradd
命令創(chuàng)建了一個(gè)名為 sonny
的賬號(hào)。此命令同時(shí)創(chuàng)建了一個(gè)同名的組,sonny
被放進(jìn)了這個(gè)組,這個(gè)組也是 sonny
賬號(hào)的主組。命令執(zhí)行時(shí),根據(jù)配置文件 /etc/default/useradd
和 /etc/login.defs
中的不同設(shè)置,也會(huì)有其他的參數(shù),如語(yǔ)言和 shell。對(duì)于一個(gè)私人系統(tǒng)或微小的單服務(wù)商業(yè)環(huán)境,這些參數(shù)已經(jīng)足夠了。
上面兩個(gè)文件控制 useradd
的處理,用戶的信息保存在 /etc
目錄下的一些其他文件中,關(guān)于這些信息的講解會(huì)貫穿全文。
文件 | 描述 | 域 (加粗的表示由 useradd 命令設(shè)置) |
---|---|---|
passwd | 存儲(chǔ)用戶賬號(hào)信息 | 用戶名:未使用:UID:GID:備注:家目錄:shell |
shadow | 存儲(chǔ)用戶賬號(hào)的安全信息 | 用戶名:加密密碼:上次修改時(shí)間:最短使用天數(shù):最長(zhǎng)使用天數(shù)間:修改前警示天數(shù):過(guò)期后寬限時(shí)間:未使用 |
group | 存儲(chǔ)組信息 | 組名:未使用:GID:成員列表 |
當(dāng)管理員需要更好地控制賬號(hào)時(shí),可以使用命令行來(lái)自定義,如指定一個(gè)用戶的 ID。
默認(rèn)情況下,useradd
試圖使用相同的用戶 ID(UID)和主組 ID(GID),但也不完全是。雖然 UID 與 GID 相同不是必須的,但如果相同,會(huì)更方便管理員管理。
下面的場(chǎng)景就是一個(gè) GID 與 UID 不同的例子?,F(xiàn)在我添加另一賬號(hào),名為 Timmy。通過(guò)使用 getent
命令來(lái)比較 sonny
和 timmy
兩個(gè)賬號(hào),顯示兩個(gè)用戶和對(duì)應(yīng)的主組。
$ getent passwd sonny timmysonny:x:1001:1002:Sonny:/home/sonny:/bin/bashtimmy:x:1002:1003::/home/timmy:/bin/bash $ getent group sonny timmysonny:x:1002: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)了一下。
$ getent group 1001book:x:1001:alan
book
的 ID 是 1001
,因此新創(chuàng)建的用戶的 GID 都有偏移量 1。這就是為什么系統(tǒng)管理員在用戶創(chuàng)建過(guò)程中需要多設(shè)置一些值的一個(gè)實(shí)例。為了解決這個(gè)問(wèn)題,我必須先確定下一個(gè)可用的 UID 和 GID 是否相同。確定下一個(gè)可用值時(shí),可以使用 getent group
和 getent passwd
命令,通過(guò) -u
參數(shù)傳遞要確認(rèn)的值。
$ sudo useradd -u 1004 bobby $ getent passwd bobby; getent group bobbybobby:x:1004:1004::/home/bobby:/bin/bashbobby:x:1004:
另一個(gè)需要指定 ID 的場(chǎng)景是,通過(guò) NFS 訪問(wèn)遠(yuǎn)程系統(tǒng)上的文件時(shí)。對(duì)于一個(gè)給定的用戶,當(dāng) NFS 所有客戶端和服務(wù)系統(tǒng)的 ID 都一樣時(shí),管理員更容易控制。在我的文章 使用 autofs 掛載 NFS 中有詳細(xì)介紹。
一些其他的指定用戶信息的參數(shù)也用得比較頻繁。這里是一些你會(huì)經(jīng)常用到的參數(shù)的概括例子。
注釋選項(xiàng)是通過(guò) -c
參數(shù)指定的一個(gè)解釋文本字段,可以提供一段簡(jiǎn)短的描述或其他信息。
$ sudo useradd -c "Bailey is cool" bailey$ getent passwd baileybailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash
一個(gè)用戶可以被指定一個(gè)主組和多個(gè)次組。-g
參數(shù)指定主組名稱或 GID。如果不指定,useradd
會(huì)以用戶名創(chuàng)建一個(gè)主組(前面演示過(guò))。-G
(大寫(xiě))參數(shù)用一個(gè)逗號(hào)分隔的組列表來(lái)指定此用戶所屬的組,這些組就是次組。
$ sudo useradd -G tgroup,fgroup,libvirt milly$ id millyuid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)
useradd
的默認(rèn)處理是,在 /home
目錄下創(chuàng)建用戶的家目錄。然而,下面的參數(shù)可以改寫(xiě)家目錄的基礎(chǔ)目錄。-b
設(shè)置另一個(gè)可以創(chuàng)建家目錄的基礎(chǔ)目錄。例如指定 /home2
而不是 /home
。
$ sudo useradd -b /home2 vicky$ getent passwd vickyvicky:x:1013:1013::/home2/vicky:/bin/bash
-d
參數(shù)可以指定一個(gè)與用戶名不同的家目錄。
$ sudo useradd -d /home/ben jerry$ getent passwd jerryjerry:x:1014:1014::/home/ben:/bin/bash
指定 -k
參數(shù)會(huì)在創(chuàng)建新用戶時(shí),復(fù)制 /etc/skel
目錄下的所有文件到用戶的家目錄中。這些文件通常是 shell 配置文件,當(dāng)然也可以是系統(tǒng)管理員想在新建用戶時(shí)使用的任何文件。
-s
參數(shù)可以指定 shell。如果不指定,則使用默認(rèn)的 shell。例如,下面的例子中 ,配置文件中定義的 shell 是 bash
,但 wally
這個(gè)用戶指定的是 zsh
。
SHELL=/bin/bash $ sudo useradd -s /usr/bin/zsh wally$ getent passwd wallywally:x:1004:1004::/home/wally:/usr/bin/zsh
安全是用戶管理的重中之重,因此 useradd
命令也提供了很多關(guān)于安全的選項(xiàng)??梢允褂?-e
參數(shù),以 YYYY-MM-DD 的格式指定一個(gè)用戶的過(guò)期時(shí)間。
$ sudo useradd -e 20191231 sammy$ sudo getent shadow sammysammy:!!:18171:0:99999:7::20191231:
當(dāng)密碼過(guò)期時(shí),賬號(hào)也會(huì)自動(dòng)失效。-f
參數(shù)指定密碼過(guò)期后經(jīng)過(guò)幾天賬號(hào)失效。如果設(shè)為 0,則立即失效。
$ sudo useradd -f 30 willy$ sudo getent shadow willywilly:!!:18171:0:99999:7:30::
生產(chǎn)環(huán)境中,創(chuàng)建一個(gè)用戶賬號(hào)時(shí)會(huì)用到多個(gè)參數(shù)。例如,我要?jiǎng)?chuàng)建一個(gè) Perry 賬號(hào),可能會(huì)用下面的命令:
$ sudo useradd -u 1020 -c "Perry Example" \-G tgroup -b /home2 \-s /usr/bin/zsh \-e 20201201 -f 5 perry
查看前面的內(nèi)容來(lái)理解每個(gè)選項(xiàng)。用下面的命令確認(rèn)結(jié)果:
$ getent passwd perry; getent group perry; getent shadow perry; id perryperry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zshperry:x:1020:perry:!!:18171:0:99999:7:5:20201201:uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)
感謝各位的閱讀!關(guān)于“Linux中如何使用useradd命令”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。