在 Linux 中 useradd 是个很基本的命令,但是使用起来却很不直观。以至于在 Ubuntu 中居然添加了一个 adduser 命令来简化添加用户的操作。本文主要描述笔者在学习使用 useradd 命令时的一些测试结果。

说明:本文中的所有试验都是在 Ubuntu14.04 上完成。

功能

在Linux中 useradd 命令用来创建或更新用户信息。

useradd 命令属于比较难用的命令 (low level utility for adding users),所以 Debian 系的发行版中建议管理员使用 adduser 命令。其实 adduser 命令只是一个调用了 useradd 命令的脚本文件。

本文将详细分析群组和家目录相关的选项。并且以实例的方式介绍常用的 useradd 命令写法。

语法和基本选项

注意:本文并不是一个完整的文档,所以仅列出部分常用的选项进行说明。

useradd [option] username
[option]:
-d< 登入目录> 指定用户登入时的目录。
-g< 群组> 初始群组。
-G< 群组> 非初始群组。
-m 自动创建用户的家目录。
-M 不要创建用户的家目录。
-N 不要创建以用户名称为名的群组。
-s 指定用户登入后所使用的shell。

细说用户组

首先我们要搞清楚,什么是初始群组?简单来说在 /etc/passwd 文件中,每行的第四个字段指定的就是用户的初始群组。用户登录后立即就拥有了初始群组中的权限。

下面我们通过不同的命令来查看群组选项的用法:

$ sudo useradd tester1

没有使用任何群组相关的参数,默认在创建用户 tester1 的同时会创建一个同名的群组。用户 tester1 的初始群组就是这个新建的群组。

$ sudo useradd tester2 -N

这次我们使用了 -N 选项,即不要生成与用户同名的群组。查看下 /etc/passwd 文件,发现 tester2 用户的初始群组ID是100。这个100是哪来的?有ID为100的群组吗?其实100作为 -N 的默认值是写在配置文件中的。不管有没有ID为100的群组,都是这个值。当然我们也可以通过修改配置文件来改变这个默认值!

$ sudo useradd tester3 -g sudo

sudo 是一个非常有权势的群组,我决定把 tester3 加入到这个群组。好,现在去查看一下 /etc/passwd 和 /etc/group 文件,看看有没有新的群组被创建? tester3 的初始群组又是谁?这次没有创建与 tester3 同名的群组。用户 tester3 的初始群组变成了 sudo。

$ sudo useradd tester4 -G sudo

和上一条命令相比我们只是把小写的g替换成了大写的G。但结果可相差太多了,请您一定要好好的检查 /etc/passwd 和 /etc/group 文件。因为这次不仅创建了群组 tester4,它还是用户 tester4 的初始群组。和tester1 的唯一不同是 tester4 被加入了 sudo 群组。

在实际的使用中,tester3 和 tester4 的场景都是比较常见的,需要根据实际情况进行区分。

细说家目录

Useradd 命令对用户家目录的处理让人困惑,下面我们将通过实验来了解家目录相关的不同选项的使用方法:

$ sudo useradd tester1

让我们重新看看创建用户 tester1 这条命令。它不会为用户 tester1 创建名为 tester1 的目录作为家目录,但是我们打开 /etc/passwd 文件,发现 tester1 的记录中居然包含了家目录 /home/tester1。
tester1:x:1005:1005::/home/tester1:
这让人不可思议,但这条命令确实是这么实现的。

$ sudo useradd -m tester5

若要在创建用户的同时创建用户的家目录,必须指定 -m 选项。

$ sudo useradd -d /home/abc tester6

我们希望自己指定家目录,此时不生成目录 abc

$ sudo useradd -d /home/abcd -m tester7

此时生成目录 abcd,并且目录下默认存在文件

常见用例

Case 1: 创建一个带有家目录并且可以登录 bash 的用户

$ sudo useradd -m -s /bin/bash tester1

Case 2: 指定创建用户家目录的路径

$ sudo useradd -m -d /home/xxx tester2

/home/xxx目录会被创建。

Case 3: 创建一个没有家目录且不能登录的用户

$ sudo useradd -s /sbin/nologin tester3

Case 4: 创建时把用户加入不同的用户组

$ sudo useradd -m -G xxx,sudo tester4

注意过个组名使用逗号分隔,不能有空格。

useradd 命令的常见用法相关推荐

  1. Perl命令行常见用法及技巧

    Perl命令行常见用法及技巧 作者:懒人运维 来源: 懒人运维   替换 将所有C程序中的foo替换成bar,旧文件备份成.bak perl -p -i.bak -e 's/\bfoo\b/bar/g ...

  2. linux学习笔记:yum命令的常见用法

    要知道,不同的linux系统里软件包的命令可能是不同的. yum命令是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 例如: yum install -y net-too ...

  3. dig命令的常见用法详解

    CATALOG 什么是dig 一个查询的例子 常见用法 什么是dig dig(域信息搜索器)命令是一个用于询问 DNS 域名服务器的灵活的工具.它执行 DNS 搜索,显示从受请求的域名服务器返回的答复 ...

  4. linux中find命令的常见用法

    整理的find命令常见用法,根据文件大小或者修改时间查询指定文件,以便后面查阅. 1.查找指定范围之内被修改或者访问过的文件 find . -type f -mtime -1     #查找系统中1天 ...

  5. nslookup命令的常见用法

    nslookup 主要用来诊断域名系统 (DNS) 基础结构的信息.查询DNS的记录,查询域名解析是否正常,在网络故障时用来诊断网络问题.本文中科三方将简单介绍nslookup的几种常用用法. 一.查 ...

  6. linux中cp命令的常见用法

    本篇博客来讨论linux中cp命令. cp命令用来复制文件或文件夹.它主要有两种形式 # 用法一:复制一个文件 $ cp [option] src-file target-file# 用法二:复制多个 ...

  7. tail命令的常见用法

    tail 是Linux中最常用的一个命令了, 他可以显示一个或者多个文件, 同时可以与管道符结合, tail最常用的是监视和分析日志文件等, 还可以和grep搭配使用 tail命令语法 首先了解一下t ...

  8. linux中find命令列举,Linux find命令常见用法汇总

    Linux系统中查找文件的命令式find,find命令具有强大的功能,能够提供多种查找条件,下面小编就给大家带来Linux中find命令的常见用法汇总,一起来学习下吧. ·find path -opt ...

  9. linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)

    linux useradd(adduser)命令参数及用法详解(linux创建新用户命令) useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号 ...

  10. Linux——find命令常见用法

    转自:http://www.cnblogs.com/wanqieddy/archive/2011/06/09/2076785.html Linux中find常见用法示例 ·find path -opt ...

最新文章

  1. zookeeper快速入门——部署
  2. 轻松入门React和Webpack
  3. qpython3l手机版安装第三方库总是报错_python编码问题在此终结
  4. War of Inazuma (Easy Version) 阅读理解-n维超立方体-二进制-longlong右移32位
  5. win10 解决升级 WordPress 时提示”另一更新正在进行”
  6. 基于java Springboot实现课程评分系统设计和实现
  7. linux 等待进程,Linux 进程等待队列
  8. php中mysqli 处理查询结果集的几个方法
  9. hdu6107 倍增法st表
  10. 【渝粤教育】广东开放大学 java程序设计基础 形成性考核 (39)
  11. java中的创建和调用_如何在Mirth Connect中创建和调用自定义Java代码
  12. linux如何用命令进入u盘,linux 下如何打开u盘
  13. IDEA felix osgi项目搭建(1)
  14. 优秀的人是如何通过互联网赚钱的,4个案例告诉你
  15. 支持持久化的基础设施代码所需的企业模式
  16. 核心期刊《中国老年学杂志》期刊简介及投稿要求
  17. 360权重是什么,360权重怎么查询
  18. 从LVI-SAM来看激光与视觉的紧耦合系统
  19. android开发如何查看源代码文件(android source)
  20. 技术类电子书网站-影印文字版(https://itbook.download/)

热门文章

  1. Robot Framework自动化测试用具 Wait Until Keyword Succeeds关键字使用案例
  2. Android:日志系统
  3. CH6803 导弹防御塔
  4. rhcsa第二天作业9道题
  5. python程序填空快乐的数字_Python习题之快乐的数字
  6. BottledWater-PG安装部署
  7. python股票代码示例_Python应用实例之股市数据分析
  8. 【翻译】ASML Automatic Streaming Machine Learning
  9. 举个栗子~Tableau 技巧(220):使用「集」实现不同分析维度图表的数据联动
  10. vs助手使用期过 编译CEGUI的问题:error C2061: 语法错误: 标识符“__RPC__out_xcount_part” VS2010...