linux useradd 命令基本用法

  • 时间:2018-10-04 23:21 作者:cpp软件架构狮 来源:cpp软件架构狮 阅读:78
  • 扫一扫,手机访问
摘要:在 Linux 中 useradd 是个很基本的命令,但是使用起来却很不直观。以至于在 Ubuntu 中居然增加了一个 adduser 命令来简化增加客户的操作。本文主要形容笔者在学习使用 useradd 命令时的少量测试结果。说明:本文中的所有实验都是在 Ubuntu14.04 上完成。功能在Li

在 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

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

作者:sparkdev
出处:http://www.cnblogs.com/sparkdev/
  • 全部评论(0)
最新发布的资讯信息
【系统环境|服务器应用】JavaScript是如何工作的:渲染引擎和优化其性能的技巧(2019-01-14 22:40)
【系统环境|服务器应用】EXCEL | VBA实例操作(2019-01-14 22:40)
【系统环境|服务器应用】PHP 底层的运行机制与原理(2019-01-14 22:40)
【系统环境|服务器应用】MacPro (Retina,13inch,Mid2014)128G换500G三星960 EVO NVMe SSD的经历总结(2019-01-14 22:40)
【系统环境|服务器应用】Redis的OBJECT命令(译文)(2019-01-14 22:39)
【系统环境|服务器应用】mysql 对 Emoji表情支持(2019-01-14 22:39)
【系统环境|服务器应用】两种创立DBConnection1以调用JDBC API的方式(2019-01-14 22:39)
【系统环境|服务器应用】AWT/Swing中的Repaint, paint, update(2019-01-14 22:39)
【系统环境|服务器应用】Keras命名体识别(NER)实战---自然语言解决技术(1)(2019-01-14 22:39)
【系统环境|服务器应用】Android P新添加检测项 应用热修复受重大影响(2019-01-14 22:38)
手机二维码手机访问领取大礼包
返回顶部