Linux环境下的用户组和用户管理

1. 概述
在Linux环境下,用户组可以让多个用户具有相同的权限,也就是说,一个用户可以属于多个用户组,并同时拥有这些用户组的权限,这就有了主组(也称初始组)和附加组的概念,使用 groups 命令可以查看该用户的用户组。

codedancing@Ubuntu:~$ groups
codedancing adm cdrom sudo dip plugdev lpadmin sambashare docker

/etc/passwd 文件中每个用户信息分为 7 个字段,其中第 4 字段(GID)指的就是每个用户所属的主组,也就是说,当用户一登陆系统,立刻就会拥有这个用户组的相关权限,每个用户的主组只有一个。

# /etc/passwd
codedancing:x:1000:1000:CodeDancing,,,:/home/codedancing:/bin/bash

# /etc/group
codedancing:x:1000:
docker:x:999:codedancing

codedancing 用户组是添加 codedancing 用户时默认创建的用户组,在 root 管理员使用 useradd 命令创建新用户时,若未明确指定该命令所属的主组,useradd 命令会默认创建一个同用户名相同的群组,作为该用户的主组。
codedancing 用户组是 codedancing 用户的主组,不需要在 /etc/group 的第 4 个字段额外标注,docker 用户组是 codedancing 的附加组,所以 docker 用户组的第四个字段会添加 codedancing 这个用户。



2. 用户组管理
1)groupadd
groupadd 用于添加用户组。

格式:
groupadd [-g GID] groupname
-g:用于指定 GID,默认为使用当前最大的 GID 加 1

codedancing@Ubuntu:~$ sudo groupadd group1
codedancing@Ubuntu:~$ grep group1 /etc/group
group1:x:1001:

2)groupmod
groupmod 用于修改系统已存在的用户组。
格式:
groupmod [options] groupname
常用选项:
-g GID:重新指派 GID
-n new_group:更改组名为 new_group

codedancing@Ubuntu:~$ sudo groupmod -n group2 group1
codedancing@Ubuntu:~$ grep group2 /etc/group
group2:x:1001:

3)groupdel
groupdel 用于删除系统已存在的用户组。
格式:
groupdel groupname
注意:在删除用户组之前,按规范需要将该用户组中的用户移除

codedancing@Ubuntu:~$ sudo groupdel group2
codedancing@Ubuntu:~$ grep group2 /etc/group
codedancing@Ubuntu:~$ sudo grep group2 /etc/gshadow

4)gpasswd
gpasswd 用于把指定用户从用户组移除。
格式:
gpasswd -d username groupname

user1@Ubuntu:~$ groups
user1 group1 group2
user1@Ubuntu:~$ grep group /etc/group
group1:x:1002:user1
group2:x:1003:user1

codedancing@Ubuntu:/home$ sudo gpasswd -d user1 group1
Removing user user1 from group group1

user1@Ubuntu:~$ groups
user1 group2


3. 用户管理
1)useradd
useradd 用于添加用户,useradd是一个 linux 命令,但是它提供了很多参数在用户使用的时候根据自己的需要进行设置。
useradd这个命令创建的是普通账号,并不能用来登录系统。
当使用参数"-m"的时候,系统会自动地在/home目录下建立一个与新建用户同名的用户主文件夹;如果不使用"-m"的话,默认不创建主文件夹,即使使用了"-d"这个参数。所以,"-d" 这个参数是跟 “-m” 一起使用的,让用户自己选择主文件夹的路径。

格式:
useradd [options] username
常用选项:
-u: UID 指定新用户的 UID,默认为使用当前最大的 UID 加1
-g: GROUP 指定新用户的主组
-G: GROUP1,GROUP2 … 指定新用户的附加组
-m: 强制建立用户主文件夹,并将/etc/skel/当中的文件复制到用户的根目录下(重要
-d home_dir: 指定新用户的Home目录(重要
-s shell:用户登录所使用的shell (重要,通常设置为 /bin/bash)
-p password:输入该帐号的密码

codedancing@Ubuntu:~$ sudo useradd -m -d /home/user1 -s /bin/bash user1
codedancing@Ubuntu:/home$ sudo passwd user1
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
codedancing@Ubuntu:~$ grep user1 /etc/group
user1:x:1002:

2)adduser
adduser 是一个 perl 脚本,在使用的时候会出现类似人机交互的界面,提供选项让用户填写和选择。
在使用adduser命令的时候,系统会添加这个用户名,并且还会自动地创建与这个用户名名字一样的用户组作为这个用户的主组。此外,还会自动地在/home目录下面创建一个与用户同名的目录,接着执行"cp /etc/skel /home/用户名"的操作,实现新增用户的主目录的初始化。
用adduser这个命令创建的账号是系统账号,可以用来登录到我们的系统。

扫描二维码关注公众号,回复: 8938245 查看本文章
codedancing@Ubuntu:/home$ sudo adduser user3
Adding user `user3' ...
Adding new group `user3' (1004) ...
Adding new user `user3' (1003) with group `user3' ...
Creating home directory `/home/user3' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for user3
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] y
codedancing@Ubuntu:/home$ su - user3
Password: 
user3@Ubuntu:~$ 

3)usermod
usermod 用于修改系统已存在用户。
格式:
usermod [options] username
常用选项:
-a:追加用户组
-L:锁定用户账号
-U:解除用户账号锁定
-l new_username:更改用户名为 new_username
-G groupname:将用户添加到附加组 groupname 中

codedancing@Ubuntu:~$ sudo usermod -l user2 user1
codedancing@Ubuntu:~$ sudo usermod -G group1 user2
codedancing@Ubuntu:~$ grep group1 /etc/group
group1:x:1001:user2

注意:如果只使用 -G 选项,则该用户会从以前的附加组移出,并添加到 -G 指定的附加组,如果需要保留以前的附加组,必须使用 -a 选项。

codedancing@Ubuntu:/home$ sudo usermod -a -G group3 user1

4)userdel
userdel 用于删除系统已存在的用户。
格式:
userdel [-r] username
常用选项:
-r:同时删除用户的自家目录和 mail 的假脱机文件

codedancing@Ubuntu:/home$ sudo userdel -r user1

注意:删除用户时,如果该用户组的主组中没有其他用户,则该主组也会被删除。

5)passwd
passwd 用于修改用户登录密码。
格式:
passwd [username]
常用选项:
-d: --delete,删除用户密码,仅能以root权限操作
-l: --lock,锁住用户无权更改其密码,仅能通过root权限操作

说明:如果没有 username,则修改当前用户的登录密码

发布了21 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/codedancing/article/details/103954652