Contents

在Linux中管理用户和组

1. 概述

在本教程中,我们将学习如何使用终端在 Linux 中创建、修改和删除用户和组。此外,我们还将学习如何将用户添加到组、如何从组中删除用户、如何列出所有用户以及如何获取有关 Linux 机器上现有用户的更多信息。

2.列出所有用户

文件/etc/passwd*包含所有注册用户以及有关他们的信息*:

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
daemon,,,:/var/run/pulse:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
blogdemo:x:1000:1000:,,,:/home/blogdemo:/bin/bash

/etc/passwd以这种格式列出用户:

用户名:x:用户 id:组 id:,,,:/home/用户名:/bin/bash

每个用户都有自己的 UID。0 是。1到999是系统用户,1000以后是本地用户。

3. 查看用户和组 ID

Linux 有一个命令 id ,它可以打印指定用户的用户和组 ID:

$ id blogdemo
uid=1000(blogdemo) gid=1000(blogdemo) groups=1000(blogdemo),27(sudo)

我们可以看到指定用户在哪些组中。

4. 创建新用户

要在 Linux 中创建一个新用户,我们可以使用useradd 命令:

$ sudo useradd --create-home new_user

此外,我们可以添加*–create-home*选项来为新用户创建一个主目录。

5. 添加/更改用户密码

我们可以使用passwd 为用户创建新密码或更改用户密码:

$ sudo passwd new_user
[sudo] password for blogdemo:
New password:
Retype new password:
passwd: password updated successfully

我们创建的新用户没有密码。结果,passwd为它做了一个。

6. 修改用户

usermod 可以修改用户帐户。

6.1. 更改主要组

我们可以添加*-g*选项来更改用户帐户的主要组

$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user)
$ sudo usermod -g blogdemo new_user
$ id new_user
uid=2027(new_user) gid=1000(blogdemo) groups=1000(blogdemo)

新组取代了之前的组。

6.2. 更改 UID

我们可以添加*-u*选项来更改现有用户帐户的用户 ID

$ id new_user
uid=2027(new_user) gid=1000(blogdemo) groups=1000(blogdemo)
$ sudo usermod -u 2030 new_user
$ id new_user
uid=2030(new_user) gid=1000(blogdemo) groups=1000(blogdemo)

该命令已将 UID 从 2027 更改为 2030。

6.3. 更改登录名

** -l选项帮助我们更改现有用户帐户的登录名**:

$ id new_user
uid=2030(new_user) gid=1000(blogdemo) groups=1000(blogdemo)
$ sudo usermod -l new_name new_user
$ id new_name
uid=2030(new_name) gid=1000(blogdemo) groups=1000(blogdemo)

该命令已将登录名从new_user更改为new_name

7. 删除用户

我们可以使用userdel 删除现有用户。添加*-r选项将使userdel*删除用户的主目录及其内容,以及用户的邮件假脱机:

$ sudo userdel -r new_user
[sudo] password for blogdemo:
userdel: new_user mail spool (/var/mail/new_user) not found
userdel: new_user home directory (/home/new_user) not found

该用户没有为其定义邮件假脱机或主目录。所以,-r是不必要的。

8. 将用户添加到组

要将用户添加到组中,我们可以使用 gpasswd -a

$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user)
$ sudo gpasswd -a new_user blogdemo
Adding user new_user to group blogdemo
$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user),1000(blogdemo)

该命令已将指定组附加到new_user的组。

9. 从组中删除用户

我们可以使用gpasswd -d从组中删除用户:

$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user),1000(blogdemo)
$ sudo gpasswd -d new_user blogdemo
Removing user new_user from group blogdemo
$ id new_user
uid=2027(new_user) gid=2027(new_user) groups=2027(new_user)

该命令已从指定组中删除了new_user

10. 创建一个新组

我们可以使用groupadd 创建一个新组:

$ sudo groupadd new_group
$ cat /etc/group | grep new_group
new_group:x:2028:

该命令创建了一个新组,其组 ID 为 2028。

11. 修改组

我们可以使用groupmod 来修改一个组。

11.1. 更改 GID

我们可以添加*-g*选项来更改现有组的组 ID:

$ cat /etc/group | grep new_group
new_group:x:2028:
$ sudo groupmod -g 2040 new_group
$ cat /etc/group | grep new_group
new_group:x:2040:

该命令已将组 ID 从 2028 更改为 2040。

11.2. 更改群组名称

要更改组的名称,我们可以添加*-n*选项:

$ cat /etc/group | grep new_group
new_group:x:2040:
$ sudo groupmod -n new_name new_group
$ cat /etc/group | grep new_name
new_name:x:2040:

该命令已将组名从new_group更改为new_name

12. 删除组

要删除现有组,我们可以使用 groupdel

$ sudo groupdel new_group