linux 詳解useradd 命令基本用法
linux 詳解useradd 命令基本用法
概要:
在 Linux 中 useradd 是個(gè)很基本的命令,但是使用起來(lái)卻很不直觀(guān)。以至于在 Ubuntu 中居然添加了一個(gè) adduser 命令來(lái)簡(jiǎn)化添加用戶(hù)的操作。本文主要描述筆者在學(xué)習(xí)使用 useradd 命令時(shí)的一些測(cè)試結(jié)果。
說(shuō)明:本文中的所有試驗(yàn)都是在 Ubuntu14.04 上完成。
功能
在Linux中 useradd 命令用來(lái)創(chuàng)建或更新用戶(hù)信息。
useradd 命令屬于比較難用的命令 (low level utility for adding users),所以 Debian 系的發(fā)行版中建議管理員使用 adduser 命令。其實(shí) adduser 命令只是一個(gè)調(diào)用了 useradd 命令的腳本文件。
本文將詳細(xì)分析群組和家目錄相關(guān)的選項(xiàng)。并且以實(shí)例的方式介紹常用的 useradd 命令寫(xiě)法。
語(yǔ)法和基本選項(xiàng)
注意:本文并不是一個(gè)完整的文檔,所以?xún)H列出部分常用的選項(xiàng)進(jìn)行說(shuō)明。
useradd [option] username [option]: -d<登入目錄> 指定用戶(hù)登入時(shí)的目錄。 -g<群組> 初始群組。 -G<群組> 非初始群組。 -m 自動(dòng)創(chuàng)建用戶(hù)的家目錄。 -M 不要?jiǎng)?chuàng)建用戶(hù)的家目錄。 -N 不要?jiǎng)?chuàng)建以用戶(hù)名稱(chēng)為名的群組。 -s 指定用戶(hù)登入后所使用的shell。
細(xì)說(shuō)用戶(hù)組
首先我們要搞清楚,什么是初始群組?簡(jiǎn)單來(lái)說(shuō)在 /etc/passwd 文件中,每行的第四個(gè)字段指定的就是用戶(hù)的初始群組。用戶(hù)登錄后立即就擁有了初始群組中的權(quán)限。
下面我們通過(guò)不同的命令來(lái)查看群組選項(xiàng)的用法:
$ sudo useradd tester1
沒(méi)有使用任何群組相關(guān)的參數(shù),默認(rèn)在創(chuàng)建用戶(hù) tester1 的同時(shí)會(huì)創(chuàng)建一個(gè)同名的群組。用戶(hù) tester1 的初始群組就是這個(gè)新建的群組。
$ sudo useradd tester2 -N
這次我們使用了 -N 選項(xiàng),即不要生成與用戶(hù)同名的群組。查看下 /etc/passwd 文件,發(fā)現(xiàn) tester2 用戶(hù)的初始群組ID是100。這個(gè)100是哪來(lái)的?有ID為100的群組嗎?其實(shí)100作為 -N 的默認(rèn)值是寫(xiě)在配置文件中的。不管有沒(méi)有ID為100的群組,都是這個(gè)值。當(dāng)然我們也可以通過(guò)修改配置文件來(lái)改變這個(gè)默認(rèn)值!
$ sudo useradd tester3 -g sudo
sudo 是一個(gè)非常有權(quán)勢(shì)的群組,我決定把 tester3 加入到這個(gè)群組。好,現(xiàn)在去查看一下 /etc/passwd 和 /etc/group 文件,看看有沒(méi)有新的群組被創(chuàng)建? tester3 的初始群組又是誰(shuí)?這次沒(méi)有創(chuàng)建與 tester3 同名的群組。用戶(hù) tester3 的初始群組變成了 sudo。
$ sudo useradd tester4 -G sudo
和上一條命令相比我們只是把小寫(xiě)的g替換成了大寫(xiě)的G。但結(jié)果可相差太多了,請(qǐng)您一定要好好的檢查 /etc/passwd 和 /etc/group 文件。因?yàn)檫@次不僅創(chuàng)建了群組 tester4,它還是用戶(hù) tester4 的初始群組。和tester1 的唯一不同是 tester4 被加入了 sudo 群組。
在實(shí)際的使用中,tester3 和 tester4 的場(chǎng)景都是比較常見(jiàn)的,需要根據(jù)實(shí)際情況進(jìn)行區(qū)分。
細(xì)說(shuō)家目錄
Useradd 命令對(duì)用戶(hù)家目錄的處理讓人困惑,下面我們將通過(guò)實(shí)驗(yàn)來(lái)了解家目錄相關(guān)的不同選項(xiàng)的使用方法:
$ sudo useradd tester1
讓我們重新看看創(chuàng)建用戶(hù) tester1 這條命令。它不會(huì)為用戶(hù) tester1 創(chuàng)建名為 tester1 的目錄作為家目錄,但是我們打開(kāi) /etc/passwd 文件,發(fā)現(xiàn) tester1 的記錄中居然包含了家目錄 /home/tester1。
tester1:x:1005:1005::/home/tester1:
這讓人不可思議,但這條命令確實(shí)是這么實(shí)現(xiàn)的。
$ sudo useradd -m tester5
若要在創(chuàng)建用戶(hù)的同時(shí)創(chuàng)建用戶(hù)的家目錄,必須指定 -m 選項(xiàng)。
$ sudo useradd -d /home/abc tester6
我們希望自己指定家目錄,此時(shí)不生成目錄 abc
$ sudo useradd -d /home/abcd -m tester7
此時(shí)生成目錄 abcd,并且目錄下默認(rèn)存在文件
常見(jiàn)用例
Case 1: 創(chuàng)建一個(gè)帶有家目錄并且可以登錄 bash 的用戶(hù)
$ sudo useradd -m -s /bin/bash tester1
Case 2: 指定創(chuàng)建用戶(hù)家目錄的路徑
$ sudo useradd -m -d /home/xxx tester2
/home/xxx目錄會(huì)被創(chuàng)建。
Case 3: 創(chuàng)建一個(gè)沒(méi)有家目錄且不能登錄的用戶(hù)
$ sudo useradd -s /sbin/nologin tester3
Case 4: 創(chuàng)建時(shí)把用戶(hù)加入不同的用戶(hù)組
$ sudo useradd -m -G xxx,sudo tester4
注意過(guò)個(gè)組名使用逗號(hào)分隔,不能有空格。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Docker容器的調(diào)試技巧之docker logs與docker service logs
這篇文章主要介紹了Docker容器的調(diào)試技巧之docker logs與docker service logs,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Docker搭建Minio容器的流程步驟(完整詳細(xì)版)
Minio 是一個(gè)基于Apache License v2.0開(kāi)源協(xié)議的對(duì)象存儲(chǔ)服務(wù),雖然輕量,卻擁有著不錯(cuò)的性能,它兼容亞馬遜S3云存儲(chǔ)服務(wù)接口,非常適合于存儲(chǔ)大容量非結(jié)構(gòu)化的數(shù)據(jù),本文將給大家介紹Docker搭建Minio容器的流程步驟,需要的朋友可以參考下2024-08-08使用docker部署mysql并開(kāi)啟binlog的方法
本文介紹了如何使用Docker部署MySQL服務(wù)并配置開(kāi)啟binlog,以便通過(guò)Flink CDC Connector實(shí)現(xiàn)對(duì)MySQL數(shù)據(jù)的實(shí)時(shí)同步,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02Docker Alpine鏡像時(shí)區(qū)問(wèn)題完美解決方案
這篇文章主要介紹了Docker Alpine鏡像時(shí)區(qū)問(wèn)題完美解決方案,本文給大家分享兩種解決方案供大家參考,需要的朋友可以參考下2021-04-04