linux 详解useradd 命令基本用法

时间:2019-03-24
本文章向大家介绍linux 详解useradd 命令基本用法,主要包括linux 详解useradd 命令基本用法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

linux 详解useradd 命令基本用法

概要:

在 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

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

linux 详解useradd 命令基本用法的更多相关文章

  1. linux命令详解-useradd,groupadd

    linux命令详解-useradd,groupadd 我们在linux命令行中输入useradd: Options:  -b, --base-dir BASE_DIR       base direc ...

  2. linux shell 脚本攻略学习14--head命令详解,tail命令详解

    当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十行和后十行),我们也有可能需要打印出来前n行或后n行,也有可能打印除 ...

  3. linux shell 脚本攻略学习 -- head命令详解, tail命令详解

    当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十行和后十行),我们也有可能需要打印出来前n行或后n行,也有可能打印除 ...

  4. Linux指令详解useradd groupadd passwd chpasswd chage 密码修改

    Linux指令详解useradd groupadd passwd chpasswd chage 密码修改 http://speediness.blog.51cto.com/760841/1783661 ...

  5. linux shell 脚本攻略学习13--file命令详解,diff命令详解

    一.file命令详解 find命令可以通过查看文件内容来找出特定类型的文件,在UNIX/ Linux系统中,文件类型并不是由文件扩展名来决定的(windows中却正是这么做的),file命令的目的是从 ...

  6. [转]dd命令、cp命令详解+dd命令、cp命令对比 ---delong

    出处:http://blog.csdn.net/sun_app/article/details/18263299 1.dd命令详解 1)中文man手册dd的解释 NAME       dd - 转换和 ...

  7. zookeeper使用详解(命令、客户端、源码)

    1. zookeeper使用详解(命令.客户端.源码) 1.1. 前言   zookeeper我们常用来做分布式协调中间件,很多时候我们都接触不到它的原理和用法,我对他的了解也仅限于知道它可以做分布式 ...

  8. javascript设计模式详解之命令模式

    每种设计模式的出现都是为了弥补语言在某方面的不足,解决特定环境下的问题.思想是相通的.只不过不同的设计语言有其特定的实现.对javascript这种动态语言来说,弱类型的特性,与生俱来的多态性,导致某 ...

  9. 一起来学习linux创建用户useradd命令

    linux创建用户useradd命令 原文地址:linux创建用户useradd命令 http://www.xfcodes.com/linuxcmd/user/24308.htm 一,adduser与 ...

随机推荐

  1. 茫茫内存,我该如何用 windbg 找到你 ?

    一:背景 1. 讲故事 前天wx上有个朋友丢给我一个dump,让我帮忙鉴定一下某些敏感信息在内存中是否也是加密的,现在数据安全很重要,不仅数据库中的信息要加密,灌到内存后数据同样也需密文存储,随用随解 ...

  2. leetcode 刷题(数组篇)11题 盛最多水的容器(双指针)

    题目描述 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) .找出其 ...

  3. html5 video/audio 标签

    一般来说推荐使用,第三方的媒体播放库[例如 videojs 等],这些库的ui界面,js控制都已写好,功能也扩展的比较丰富 ,直接参考文档使用更加的高效! 这里还是 记录一下 html 原生 vide ...

  4. Mybatis3源码笔记(三)Configuration

    1. XMLConfigBuilder 上一篇大致介绍了SqlSession的生成.在DefaultSqlSessionFactory的构造函数中就提到了Configuration这个对象.现在我们来 ...

  5. SpringBoot自动装配,比较全的吧,来看看吧~

    文章挺长,表达不好,希望能有获~~~~~~~ Spring也提供使用注解来注册bean,为什么要用SpringBoot呢? 使用Spring应用,比如SpringMVC还行需要配置ViewResolv ...

  6. Jmeter(四十三) - 从入门到精通高级篇 - Jmeter之IP伪装和欺骗(详解教程)

    1.简介 我们从小接受的教育就是不要撒谎,要做一个诚实的孩子,但是在现实生活中有时候说一个善意的谎言也不是可以的.这里由于服务器各种安全机制的限制和校验,因此我们不得不欺骗一下服务器,今天宏哥就给大家 ...

  7. grafana接入zabbix数据源

    一.grafana介绍 grafana是开源免费的应用数据可视化仪表盘,由于zabbix本身对监控数据可视化并不侧重,所以大多使用第三方数据可视化工具来做大屏.下面向小伙伴们介绍grafana接入za ...

  8. 案例分析–Note-taking Management Softwares

    项目 内容 这个作业属于那个课程 2021春季学期软件工程(罗杰.任健) 这个作业的要求在哪里 案例分析 我在这个课程的目标是 团队协作,利用软件工程的思维和方法开发出一款具有实用价值的软件 这个作业 ...

  9. UVA10340子序列

    题意:       给你两个串,问你第二个第一个串是否是第一个串删除0个或多个字母得到的? 思路:       直接模拟就行了,在第二个串中去按顺序更新第一个串的下标,好像没说明白啊,不管了,水题,不 ...

  10. 关于YiII框架的扩展memcache中set设置时间就get查询失效的解决方案(版本是1.1.20)

    0x01 前言 在使用Yii框架的扩展memcache缓存的时候,存储数据有一个set方法,来看一下set方法的原型: public boolean set(string $id, mixed $va ...