Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须前先系统.管理员申请一个账号,然后以这个账号的身份进入系统。
系统管理员可以创建账号,设置账号的密码,并赋予账号不同的权限
1. 添加用户
1.1. 基本语法
添加用户:useradd 用户名
1.2. 应用案例
案例1:添加一个用户milan,默认该用户的家目录在/home/milan
可以看到我们刚开始只有ct
一个用户,但是我们又添加了一个新用户milan
,最后可以看到我们一共有两个用户了(高兴捏)
[root@CtCentos01 ~]# cd /home
[root@CtCentos01 home]# ls
ct
[root@CtCentos01 home]# useradd milan
[root@CtCentos01 home]# ls
ct milan
细节说明:
- 创建用户需要在root权限下进行
- 当创建用户成功后,会自动创建和用户同名的家目录
- 也可以通过
useradd -d 制定目录 新的用户名
,给新创建的用户制定家目录
(这里我们就制定king用户的家目录为test)
2. 制定/修改密码
2.1. 基本语法
设置密码:passwd 用户名
2.2. 应用案例
案例1:给milan制定修改密码
注意:若设置密码少于8位,基于安全策略,Linux会提示你密码无效(非强制),但是如果我们再次输入密码仍然可以设置成功(但是在工作中我建议设置的比较复杂,安全性比较高)。
[root@CtCentos01 home]# ls
ct milan test
[root@CtCentos01 home]# passwd milan
更改用户 milan 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
拓展:pwd
指令(point working directory)可以显示当前用户所在目录,经常用到
3. 删除用户
3.1. 基本语法
删除用户:userdel 用户名
该种删除方式仅仅删除用户,不删除家目录
3.2. 应用案例
案例1:删除用户milan,但要保留家目录
可以看到我们删除了milan之后,他的家目录仍然存在,但是我们切换用milan登录的时候,系统显示milan用户已经不存在啦
[root@CtCentos01 home]# ls
ct milan test tom
[root@CtCentos01 home]# userdel milan
[root@CtCentos01 home]# ls
ct milan test tom
[root@CtCentos01 home]# su - milan
su: user milan does not exist
案例2:删除用户tom及用户主目录
我们使用userdel -r +用户名
来删除用户和用户主目录,可以看到删除后的tom的主目录也没有了,并且tom也不存在了
[root@CtCentos01 home]# userdel -r tom
[root@CtCentos01 home]# ls
ct milan test
[root@CtCentos01 home]# su - tom
su: user tom does not exist
细节说明:
- 删除用户需要root权限,用户无法删除用户
- 同时删除用户和用户主目录的操作需要谨慎使用,因为主目录中可能存在其他有用的资料
- 是否保留家目录的讨论?一般情况下,我们选择仅仅删除用户,除非必要,保留用户主目录相关资料。
4. 查询用户
4.1. 基本语法
查询用户:id 用户名
4.2. 应用实例
案例1:请查询root信息
可以看到对于存在的用户我们可以查到它的用户id、组id和组信息
[root@CtCentos01 ~]# id root
uid=0(root) gid=0(root) 组=0(root)
[root@CtCentos01 ~]# id king
uid=1002(king) gid=1002(king) 组=1002(king)
[root@CtCentos01 ~]# id milan
id: milan: no such user
细节说明:
- 查询用户不需要root权限,可以随意查询
- 当用户不存在时,返回无此用户
5. 切换用户
5.1. 介绍
在操作Linux中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户,比如root
5.2. 基本语法
su - 切换用户名
5.3. 应用实例
创建一个用户jack,,指定密码,然后切换到 jack
可以看到我们新建了用户jack,并为其设置了密码,当我们从高权限的root登录jack的时候,可以直接登录,但是当我们从低权限的jack登录到高权限的root的时候,就需要输入密码了。
[root@CtCentos01 home]# ls
ct milan test
[root@CtCentos01 home]# useradd jack
[root@CtCentos01 home]# ls
ct jack milan test
[root@CtCentos01 home]# passwd jack
更改用户 jack 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@CtCentos01 home]# su - jack
[jack@CtCentos01 ~]$ su - root
密码:
上一次登录:五 3月 29 12:45:36 CST 2024pts/0 上
[root@CtCentos01 ~]#
细节说明
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
- 同级别权限的用户切换,也需要输入密码
- 当需要返回到原来用户时,使用
exit/logout
指令
6. 查看当前用户
6.1. 基本语法
查看当前登录用户:whoami/who an i
可以看到我们第一次登录的用户是ct,然后我们切换到jack用户。通过whoami
查询出来是切换后处于的用户,而通过who am i
查询出来的是第一次登录系统的用户
[ct@CtCentos01 ~]$ su - jack
密码:
上一次登录:五 3月 29 12:48:23 CST 2024pts/0 上
[jack@CtCentos01 ~]$ who am i
ct pts/0 2024-03-29 12:52 (192.168.92.1)
[jack@CtCentos01 ~]$ whoami
jack
细节说明:
whoami
只显示用户名,并且切换用户后将显示切换后的用户名who am i
显示用户名、登陆时间和ip信息,并且切换用户后仍显示首次登录的用户
7. 用户组
7.1. 介绍
类似于角色,系统可以对有共性的多个用户进行统一的管理
7.2. 新增组
指令:groupadd 组名
案例演示:
[root@CtCentos01 ~]# groupadd wudang
7.3. 删除组
指令:groupdel 组名
案例演示:
[root@CtCentos01 ~]# groupdel wudang
7.4. 增加用户时直接加上组
指令:useadd -g 用户组 用户名
案例1:增加一个用户zwj,直接将他指定到wudang
我们先创建一个wudang组,然后直接添加一个新用户zwj到组中,通过id我们可以看到设置正确
[root@CtCentos01 ~]# groupadd wudang
[root@CtCentos01 ~]# useradd -g wudang zwj
[root@CtCentos01 ~]# id zwj
uid=1004(zwj) gid=1004(wudang) 组=1004(wudang)
注意:
- 对于没有分组的用户,我们会默认创建一个和用户名同名的组,并将用户放在里面
拓展:输入clear
可以直接清空当前屏幕
7.5. 修改用户组
指令:usermod -g 用户组 用户名
案例演示:创建一个组mojiao,把zwj放入到mojiao
可以看到刚开始的zwj是wudang组的,但是我们将其改为了mojiao组
[root@CtCentos01 ~]# id zwj
uid=1004(zwj) gid=1004(wudang) 组=1004(wudang)
[root@CtCentos01 ~]# groupadd mojiao
[root@CtCentos01 ~]# usermod -g mojiao zwj
[root@CtCentos01 ~]# id zwj
uid=1004(zwj) gid=1005(mojiao) 组=1005(mojiao)
8. 用户和组相关文件
8.1. /etc/passwd文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
[root@CtCentos01 ~]# vim /etc/passwd
拓展shell:
国内一般使用bash,可在/bin
目录下ls -l *sh
查找到
8.2. /etc/shadow文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
[root@CtCentos01 ~]# vim /etc/shadow
因为zwj和king没有设置密码,所以出现感叹号,而其他有密码的用户都是加密口令
8.3. /etc/group文件
组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
[root@CtCentos01 ~]# vim /etc/group
可以看到对于king我们并没有设置组,但他默认为我们设了一个和king用户同名的组