您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Linux useradd 命令介绍

时间:2020-01-16 09:56:35  来源:  作者:
Linux useradd 命令介绍

 

使用 useradd 命令来添加用户(并且根据需要修改账号)。-- Alan Formy-duval(作者)

 

任何计算机系统中,添加用户都是最重要的事之一;本文着重介绍如何在 linux 系统中添加用户。

正式开始之前,我先提三个概念。首先,跟大多数操作系统一样,Linux 用户也需要一个账号才能登录。本文只介绍本地账号,不涉及网络账号,如 LDAP。其次,每个账号都有一个名字(username)和一个对应的数字(用户 ID)。最后,每个用户通常都在一个组内,每个组都有一个名字和一个组 ID。

你可能已经想到了,Linux 提供了添加用户的命令行工具,就是 useradd 命令。有些版本也叫 adduser。为了方便使用,很多发行版上这个命令是一个指向 useradd 命令的符号链接。

$ file `which adduser`/usr/sbin/adduser: symbolic link to useradd

来看一下 useradd。

注意:本文描述的默认环境是 Red Hat Enterprise Linux 8.0。你可能会发现本文描述的这些文件和某些默认值与某些 Linux 发行版或其他 Unix 操作系统(FreeBSD 或 Solaris)偶尔会有差异。

默认处理

useradd 的基本用法相当简单:提供一个用户名就可以添加一个用户。

$ sudo useradd sonny

在本例中,useradd 命令创建了一个名为 sonny 的账号。此命令同时创建了一个同名的组,sonny 被放进了这个组,这个组也是 sonny 账号的主组。命令执行时,根据配置文件 /etc/default/useradd 和 /etc/login.defs 中的不同设置,也会有其他的参数,如语言和 shell。对于一个私人系统或微小的单服务商业环境,这些参数已经足够了。

上面两个文件控制 useradd 的处理,用户的信息保存在 /etc 目录下的一些其他文件中,关于这些信息的讲解会贯穿全文。

 

Linux useradd 命令介绍

 

 

自定义处理

当管理员需要更好地控制账号时,可以使用命令行来自定义,如指定一个用户的 ID。

用户和组 ID

默认情况下,useradd 试图使用相同的用户 ID(UID)和主组 ID(GID),但也不完全是。虽然 UID 与 GID 相同不是必须的,但如果相同,会更方便管理员管理。

下面的场景就是一个 GID 与 UID 不同的例子。现在我添加另一账号,名为 Timmy。通过使用 getent 命令来比较 sonny 和 timmy 两个账号,显示两个用户和对应的主组。

$ getent passwd sonny timmysonny:x:1001:1002:Sonny:/home/sonny:/bin/bashtimmy:x:1002:1003::/home/timmy:/bin/bash$ getent group sonny timmysonny:x:1002:timmy:x:1003:

不幸的是,两者的 UID 和 GID 都不相同。因为默认的处理是,创建用户时,把下一个可用的 UID 赋给用户,然后把同一个数字作为主组 ID 赋给它。然而,当要使用的组 ID 已经被使用时,就再把下一个可用的 GID 赋给它。为了弄清细节,我猜想 1001 这个 GID 已经被使用了,用一个命令确认了一下。

$ getent group 1001book:x:1001:alan

book 的 ID 是 1001,因此新创建的用户的 GID 都有偏移量 1。这就是为什么系统管理员在用户创建过程中需要多设置一些值的一个实例。为了解决这个问题,我必须先确定下一个可用的 UID 和 GID 是否相同。确定下一个可用值时,可以使用 getent group 和 getent passwd 命令,通过 -u 参数传递要确认的值。

$ sudo useradd -u 1004 bobby$ getent passwd bobby; getent group bobbybobby:x:1004:1004::/home/bobby:/bin/bashbobby:x:1004:

另一个需要指定 ID 的场景是,通过 NFS 访问远程系统上的文件时。对于一个给定的用户,当 NFS 所有客户端和服务系统的 ID 都一样时,管理员更容易控制。在我的文章 使用 autofs 挂载 NFS 中有详细介绍。

更多自定义

一些其他的指定用户信息的参数也用得比较频繁。这里是一些你会经常用到的参数的概括例子。

注释

注释选项是通过 -c 参数指定的一个解释文本字段,可以提供一段简短的描述或其他信息。

$ sudo useradd -c "Bailey is cool" bailey$ getent passwd baileybailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash

一个用户可以被指定一个主组和多个次组。-g 参数指定主组名称或 GID。如果不指定,useradd 会以用户名创建一个主组(前面演示过)。-G(大写)参数用一个逗号分隔的组列表来指定此用户所属的组,这些组就是次组。

$ sudo useradd -G tgroup,fgroup,libvirt milly$ id millyuid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)

家目录

useradd 的默认处理是,在 /home 目录下创建用户的家目录。然而,下面的参数可以改写家目录的基础目录。-b 设置另一个可以创建家目录的基础目录。例如指定 /home2 而不是 /home。

$ sudo useradd -b /home2 vicky$ getent passwd vickyvicky:x:1013:1013::/home2/vicky:/bin/bash

-d 参数可以指定一个与用户名不同的家目录。

$ sudo useradd -d /home/ben jerry$ getent passwd jerryjerry:x:1014:1014::/home/ben:/bin/bash

目录模板

指定 -k 参数会在创建新用户时,复制 /etc/skel 目录下的所有文件到用户的家目录中。这些文件通常是 shell 配置文件,当然也可以是系统管理员想在新建用户时使用的任何文件。

Shell

-s 参数可以指定 shell。如果不指定,则使用默认的 shell。例如,下面的例子中 ,配置文件中定义的 shell 是 bash,但 wally 这个用户指定的是 zsh。

SHELL=/bin/bash$ sudo useradd -s /usr/bin/zsh wally$ getent passwd wallywally:x:1004:1004::/home/wally:/usr/bin/zsh

安全

安全是用户管理的重中之重,因此 useradd 命令也提供了很多关于安全的选项。可以使用 -e 参数,以 YYYY-MM-DD 的格式指定一个用户的过期时间。

$ sudo useradd -e 20191231 sammy$ sudo getent shadow sammysammy:!!:18171:0:99999:7::20191231:

当密码过期时,账号也会自动失效。-f 参数指定密码过期后经过几天账号失效。如果设为 0,则立即失效。

$ sudo useradd -f 30 willy$ sudo getent shadow willywilly:!!:18171:0:99999:7:30::

实例

生产环境中,创建一个用户账号时会用到多个参数。例如,我要创建一个 Perry 账号,可能会用下面的命令:

$ sudo useradd -u 1020 -c "Perry Example" -G tgroup -b /home2 -s /usr/bin/zsh -e 20201201 -f 5 perry

查看前面的内容来理解每个选项。用下面的命令确认结果:

$ getent passwd perry; getent group perry; getent shadow perry; id perryperry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zshperry:x:1020:perry:!!:18171:0:99999:7:5:20201201:uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)

一点小建议

useradd 命令是所有 Unix(不仅仅是 Linux)系统管理员都必知必会的命令。由于用户创建不能出错,需要第一次就正确,所以理解它的每一个选项很重要。这意味着你需要有一套深思熟虑的命名约定,包括为整个企业环境而不仅仅是一个单系统预留一个专用的 UID/GID 范围,尤其是你为一个成长中的组织工作时。
 

via: https://opensource.com/article/19/10/linux-useradd-command

作者: Alan Formy-Duval 选题: lujun9972 译者: lxbwolf 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出



Tags:useradd   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
任何计算机系统中,添加用户都是最重要的事之一;本文着重介绍如何在 Linux 系统中添加用户。...【详细内容】
2020-01-16  Tags: useradd  点击:(99)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(14)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(22)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(25)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(40)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(28)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(19)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(29)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条