在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