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