Ubuntu 系统中的用户与用户组

Linux 是个多用户多任务的分时操作系统,所有想要调用系统资源的用户都必须先向系统管理员申请一个账号,然后通过这个账号进入系统。用户的账号一方面能帮助系统管理员对使用系统的用户进行跟踪,控制他们对系统资源的访问;另一方面也能帮助用户组织文件,为用户提供安全性保护。每个账号都拥有一个唯一的用户名和用户密码。用户在登录时键入正确的用户名和密码后,才能进入系统和自己的主目录。

用户与用户组间的联系:
一对一:一个用户可以存在于一个用户组中,也可以是组中的唯一成员。
一对多:一个用户可以存在于多个用户组中,那么此用户具有多个组的共同权限。
多对一:多个用户可以存在于一个用户组中,这些用户具有和组相同的权限。
多对多:多个用户可以存在于多个用户组中,其实就是上面三个对应关系的扩展。

一、用户管理

1、查看用户信息
mcdx@ubuntu:~$ cat /etc/passwd  # 用户信息在此文件中
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
... ...
mcdx:x:1000:1000:ubuntu,,,:/home/mcdx:/bin/bash
mysql:x:121:129:MySQL Server,,,:/nonexistent:/bin/false
mongodb:x:122:65534::/home/mongodb:/bin/false
redis:x:123:131::/var/lib/redis:/bin/false

文件中每行记录用冒号 : 分隔为 7 个字段,从左到右具体含义是:

用户名:密码占位符(x 表示用户需要密码登录):用户标识号(UID):
组标识号(GID):注释性描述:主目录:登录的 shell

2、查看密码文件,注意密码文件是 shadow 用户文件是 passwd
mcdx@ubuntu:~$ sudo cat /etc/shadow  # 需要加 sudo
root:!:17686:0:99999:7:::
daemon:*:17379:0:99999:7:::
bin:*:17379:0:99999:7:::
... ...

文件中每行记录用冒号 : 分隔为 9 个字段,从左到右具体含义是:

用户名:加密口令:最后一次修改时间:最短有效天数:最长有效天数:
过期前的警告时间:不活动时间:用户失效时间:暂时保留未使用

3、useradd 创建用户

useradd -h 命令可查看帮助信息

选项

说明

-c

指定一段注释性描述

-d

指定用户主目录

-md

如果指定的用户主目录不存在,则用此选项来创建目录并指定为主目录

-g

指定用户所属的主用户组

-G

指定用户所属的附加用户组

-s

指定用户的登录 shell

-u

指定用户的用户号,若有 -o 选项,则可以重复使用其它用户的标识号

mcdx@ubuntu:~$ sudo useradd -md /home/haha -s /bin/bash -G mcdx haha
mcdx@ubuntu:~$ ls /home/  # 查看用户主目录
haha  mcdx
mcdx@ubuntu:~$ tail -3 /etc/passwd  # 查看用户信息
mongodb:x:122:65534::/home/mongodb:/bin/false
redis:x:123:131::/var/lib/redis:/bin/false
haha:x:1001:1001::/home/haha:/bin/bash
mcdx@ubuntu:~$ groups haha  # 查看用户属于哪些组
haha : haha mcdx  # 用户 : 主组 附加组
mcdx@ubuntu:~$ id haha  # 也是查看用户信息
uid=1001(haha) gid=1001(haha) 组=1001(haha),1000(mcdx)
4、usermod 修改用户信息

常用的选项跟 useradd 差不多,参见 usermod -h

5、userdel 删除用户

-r 选项顺便删除主目录

sudo userdel haha

二、管理用户组

1、用户组文件是 /etc/group
mcdx@ubuntu:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,mcdx
... ...

文件中每行记录用冒号 : 分隔为 4 个字段,从左到右具体含义是:

组名 : 口令 : 组标识号(GID):组内用户列表(多用户可用逗号分隔开)

2、groupadd 增加新用户组
mcdx@ubuntu:~$ sudo groupadd -g 1234 haha
mcdx@ubuntu:~$ tail -1 /etc/group
haha:x:1234:
3、groupmod 修改用户组

举个例子,改名:

mcdx@ubuntu:~$ sudo groupmod -n xixi haha
mcdx@ubuntu:~$ tail -1 /etc/group
xixi:x:1234:
4、groupdel 删除用户组
mcdx@ubuntu:~$ sudo groupdel xixi
mcdx@ubuntu:~$ tail /etc/group
colord:x:123:
pulse:x:124:
pulse-access:x:125:
rtkit:x:126:
saned:x:127:
mcdx:x:1000:
sambashare:x:128:mcdx
mysql:x:129:
mongodb:x:130:mongodb
redis:x:131:
5、members 查看用户组内成员
mcdx@ubuntu:~$ members mcdx
mcdx