文章目录
Linux - 02
一、Linux 账号管理
1. 概述
-
Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统;
-
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问,另一方面也可以帮助用户组织文件,并为用户提供安全性保护;
-
每个用户账号都拥有一个唯一的用户名和各自的口令(登录密码);
-
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录;
-
实现用户账号的管理,要完成的工作主要有如下几个方面:
-
用户账号的添加、删除与修改;
-
用户口令的管理;
-
用户组的管理。
-
-
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录 Shell 等资源。
2. 指令
指令 | 说明 |
---|---|
useradd -m 用户名 | 添加用户账号,-m 表示:用户目录如果不存在,则自动建立 |
userdel -r 用户名 | 删除用户账号,-r 表示:把用户目录一起删除 |
usermod + 参数 + 要修改的内容 + 用户名 | 修改用户账号,具体使用看下面的说明补充第 4 - 6 点 |
passwd + 用户名 | 在 root 权限下,设置用户密码 |
passwd | 在普通用户权限下,修改用户密码 |
su - 用户名 | 切换用户,具体使用看下面的说明补充第 8 - 9 点 |
passwd -l + 用户名 | 锁定账户,具体使用看下面的说明补充第 10 点 |
passwd -u + 用户名 | 解锁账户,具体使用看下面的说明补充第 11 点 |
id + 用户名 | 显示用户的用户 id(uid)、组 id(gid),所属组(groups) |
指令说明补充:
-
Linux 中一切皆文件,添加用户账号,就是在
/etc/passwd
、/etc/shadow
、/etc/group
等系统文件中写入了用户的信息;- /etc/passwd :保存用户信息;
- /etc/shadow :保存用户密码(加密);
- /etc/group:保存组信息。
-
创建的用户账号的主目录,保存在
/home
目录下; -
删除用户账号同理,即本质是在系统文件中删除用户的记录;
-
修改用户账号
usermod
时,有以下参数可以选择:- l :修改用户名,如:
usermod -l sun7777 sun3285
,可以将旧用户名 sun3285 修改为新用户名 sun7777; - d :修改用户主目录路径,和
m
一起连用,注意:路径必须为绝对路径; - m :将主目录内容移动至新位置,和
d
一起连用,使用方式见第 5 点; - u :修改用户 id(uid),如:
usermod -u 1002 sun3285
,将用户 sun3285 的用户 id 修改为 1002; - g :修改用户初始组(主组),如:
usermod -g group sun3285
,将用户 sun3285 的初始组修改为 group; - G :修改用户附加组,如:
usermod -G group1,group2 sun3285
,将用户 sun3285 加入到 group1 和 group2 中; - L :临时锁定用户,如:
usermod -L sun3285
,将用户 sun3285 临时锁定; - U :解锁用户,如:
usermod -U sun3285
,将用户 sun3285 解锁; - e :修改用户失效日期,如:
usermod -e 2027-01-01 sun3285
,用户 sun3285 将在 2027 年 1 月 1 日失效。
- l :修改用户名,如:
-
修改用户名的最佳实践,假设现将用户 sun3333 的用户名修改为 sun7777:
- 第一步:
usermod -l sun7777 -d /home/sun7777 -m sun3333
,修改用户名、主目录路径以及移动主目录内容;- 注意 1:主目录路径为绝对路径;
- 注意 2:新的主目录 sun7777 应为自动创建,而不应该提前存在,否则执行不成功。
- 第二步:
groupmod -n sun7777 sun3333
,修改组的名字; - 第三步:
id sun7777
,查看用户信息,看是否修改成功。
- 第一步:
-
修改用户账号时,要在 root 权限下,否则,要在指令前加
sudo
用管理员权限运行命令; -
通过 root 用户创建普通用户后,要给普通用户配置密码;
-
关于切换用户的说明:
su
是最简单的用户切换指令,通过该命令可以实现任何身份的切换,包括从普通用户切换为 root 用户、从 root 用户切换为普通用户以及普通用户之间的切换;- 普通用户之间切换以及普通用户切换至 root 用户,都需要知晓对方的密码,只有正确输入密码,才能实现切换。而从 root 用户切换至其他用户,无需知晓对方密码,直接可切换成功;
- 在 Linux 中,输入密码是不会显示的,并且设置密码时,不能太简单;
su
和su -
的区别:- su :只切换用户,环境变量不变;
- su - :表示在切换用户身份的同时,所用的工作环境也切换为此用户的环境(包括 PATH 变量、MAIL 变量等);
- 说明:环境变量是用来定义操作系统环境的,因此,如果系统环境没有随用户身份切换,很多命令无法正确执行。
-
关于切换用户的使用:
$
表示普通用户、#
表示 root 用户;- root 用户切换为普通用户、普通用户之间相互切换:
su - 用户名
; - 普通用户切换为 root 用户:
su -
; - 退回到原来用户,可以在终端输入:
exit
、logout
或快捷方式Ctrl + D
。
-
锁定账户有两种方法,假设要锁定 user01 账户:
- 方法 1:
usermod -L user01
(L 是大写); - 方法 2:
passwd -l user01
(l 是小写)。
- 方法 1:
-
解锁账户有两种方法,假设要解锁 user01 账户:
- 方法 1:
usermod -U user01
(U 是大写); - 方法 2:
passwd -u user01
(u 是大写)。
- 方法 1:
-
只有 root 用户才有权限对账户进行锁定和解锁;
-
在锁定或解锁账户后,可以在
/etc/shadow
文件中检查用户的帐户状态,如果帐户已被锁定,密码前面将添加感叹号。
3. 指令实际操作
操作 1:添加用户账号、修改用户名、删除用户账号
操作 2:分别在 root 权限和普通用户权限下,设置或修改用户密码
操作 3:切换用户
操作 4:锁定和解锁账户
二、Linux 用户组管理
1. 概述
-
Linux 系统可以对一个用户组中的所有用户进行集中管理;
-
用户组的管理主要有用户组的添加、删除和修改,本质上是对
/etc/group
文件的修改; -
在 Linux 系统中,每个用户都有一个初始组(主组)和多个附加组:
- 初始组(主组)是用户创建后默认分配的组,通常情况下,这个组的名称与用户的用户名相同;
- 附加组是一个用户可以属于的额外组,可以根据需要进行添加或删除,一个用户可以同时属于多个附加组。
-
初始组(主组)与附加组之间的区别:
- 初始组(主组)是在创建用户时自动分配的,而附加组则是用户自行添加的;
- 一个用户只能有一个初始组(主组),但可以属于多个附加组。
2. 指令
指令 | 说明 |
---|---|
groupadd + 参数 + 用户组 | 创建用户组,可以不写参数,具体使用看下面的说明补充第 1 点 |
groupdel + 用户组 | 删除用户组 |
groupmod + 参数 + 要修改的内容 + 用户组 | 修改用户组,具体使用看下面的说明补充第 2 点 |
gpasswd + 用户组 | 设置或修改用户组密码 |
newgrp + 要切换的用户组 | 切换用户的用户组,具体使用看下面的说明补充第 5 - 7 点 |
指令说明补充:
- 创建用户组的参数有:
- g :可以在创建用户组时,指定用户组的组标识号 gid,如:
groupadd -g 1002 sun
,创建一个 gid 为 1002 的用户组 sun; - 不加参数:创建的新用户组的 gid 为当前已有的最大 gid + 1,如:
groupadd sun
,创建一个用户组 sun。
- g :可以在创建用户组时,指定用户组的组标识号 gid,如:
- 修改用户组的参数有:
- g :修改用户组的组标识号 gid,如:
groupmod -g 1003 sun
,将用户组 sun 的 gid 修改为 1003; - n :修改用户组的名字,如:
groupmod -n sunshine sun
,将用户组 sun 的名字修改为 sunshine; - 可以结合使用:如同时修改用户组的 gid 和名字:
groupmod -g 1003 -n sunshine sun
。
- g :修改用户组的组标识号 gid,如:
- 创建新的用户组后,可以给用户组配置密码;
- 修改用户的初始组(主组)和附加组使用
usermod
的g
和G
参数,具体方法见上一节 Linux 账号管理的内容; - 如果一个用户同时属于多个组(包括主组和附加组),那么用户可以在这些组之间切换,以便具有其他组的权限;
- 用户切换组的前提条件:
- 在当前用户下执行指令;
- 要切换的组确实是该用户的主组或附加组。
- 用户切换组,就是从用户的附加组中选择一个组,作为用户新的初始组,用户在不同的组中新建文件时,文件会各自属于不同的组;
- 查看某个用户属于哪些组,包括主组和附加组,有以下 2 种方式:
- groups + 用户名;
- id + 用户名。
- 查看某个组中有哪些用户,有以下 2 种方式:
- 在系统文件
/etc/group
中,可以查看到某个组的所有组成员; - getent group + 组名,查找原理还是从
/etc
目录中的数据库文件进行查询,并获取指定组的用户。
- 在系统文件
3. 指令实际操作
操作 1:创建用户组、修改用户组、删除用户组、设置用户组密码
操作 2:修改用户的附加组、查看某个用户属于哪些组
操作 3:查看某个组中有哪些用户
操作 4:用户切换组
三、Linux 磁盘管理
指令 | 说明 |
---|---|
df | 列出文件系统整体的磁盘使用量 |
df -h | 用方便阅读的形式来显示结果 |
du + 目录地址 | 显示指定的目录或文件所占用的磁盘空间 |
du -h + 目录地址 | 用方便阅读的形式来显示结果 |
指令实际操作
四、Linux 进程管理
1. 概述
- Linux 进程是操作系统中运行的程序的实例,每个进程都有自己的内存空间和执行环境,它们彼此隔离,以确保安全性和稳定性;
- 每个进程都有唯一的标识符,即进程号 PID 和相关的资源,例如内存、文件描述符和 CPU 时间;
- 在 Linux 中,进程的创建和管理是由操作系统内核负责的,内核通过调度器决定哪些进程可以运行,并根据优先级和其他策略对其进行调度;
- 在 Linux 中,每一个程序都有自己的一个进程,并且,每一个进程都有一个父进程;
- 进程分为前台进程和后台进程,基本的程序都是前台运行,一般服务都是后台运行的。
2. 指令
指令 | 说明 |
---|---|
ps -aux|grep + 进程名字 | 查看当前系统中正在执行的指定进程的信息,具体使用看下面的说明补充第 1 点 |
ps -ef|grep + 进程名字 | 查看指定进程的父进程的信息 |
kill -9 + PID | 强制结束或杀掉进程号 PID 的进程 |
指令说明补充:
ps
指令用来查看当前系统中正在执行的各种进程的信息,对第一条指令的解释:- a :显示当前的进程;
- u :面向用户的显示格式;
- x :显示后台运行进程的参数;
- | :在 Linux 中叫做管道符,使用管道符可以将两个命令分隔开,左边命令的输出就会作为右边命令的输入;
- grep :查找文件中符合条件的字符串,在这里用来过滤进程信息;
- 一般将以上参数和指令结合使用,如查找 mysql 相关的进程信息:
ps -aux|grep mysql
。
- 查看父进程的信息有两种方法:
- 方法 1:通过
ps -ef
指令; - 方法 2:通过进程树结构来查看,指令为
pstree -pu
; - 这两种方法后面都可以通过管道符,然后利用
grep
指令来查找想要搜索的进程。
- 方法 1:通过
- 强制结束进程中的
-9
参数为固定的。
3. 指令实际操作
操作 1:查看当前系统中正在执行的指定进程的信息
操作 2:查看指定进程的父进程的信息
补充:
- Linux 的帮助指令
指令 | 说明 |
---|---|
man 指令 | 比 help 指令更详细 |
指令 -help | 简要地显示指令以及参数的使用说明 |
- Linux 中的粘贴快捷键:
Shift + Insert
; - 指令
rm -rf
后跟多个文件,可以一起删除多个文件,如:rm -rf sun6666 sun7777
; - 一些其他指令
指令 | 说明 |
---|---|
hostname | 查看主机名 |
hostname + 新的主机名 | 修改主机名,修改完成后,重新连接,就可以显示新的主机名 |
/etc/passwd
文件中保存了用户信息,每一行代表了一个用户