如何在Linux中创建用户(useradd命令)

2023-11-03

Linux 是一个多用户系统,这意味着多个人可以同时与同一个系统交互。作为系统管理员,您有责任通过创建和管理系统的用户和组来管理系统的用户和组。删除用户并将它们分配给不同的groups .

在本文中,我们将讨论如何使用创建新用户帐户useradd命令。

useradd命令#

的一般语法为useradd命令如下:

useradd [OPTIONS] USERNAME

仅 root 或具有以下权限的用户sudo权限可以使用useradd命令创建新用户帐户。

当调用时,useradd根据命令行上指定的选项和在命令中设置的默认值创建一个新的用户帐户/etc/default/useradd file.

该文件中定义的变量因发行版而异,这会导致useradd命令在不同的系统上产生不同的结果。

useradd还读取了内容/etc/login.defs文件。此文件包含影子密码套件的配置,例如密码过期策略、创建系统和常规用户时使用的用户 ID 范围等。

如何在 Linux 中创建新用户#

要创建新的用户帐户,请调用useradd命令后跟用户名。

例如创建一个名为username你会运行:

sudo useradd username
当没有任何选项执行时,useradd使用中指定的默认设置创建一个新的用户帐户/etc/default/useradd file.

该命令将一个条目添加到/etc/passwd, /etc/影子, /etc/group and /etc/gshadow files.

为了能够以新创建的用户身份登录,您需要设置用户密码。为此,请运行passwd命令后跟用户名:

sudo passwd username

系统将提示您输入并确认密码。确保您使用强密码。

Changing password for user username.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

如何添加新用户并创建主目录#

在大多数 Linux 发行版上,使用以下命令创建新用户帐户时useradd,未创建用户的主目录。

Use the -m (--create-home) 选项将用户主目录创建为/home/username:

sudo useradd -m username

上面的命令创建新用户的主目录并从中复制文件/etc/skel目录到用户的主目录。如果你列出文件 in the /home/username目录中,您将看到初始化文件:

ls -la /home/username/
drwxr-xr-x 2 username username 4096 Dec 11 11:23 .
drwxr-xr-x 4 root     root     4096 Dec 11 11:23 ..
-rw-r--r-- 1 username username  220 Apr  4  2018 .bash_logout
-rw-r--r-- 1 username username 3771 Apr  4  2018 .bashrc
-rw-r--r-- 1 username username  807 Apr  4  2018 .profile

在主目录中,用户可以写入、编辑和删除文件和目录。

创建具有特定主目录的用户#

默认情况下useradd创建用户的主目录/home。如果您想在其他位置创建用户的主目录,请使用d (--home) 选项。

这是一个示例,显示如何创建名为的新用户username主目录为/opt/username:

sudo useradd -m -d /opt/username username

创建具有特定用户 ID 的用户#

在Linux和类Unix操作系统中,用户通过唯一的UID和用户名来标识。

用户标识符(UID)是Linux系统分配给每个用户的唯一正整数。 UID 和其他访问控制策略用于确定用户可以对系统资源执行的操作类型。

默认情况下,当创建新用户时,系统会从指定的用户 ID 范围内分配下一个可用的 UID。login.defs file.

Invoke useradd-u (--uid) 选项来创建具有特定 UID 的用户。例如创建一个名为usernameUID 为1500你可以输入:

sudo useradd -u 1500 username

您可以使用以下命令验证用户的 UIDid命令:

id -u username
1500

创建具有特定组 ID 的用户#

Linux 组是用于组织和管理 Linux 中的用户帐户的组织单位。组的主要目的是定义一组权限,例如对给定资源的读、写或执行权限,这些权限可以在组内的用户之间共享。

创建新用户时,默认行为useradd命令是创建一个与用户名同名、GID与UID相同的组。

The -g (--gid) 选项允许您创建具有特定初始登录组的用户。您可以指定组名称或 GID 号。组名称或 GID 必须已存在。

以下示例展示了如何创建名为的新用户username并将登录组设置为users type:

sudo useradd -g users username

要验证用户的 GID,请使用id命令:

id -gn username
users

创建用户并分配多个组#

Linux 操作系统中有两种类型的组:主要组和次要(或补充)组。每个用户可以恰好属于一个主要组和零个或多个次要组。

您可以使用以下命令指定用户将成为其成员的补充组的列表-G (--groups) 选项。

以下命令创建一个名为的新用户username与主要组users和次要群体wheel and docker.

sudo useradd -g users -G wheel,developers username

您可以通过键入来检查用户组

id username
uid=1002(username) gid=100(users) groups=100(users),10(wheel),993(docker)

创建具有特定登录 Shell 的用户#

默认情况下,新用户的登录 shell 设置为在/etc/default/useradd文件。在某些发行版中,默认 shell 设置为/bin/sh而在其他情况下它被设置为/bin/bash.

The -s (--shell) 选项允许您指定新用户的登录 shell。

例如,创建一个名为username with /usr/bin/zsh作为登录 shell 类型:

sudo useradd -s /usr/bin/zsh username

检查用户输入的内容/etc/密码文件来验证用户的登录 shell:

grep username /etc/passwd
username:x :1001:1001::/home/username:/usr/bin/zsh

创建具有自定义评论的用户#

The -c (--comment) 选项允许您为新用户添加简短描述。通常,用户的全名或联系信息会作为注释添加。

在以下示例中,我们将创建一个名为的新用户username带有文本字符串Test User Account作为评论:

sudo useradd -c "Test User Account" username

评论保存在/etc/passwd file:

grep username /etc/passwd
username:x :1001:1001:Test User Account:/home/username:/bin/sh

评论字段也称为GECOS.

创建具有到期日期的用户#

要定义新用户帐户的过期时间,请使用-e (--expiredate) 选项。这对于创建临时帐户很有用。

日期必须使用指定YYYY-MM-DD format.

例如创建一个名为的新用户帐户username将到期时间设置为 2019 年 1 月 22 日,您将运行:

sudo useradd -e 2019-01-22 username

Use the chage验证用户帐户到期日期的命令:

sudo chage -l username

输出将如下所示:

Last password change					: Dec 11, 2018
Password expires					: never
Password inactive					: never
Account expires						: Jan 22, 2019
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

创建系统用户#

该系统和普通(普通)用户之间没有真正的技术差异。通常,系统用户是在安装操作系统和新软件包时创建的。

Use the -r (--system) 选项来创建系统用户帐户。例如,创建一个名为的新系统用户username你会运行:

sudo useradd -r username

创建的系统用户没有到期日。它们的 UID 是从指定的系统用户 ID 范围中选择的login.defs文件,这与普通用户使用的范围不同。

更改默认 useradd 值#

可以使用以下命令查看和更改默认的 useradd 选项-D, --defaults选项,或通过手动编辑中的值/etc/default/useradd file.

要查看当前默认选项,请输入:

useradd -D

输出将如下所示:

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

假设您想要更改默认登录 shell/bin/sh to /bin/bash。为此,请指定新 shell,如下所示:

sudo useradd -D -s /bin/bash

您可以通过运行以下命令来验证默认 shell 值是否已更改:

sudo useradd -D | grep -i shell
SHELL=/bin/bash

结论#

我们已经向您展示了如何使用创建新用户帐户useradd命令。相同的说明适用于任何 Linux 发行版,包括 Ubuntu、CentOS、RHEL、Debian、Fedora 和 Arch Linux。

useradd是一个低级实用程序,Debian和Ubuntu用户可以使用更友好的adduser命令代替。

如果您有任何疑问,请随时发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Linux中创建用户(useradd命令) 的相关文章

  • 从 bash 在默认编辑器中打开文件

    如何使用 bash 打开使用默认 GUI 编辑器生成的脚本生成的文件 在 OS X 上有命令open 但据我所知 linux 上不存在 什么是好的跨平台替代方案 执行open somefile ext在 OS X 上 效果与我在 Finde
  • 使用curl上传本地目录中的所有文件

    我想上传一个目录中的所有文件 并且我知道如何使用curl上传一个文件 如下所示 curl T local xxx suffix u xxx psw ftp 192 168 1 158 public demon test xxx suffix
  • C: main 未找到,但它在那里 |编译错误

    当我编译两个 c 文件 如下所示 时 我收到一个非常奇怪的错误 终端编译代码 gcc I o main c matrix c lblas lgfortran Error usr bin ld usr lib debug usr lib i3
  • sudo bang bang 到底是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 sudo bang bang 的目的是什么 sudo 什么时候可能需要使用它 砰砰砰 命令是一个快捷方式重复您在终端中输入的上一个命令 当您忘记需要管
  • OSX - 始终隐藏某些文件

    我知道如何在终端中显示和隐藏隐藏文件 但是有没有办法在显示隐藏文件时隐藏某些文件 例如 DS STORE 可以这么说 使某些文件超级隐藏吗 Use chflags与隐藏选项 ie chflags hidden fileToHide从 Fin
  • 编写脚本以使用预定义密码创建多个用户

    所以我想制作一个从运行的 users txt 创建用户的脚本 useradd m s bin false users in the users txt 并填写passwords txt中的密码两次 以确认密码 这是脚本 bin bash A
  • stripe 登录 zsh:未找到命令:stripe

    我正在跟进条纹文档 https stripe com docs stripe cli install当我去stripe login在步骤 2 中 我收到以下错误 zsh 找不到命令 条带 我已经执行了步骤 1 安装 stripe CLI 为
  • Bower:安装 2 个版本的 jQuery

    我将如何安装 2 个版本的 jQuery使用凉亭 我想要 v2 0 以及 1 9 1 来支持浏览器回退 我遇到的问题是如果你跑bower install jquery 1 9 1 jquery 2 0 0第一个版本被第二个版本覆盖 因为它们
  • Apple 听写 - 在应用程序中使用

    有什么方法可以在本机 Apple 应用程序中利用 Apple 的听写语音转文本功能吗 你的问题有点模糊 最好先知道你尝试使用或做什么 或者你想要实现什么目标 更常见的是关键字识别 API 但可以用于此目的的语音识别 API 是张开耳朵 ht
  • 运行不带“python”关键字的 python 脚本

    如何在 Mac 上的终端中运行 python 脚本而不使用 python 关键字 而无需编辑现有的 python 文件 现在我必须这样做 python script py 我喜欢做的是这样的 script py 添加一个shebang us
  • 如何在 python 中的不同终端窗口中运行函数/线程?

    我有一个这样的程序 from threading import Thread def foo1 arg print foo1 gt gt gt Something input foo1 gt gt gt Enter Something de
  • aria2c - 有什么办法只保留失败下载的列表吗?

    我在用aria2c下载以文本文件形式组织的相当大的 url 列表 6000 基于此gist https gist github com jonbakerfish 0f7877c050b648169e0958ea2e2c6aca 我使用以下脚
  • 如何永久清除 linux/ubuntu 终端或 bash 中的所有历史记录? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 当您在 Linux 终端中使用向上键时 可以再次使用之前的命令 很棒的功能 但是 我开始使用命令中的敏感详细信息将 mysql 记录到 mysql 中
  • 编写代码以:启动 R 会话、运行 R 脚本、终止会话、重复

    我正在寻找一种简单的 设置后就忘记它 的方式 无论是作为终端中的单个参数字符串还是简单的 Java 程序 来自动执行以下操作 1 启动R会话 2 告诉 R 源 R 文件包含冗长的并行模拟代码 3 完成后终止R会话 4 开始一个新的R会话 5
  • Mac 10.8.3 上的 fltk 安装

    我正在挣扎fltk在我的 Mac 上安装 我想在Xcode 4 下载文件并解压缩后 尝试按照说明操作 2 3 Configuring FLTK Stay in your FLTK source code directory Type aut
  • 箭头键变成 Telnet 中的控制字符

    我在 Ubuntu 终端中 并通过 telnet 连接到服务器 现在每当我输入 up 时 它就会变成 A 其他箭头键也变成控制字符 有没有办法可以运行 telnet 以便它理解我的箭头键 这将是一个巨大的帮助 因为我想在我的命令历史记录中向
  • 将终端颜色扩展到行尾

    我有一个生成 motd 的 bash 脚本 问题取决于某些终端设置 我不确定颜色是否会延伸到行尾 其他时候则不然 e g v s IIRC 一个只是普通的 gnome 终端 另一个是我的 tmux 术语 所以我的问题是如何才能将其扩展到 8
  • 从 pod 安装库时出现错误

    我收到未定义的方法squish for
  • 如何在 Mac 上设置默认 shell,例如钓鱼? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不喜欢重新输入fish每次我启动终端时 我想Fish https en wikipedia org wiki Fish Unix she
  • 在谷歌云上训练神经网络时出现“无法获取路径的文件系统”错误

    我正在使用 Google Cloud 在云上训练神经网络 如下例所示 https cloud google com blog big data 2016 12 how to classify images with tensorflow u

随机推荐

  • 如何在 Bash 中创建和使用数组

    Bash 是一种流行的命令行界面 常用于 Linux 和基于 Unix 的系统 Bash 的强大功能之一是能够使用数组 Bash 数组提供了一种在单个变量中存储多个值的方法 从而可以轻松访问和操作这些值 在本教程中 我们将探索如何在 Bas
  • 解决“laravel.log 无法打开”的问题:分步解决方案

    Laravel 是一个富有表现力且优雅的 PHP 框架 由于其语法和强大的功能而被广泛应用于 Web 应用程序开发 然而 与所有技术一样 它也并非没有挑战 许多开发人员遇到的一个常见错误是 laravel log 无法打开 错误 本文提供了
  • 如何在 Ubuntu 22.04 中创建 SFTP 用户(无 Shell 访问)

    SFTP 是一种允许通过网络安全传输文件的协议 它经常被企业和个人用来传输敏感数据 SFTP 与 FTP 类似 但使用不同的协议进行通信 SFTP 比 FTP 更安全 通常与 SSH Secure Shell 结合使用以提供更高级别的安全性
  • 如何在 Debian 8 上安装和配置 Squid Proxy

    Squid 是类 Unix 操作系统上流行的代理服务器 它还用于网页过滤 它广泛用于通过缓存重复数据来提高 Web 服务器速度 本教程帮助您在 Debian 8 Jessie 系统上安装 Squid 代理服务器 还提供代理服务器的基本配置详
  • 从 Linux 文件中删除具有匹配模式的行

    操作文件是掌握 Linux 的基本部分 了解如何删除与特定模式匹配的行尤其有用 这可以使用多种命令行工具来实现 例如 grep sed 和 awk 在本文中 我们将探讨如何使用这些工具从 Linux 文件中查找和删除与特定模式匹配的行 开始
  • ffmpeg:加载共享库时出错:libavdevice.so.55:无法打开共享对象文件:没有这样的文件或目录

    Error 在 CentOS 6 5 服务器上安装 ffmpeg 后 我遇到以下错误 ffmpeg error while loading shared libraries libavdevice so 55 cannot open sha
  • 如何在 Debian 8 上安装 PHP(7.2、7.1 和 5.6)

    PHP 7 2 是可供安装的最新稳定版本 本教程将帮助您在系统上安装多个 PHP 版本 现在按照本教程在 Debian 8 Jessie 上安装 PHP 先决条件 使用 shell 访问登录到您的 Debian 8 系统 对于远程系统 使用
  • 如何在 Windows 批处理脚本中添加睡眠/等待

    您可以使用timeout命令等待命令提示符或批处理脚本指定的时间 时间定义为Seconds 例如等待5秒使用 使用 T选项 c gt timeout T 5 您还可以直接指定秒 例如 c gt timeout 5 上述命令将在按任意键时中断
  • 如何在 CentOS 7 上安装 Apache Maven

    Apache Maven 是一个免费的开源项目管理和理解工具 主要用于 Java 项目 Maven 使用项目对象模型 POM 它本质上是一个 XML 文件 其中包含有关项目 配置详细信息 项目依赖项等的信息 在本教程中 我们将向您展示在 C
  • 如何在 CentOS 8 上安装和配置 ownCloud

    ownCloud是一个用于管理和共享文件的开源 自托管云平台 它可以用作 Dropbox Microsoft OneDrive 和 Google Drive 的替代品 ownCloud 可通过应用程序进行扩展 并拥有适用于所有主要平台的桌面
  • 如何在 Ubuntu 18.04 上安装 VMware Workstation Player

    VMware是一个成熟稳定的虚拟化解决方案 允许您在一台机器上运行多个独立的操作系统 借助 VMware Workstation Player 您可以创建并运行自己的虚拟机 并评估由许多软件供应商提供的作为虚拟设备分发的软件VMware 解
  • 如何在 CentOS 7 上安装 Pip

    Pip 是一个包管理系统 可简化用 Python 编写的软件包 例如 Python 包索引 PyPI 中的软件包 的安装和管理 CentOS 7 上默认不安装 Pip 但安装非常简单 在本教程中 我们将逐步完成安装 Python 所需的步骤
  • 如何设置自动 Odoo 备份

    在本教程中 我们将引导您完成创建 Odoo 数据库的自动每日备份的过程 Odoo 是最流行的开源 ERP 系统 用 Python 编写 并使用 PostgreSQL 作为数据库后端 Odoo 将其数据存储在 PostgreSQL 数据库中
  • 如何在 Ubuntu 18.04 上安装和配置 Nagios

    Nagios 是最流行的开源监控系统之一 Nagios 保留整个 IT 基础设施的清单 并确保您的网络 服务器 应用程序 服务和流程正常运行 如果发生故障或性能不佳 Nagios 将通过各种方法发送通知警报 本教程将指导您完成在 Ubunt
  • 如何在 Debian 9 上设置 OpenVPN 服务器

    无论您是想在连接不可信的公共 Wi Fi 网络时安全可靠地访问互联网 绕过地理限制内容还是允许您的同事在远程工作时安全地连接到您的公司网络 使用 VPN 都是最佳解决方案 VPN 允许您连接到远程 VPN 服务器 使您的连接加密且安全 并通
  • 如何使用 Linux 命令行删除文件和目录

    本教程将向您展示如何使用rm unlink and rmdirLinux 中删除文件和目录的命令 如何删除文件 要从命令行删除 或删除 Linux 中的文件 请使用rm 删除 或unlink命令 The unlink命令允许您仅删除单个文件
  • Linux 中的 id 命令

    id是一个命令行实用程序 可以打印真实有效的用户和组 ID 使用id命令 语法为id命令如下 id OPTIONS USERNAME 如果省略用户名 则id命令显示有关当前登录用户的信息 当没有任何选项调用时 id打印真实用户 ID uid
  • 如何在 Debian 9 上安装 Elasticsearch

    Elasticsearch 是一个开源分布式全文搜索和分析引擎 它支持 RESTful 操作 允许您实时存储 搜索和分析大量数据 Elasticsearch 是最流行的搜索引擎之一 为具有复杂搜索要求的应用程序 例如大型电子商务商店和分析应
  • 如何在 Debian 9 上安装 PostgreSQL

    PostgreSQL 通常简称为 Postgres 是一个开源通用对象关系数据库管理系统 PostgreSQL 拥有许多高级功能 例如在线备份 时间点恢复 嵌套事务 SQL 和 JSON 查询 多版本并发控制 MVCC 异步复制等 在本教程
  • 如何在Linux中创建用户(useradd命令)

    Linux 是一个多用户系统 这意味着多个人可以同时与同一个系统交互 作为系统管理员 您有责任通过创建和管理系统的用户和组来管理系统的用户和组 删除用户并将它们分配给不同的groups 在本文中 我们将讨论如何使用创建新用户帐户userad