Linux 系统中通常都是 root 用户具有超级权限, 超级用户 root 一般是不需要创建的, 然而很多时候 root 用户不是任何人都可以使用的, 毕竟最高权限的用户, 任意使用的话, 会对系统造成很多不必要的破坏. 那么就需要创建给不同人创建用户进行 Linux 系统的访问, 或者针对不同的应用程序使用不同的用户. 这时候有人会说, 创建用户很简单啦, 不就直接使用 useradd 或者 adduser 就完事啦, 确实是这样的, 但是就这么简单的一个命令, 却有不同的使用方式或者有不同的方法来创建用户. 下面通过 15 个案例来看一这个 useradd 或者 adduser 的不同使用方式.
由于 Linux 系统的版本以及操作系统类型不大一样, 不同版本的以及不同类型的操作系统的命令具体还要参照对应的文档, 这里只是简单的使用 CentOS 来进行举例.
在 Linux 系统中执行'useradd'命令, 主要就是完成以下三个过程:
为新创建的用户帐户编辑 / etc/passwd,/etc/shadow,/etc/group 和 / etc/gshadow 文件.
为新用户创建用户主目录(home 目录).
设置用户主目录 (home 目录) 的权限和所有权.
创建用户命令的基本语法是:
useradd [options] username
在本文中, 我们将向您展示在 Linux 中最常用的 15 个 useradd 命令及其实际例子. 我们把这一节从基本用法到高级用法分为两部分
第一部分: 主要通过 10 个例子来展示 useradd 的基本用法
第二部分:: 通过 5 个例子来展示 useradd 的高级用户
第一部分: useradd 命令的 10 个基本用法
1, 如何增加一个用户在 Linux 中
在 Linux 系统中新增一个用户, 可以使用 useradd 或者 adduser 命令后面加上一个用户名来进行新增. 这个用户名是用于系统登录的, 因此这个用户名必须是唯一的, 如果系统中已经有用户了, 就不能进行创建了.
例如, 增加一个新的用户 test1, 使用以下命令.
[root@localhost ~]# useradd test1
当我们创建完 test1 用户之后, 这个时候用 test1 用户来进行登录, 登录不了的, 由于该用户我们不知道用户的密码, 登录不了的, 那如何给用户添加密码呢? 通过下面命令进行添加.
[root@localhost ~]# passwd test1
Changing password for user test1.
- New password:
- BAD PASSWORD: The password is shorter than 8 characters
- Retype new password:
passwd: all authentication tokens updated successfully.
用户创建之后默认会把用户自动添加到 / etc/passwd 文件中, 这个文件用来存储用户的信息.
test1:x:1002:1002::/home/test1:/bin/bash
上面的条目包含一组由 7 个冒号分隔的字段, 每个字段都有自己的含义. 让我们看看这些字段是什么:
用户名: 用于登录系统的用户登录名. 长度应该在 1 到 32 字符之间.
密码: 以加密格式存储在 / etc/shadow 文件中的用户密码(或 x 字符).
用户 ID (UID): 每个用户必须有一个用户 ID (UID)用户标识号. 默认情况下, UID 0 保留给根用户, 1-99 之间的 UID 保留给其他预定义帐户. 此外, UID 的范围从 100-999 保留系统帐户和组.
组 ID (GID): 存储在 / etc/group 文件中的主组 ID (GID)组标识号.
用户信息: 该字段是可选的, 允许您定义关于用户的额外信息. 例如, 用户全名. 该字段由'finger'命令填充.
主目录: 用户的主目录的绝对位置.
Shell: 用户 Shell 的绝对位置, 即 / bin/bash.
2, 创建一个具有不同主目录的用户
通常情况下, 在 Linux 操作系统中创建一个用户默认创建用户的目录在 home 目录下, 就比如上面创建的用户主目录就默认就是 / home/test1 目录.
但是可以使用 "-d" 可选参数来改变用户的主目录的位置, 例如创建一个 test2 用户在 / tempfile/user1. 首先这个 / tempfile/user1 必须是已经在系统创建好的目录也可以是其它目录.
[root@localhost /]# useradd -d /tempfile/user1/ test2
这个时候命令执行成功之后, 我们在回去看一下 / etc/passwd 中的目录
- [root@localhost /]# cat /etc/passwd | grep test2
- test2:x:1003:1003::/tempfile/user1/:/bin/bash
3, 创建一个具有不同用户 ID 的用户
在 Linux 中, 每个用户都有自己的 UID(惟一标识号). 默认情况下, 每当我们在 Linux 中创建一个新用户帐户时, 它都会分配用户 500,501,502 等等...
但是, 我们可以创建用户的自定义用户 id 与'-u'选项. 例如, 下面的命令将创建一个用户'test3'与自定义用户 id '996'.
[root@localhost /]# useradd -u 996 test3
接下来让我们来验证一下, 该命令执行成功是否创建了用户 id 为 996 的用户 test3.
- root@localhost /]# cat /etc/passwd |grep test3
- test3:x:996:1005::/home/test3:/bin/bash
注意: 确保用户 ID 的值必须与系统中任何其他已创建的用户唯一.
4, 创建具有特定组 ID 的用户
类似地, 每个用户都有自己的 GID(组标识号). 我们还可以使用 - g 选项创建具有特定组 ID 的用户.
在本例中, 我们将在 "-u" 和 "-g" 选项的帮助下同时添加具有特定 UID(不存在的用户 id)和 GID(必须存在的组)的用户 "test4".
[root@localhost~]# useradd -u 1005 -g 1000 test4
执行完之后, 我们来验证一下, 通过查看 / etc/passwd 文件.
[root@localhost~]# cat /etc/passwd | grep test4
5, 将一个用户添加到多个组
使用 useradd 命令加上 "-G" 选项将用户添加到其他组. 每个组名由逗号分隔, 中间没有空格.
在本例中, 我们将用户 "test5" 添加到多个组中, 如管理员, webadmin 和开发人员.
[root@localhost /]# useradd -G webadmin,devloper,dba test5
接下来, 使用 id 命令验证分配给用户的多个组
[root@localhost /]# id test5
6, 添加一个没有主目录的用户
在某些情况下, 由于一些安全原因, 我们不希望为用户分配主目录. 在这种情况下, 当用户登录到刚刚重新启动的系统时, 其主目录将是根目录. 当该用户使用 su 命令时, 其登录目录将是以前的用户主目录.
若要创建没有主目录的用户目录, 则使用'-M'. 例如, 下面的命令将创建一个没有主目录的用户'test6'.
[root@localhost ~]# useradd -M test6
接下来我们使用 ls 命令来验证一下用户 test6 是否有主目录.
- [root@localhost ~]# ls -l /home/test6
- ls: cannot access /home/test6: No such file or directory
7, 创建一个具有过期时间的用户
默认情况下, 当我们添加用户使用'useradd'命令时, 用户帐户永远不会有过期时间. 它们的有效日期被设定为 0(意思是从未过期).
不过, 我们可以用 "e" 来设置有效期. 选项, 它将日期设置为 yyyy-mm-ddd 格式. 这有助于为特定时间段创建临时帐户.
在这个例子中, 我们创建了一个用户'test7'用户到期日为 2020 年 3 月 21 日, 格式为 yyyy-mm-ddd.
[root@localhost /]# useradd -e 2020-03-21 test7
其次, 在设置帐户到期日期后, 使用 "chage" 命令为用户 "test7" 验证帐户和密码的年龄.
[root@localhost /]# chage -l test7
8, 创建一个具有密码过期时间的用户
useradd 命令的'-f'参数用于定义密码过期后的天数. 当密码过期时, 用户帐户立即停止活动. 默认情况下, 将密码过期值设置为 - 1 意味着永不过期..
在本例中, 我们将为用户设置一个帐户密码到期日期, 即 45 天. 使用'-e'和'-f'选项
[root@localhost /]# useradd -e 2020-03-20 -f 45 test8
9, 创建一个自定义注释的用户
useradd 命令的'-c'选项允许您添加自定义注释, 如用户全名, 电话号码等到 / etc/ passwd;)文件中. 可以将注释添加为不带空格的单行
例如, 下面的命令将添加一个用户 test9'并将该用户的全名 test9 devloper 插入到评论字段中.
[root@localhost~]# useradd -c "test9 devloper" test9
你可以在 / etc/passwd'/etc/passwd'文件在评论部分.
[root@localhost~]# tail -1 /etc/passwd
10, 更改用户登录 Shell
有时, 我们添加与登录 shell 无关的用户, 有时我们需要为用户分配不同的 shell. 我们可以为每个用户分配不同的登录 shell 选项
在本例中, 将添加一个用户没有登录 shell, 即'/sbin/nologin'shell.
[root@localhost ~]# useradd -s /sbin/nologin test10
您可以检查分配给用户的 shell 在'/etc/passwd'文件
[root@localhost ~]# tail -1 /etc/passwd
第二部分: useradd 命令的 5 个高级用法
11, 添加一个具有特定主目录, 默认 Shell 和自定义注释的用户
下面的命令将创建一个用户'test11'与主目录'/tempfile/user11', 默认 shell 为 / bin/bash, 并添加额外的信息用户.
[root@localhost ~]# useradd -m -d /tempfile/user11 -s /bin/bash -c "dba Owner" -U test11
在上面的命令中,'-m -d'选项创建一个具有指定主目录的用户,'-s'选项设置用户的默认 shell, 即 / bin/bash."-c" 选项添加关于用户和 "-U" 参数的额外信息创建 / 添加与用户同名的组.
12, 添加具有主目录, 自定义 Shell, 自定义注释和 UID/GID 的用户
该命令与上面的命令非常相似, 但是这里我们将 shell 定义为'/bin/zsh', 并将自定义 UID 和 GID 定义为用户'test'的用户 id 和用户组 id. 其中 "-u" 定义新用户的 UID(即 1204), 而 "-g" 定义 GID(即 1000).
[root@localhost /]# useradd -m -d /tempfile/user12 -s /bin/zsh -c "devloper owner" -u 1204 -g 1000 test12
13, 添加一个具有主目录, 没有 Shell, 自定义注释和用户 ID 的用户
下面的命令与上面的两个命令非常相似, 唯一的区别是这里, 我们禁用登录 shell 到一个名为'test13'的用户自定义用户 ID(即 1026).
这里'-s'选项添加了默认的 shell /bin/bash, 但在本例中, 我们将 login 设置为'/usr/sbin/nologin'. 这意味着用户'test13'将无法登录到系统.
[root@localhost ~]# useradd -m -d /tempfile/user13 -s /usr/sbin/nologin -c "dba enginer" -u 1026 test13
14, 添加具有主目录, Shell, 自定义 Skell / 注释和用户 ID 的用户
这个命令中唯一的变化是, 我们使用'-k'选项来设置自定义框架目录, 即 / etc/custom.skell, 不是默认的 /etc/skel. 我们还使用了'-s'选项来定义不同的 shell, 即 / bin/tcsh 来定义用户'test14'.
[root@localhost ~]# useradd -m -d /tempfile/user14 -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of test14" -u 1212 test14
15, 添加一个没有主目录, 没有 Shell, 没有组和自定义注释的用户
下面的命令与上面介绍的其他命令非常不同. 这里我们使用'-M'选项来创建没有用户主目录的用户, 并使用'-N'参数来告诉系统只创建用户名(没有组).'-r'参数用于创建系统用户.
[root@localhost ~]# useradd -M -N -r -s /bin/false -c "Disabled test15 Member" test15
来源: https://www.cnblogs.com/Hackerman/p/12535719.html