一、组管理和权限管理
(1)Linux组基本介绍
在linux中的每个用户必须属于一个组,不能独立于组外
在linux中每个文件有所有者、所在组、其他组的概念
(2)文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然地成为该文件的所有者
1.2.1查看文件的所有者
- 指令:
ls -ahl
- 说明:
1.2.2修改文件的所有者
- 指令:
chown 用户名 文件名
- 应用案例:将文件apple.txt的所有者修改成tom
chown tom apple.txt
- 注意:使用该命令修改文件所有者时,文件的所在组 默认不会改变
(3)组的创建
1.3.1基本指令
groupadd 组名
1.3.2应用实例
- 创建一个组,monster:
groupadd monster
- 创建一个用户fox,并放入monster组中:
useradd -g monster fox
(4)文件/目录 所在组
当某个用户创建了一个文件后,这个文件的所在组默认就是该用户所在的组
1.4.1查看文件/目录所在组
- 基本指令:
ls -ahl
- 应用实例:使用fox创建一个文件,看看该文件属于哪个组?
1.4.2修改文件/目录所在组
- 基本指令:
chgrp 组名 文件名
- 应用实例:使用root用户创建文件orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到fruit组
(5)其它组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
(6)改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的,用root的管理权限可以改变某个用户所在的组
1.6.1改变用户所在组
usermod -g 新组名 用户名
usermod -d 目录名 用户名 改变该用户登录的初始目录(特别说明:用户需要有进入到新目录的权限)
1.6.2应用实例
- 题目:将zwj这个用户从原来所在组,修改到wudang组
- 指令:
usermod -g wudang zwj
(7)权限的基本介绍
- 第一列一共有10位,分别用0-9表示,下面是0-9位的说明:
- 第0位确定文件类型(d,-,l,c,b)
- 第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限。 —User
- 第 4-6 位确定所在组(同用户组的)拥有该文件的权限。—Group
- 第 7-9 位确定其他用户拥有该文件的权限。—Other
(8)RWX权限详解,难点
1.8.1rwx作用到文件
- [r]代表可读(read):可以读取,查看
- [w]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
- [x]代表可执行(execute):可以被执行
1.8.2rwx作用到目录
- [r]代表可读(read):可以读取,ls查看目录内容
- [w]代表可写(write):可以修改,对目录内创建+删除 或者 重命名目录
- [x]代表可执行(execute):可以进入该目录
(9)文件及目录权限实际案例 
- 10个字符确定不同用户能对文件干什么
- 第一个字符代表文件类型:-代表该文件是普通文件
- 其余字符每3个一组(rwx)
- 第一组rwx:文件拥有者的权限是读、写和执行
- 第二组rw-:所在组的用户的权限是读、写但不能执行
- 第三组r--: 其他组的用户的权限是读不能写和执行
- 可用数字表示:r=4,w=2,x=1,因此rwx=4+2+1=7,数字可以进行组合
(10)修改权限—CHMOD
1.10.1基本说明
通过chmod(change mod)指令,可以修改文件或目录的权限
1.10.2第一种方式:+、-、=变更权限
- u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
- chmod u=rwx,g=rx,o=x 文件/目录名
- chmod o+w 文件/目录名
- chmod a-x 文件/目录名
- 案例演示:
- 给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限
chmod u=rwx,g=rx,o=rx abc
- 给abc文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc
- 给abc文件的所有用户添加读的权限
chmod a+r abc
- 给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限
1.10.3第二种方式:通过数字变更权限
- r=4 w=2 x=1 rwx=4+2+1=7
- chmod u=rwx,g=rx,o=x 文件目录名 相当于 chmod 751 文件目录名
- 案例演示:将/home/abc.txt 文件的权限修改成rwxr-xr-x,使用给数字的方式实现
(11)修改文件所有者—CHOWN
1.11.1基本介绍
chown newowner 文件/目录 #改变所有者
chown newowner:newgroup 文件/目录 #改变所有者和所在组
-R 如果是目录,则使其下所有子文件或目录递归生效
1.11.2案例演示
- 请将/home/abc.txt文件的所有者修改成tom
- 请将/home/test目录下所有的文件和目录的所有者都修改成tom
chown tom /home/abc.txt chown -R tom /home/test
(12)修改文件/目录所在组—CHGRP
1.12.1基本介绍
chgrp newgroup 文件/目录 #改变所在组
1.12.2案例演示
- 请将/home/abc.txt文件的所在组修改成shaolin(少林)
chgrp shaolin /home/abc.txt
- 请将/home/test目录下所有的文件和目录的所在组都修改成shaolin(少林)
chgrp -R shaolin /home/test
(13)最佳实践—警察和土匪游戏
- 创建组、创建用户
- jack创建一个文件,自己可以读写,本组人可以读,其他组没有任何权限
- jack修改该文件,让其他组可以读,本组人可以读写:
- xh投靠警察,看看xh是否可以读写
- 结论:如果想对目录内的文件进行读/写等操作,必须先拥有对该目录的相应权限
二、定时任务调度
(1)crond 任务调度
2.1.1概述
- crontab 进行 定时任务的设置
- 任务调度:系统在某个时间执行的特定的命令或程序
- 任务调度分类:
- 系统工作:如有些重要工作必须周而复始地执行
- 个别用户工作:个别用户可能希望执行某些程序,如对mysql数据库的备份
2.1.2基本语法
crontab [选项]
2.1.3常用选项
- -e:编辑当前用户的定时任务表,会用默认文本编辑器打开文件供你添加、修改或删除任务
crontab -e
- -l:列出当前用户的定时任务表
crontab -l
- -r:删除当前用户的定时任务表,操作不可逆
crontab -r
- -u <用户名>:以指定用户的身份执行 crontab 操作,需足够权限(如 root)才能用
sudo crontab -u jack -e #编辑用户jack的任务表 sudo crontab -u jack -l #列出用户jack的任务表 sudo crontab -u jack -r #删除用户jack的任务表
- -h:显示 crontab 命令的帮助信息,列出可用选项及说明
crontab -h
2.1.4快速入门
- 设置个人任务调度:corontab -e
- 在调度文件中输入任务:*/1 * * * * ls -l /etc/ > /tmp/to.txt
- 特殊符号说明:
2.1.5应用实例
- 每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件中:
*/1 * * * * date >>/tmp/mydate
- 每隔1分钟,将当前日期和日历都追加到/home/mycal文件中:
- 每天凌晨2:00将mysql数据库testdb,备份到文件中。提示:指令为mysqldump -u root -p密码 数据库
2.1.6crond相关指令
- 重启任务调度(CentOS7及以上)
systemctl restart crond
- 重启任务调度(CentOS6及以下)
service crond restart
(2)at 定时任务


2.2.1基本介绍
- .at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
- 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
- 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看
ps -ef|grep atd
- 示意图
2.2.2at命令格式
- at [选项] [时间]
- Crtl + D 结束at命令的输入(按两次)
2.2.3at命令选项










2.2.4at时间定义
- 具体时间点:
- 特定日期与时间组合:
- 相对计时法:
- 特定时间表述:
2.2.5应用案例
- 案例1:2天后的下午5点执行 /bin/ls/home
- 案例2:atq命令来查看系统中没有执行的工作任务
- 案例3:明天17点钟,输出时间到指定文件内 比如/root/date100.log
- 案例4:2分钟后,输出时间到指定文件内 比如/root/date200.log
- 案例5:删除已经设置的任务,atrm 编号(也可以使用at -d 任务编号:来删除设置的任务)
三、Linux磁盘分区和挂载
(1)Linux分区
3.1.1原理介绍
- 单一根目录与统一文件结构:在 Linux 系统中,无论存在多少个分区以及这些分区分配给哪些目录使用,系统只有一个根目录(
/
),并形成一个独立且唯一的文件系统结构。每个分区都是这个整体文件系统的组成部分 - 挂载机制:Linux 采用 “挂载” 的方式来管理存储设备。整个文件系统包含了一系列的文件和目录,通过挂载操作,可以将一个分区(如硬盘分区、外部存储设备等)与文件系统中的某个目录关联起来。挂载后,该分区的存储空间就如同是该目录的一部分,用户可以通过这个目录来访问分区中的文件和目录
- 示意图:
3.1.2硬盘说明
- IDE硬盘分区标识:IDE硬盘用 hd 表示,后面跟盘号(a - d 对应不同IDE通道的主从盘)和分区号。1 - 4 号是主分区或扩展分区,5 及以后是逻辑分区,如 hda3、hdb2
- SCSI等硬盘分区标识:SCSI、SATA、NVMe 等硬盘用 sd 表示,盘号和分区号规则和IDE硬盘一样,像 sda5、sdb3
- 如图所示:
3.1.3查看所有设备挂载情况
- -a(all):显示所有块设备,包含空设备(如未挂载、无分区的设备)
- -d(nodeps,即no dependencies的缩写):只显示设备本身,不显示设备的子分区
- -f(fs,即file system的缩写):显示文件系统相关信息,如文件系统类型、UUID 等
- -o(output):自定义输出列,可指定要显示的信息字段
- 输出信息说明:
UUID(通用唯一识别码)主要是用来标识硬盘分区
(2)挂载的经典案例
3.2.1如何增加一块硬盘
右键虚拟机,选择[设置],点击添加,选择硬盘,然后一路[下一步],中间只有选择磁盘大小的地方需要修改,直到完成。然后重启系统(才能识别)!
3.2.2虚拟机增加硬盘步骤1
- 分区命令 fdisk /dev/sdb
- 开始对/sdb分区
- 说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q
3.2.3虚拟机增加硬盘步骤2
格式化磁盘:
- 格式化命令:-t是type的缩写,意味着要创建的文件系统的类型是什么(make filesystem)
mkfs -t ext4 /dev/sdb1
- 其中ext4是分区类型
- 格式化之前,sdb1还没有UUID
- 输入命令,格式化磁盘
- 再看,此时就拥有UUID了
3.2.4虚拟机增加硬盘步骤3
- 挂载:将一个分区与一个目录关联起来
mount 设备名称 挂载目录
例如:mount /dev/sdb1 /newdisk(必须先创建/newdisk目录)
- 卸载:
umount 设备名称 或者 挂载目录
例如:umount /dev/sdb1 或者 umount /newdisk
- 注意:用命令行挂载重启后会失效
3.2.5虚拟机增加硬盘步骤4
- 永久挂载:通过修改/etc/fstab(filesystem table)实现自动挂载
- 添加完成后 执行 mount -a 即刻生效(或者执行reboot也会自动生效)
- 最后两个数字的含义:
(3)磁盘情况查询
3.3.1查询系统整体磁盘使用情况
- 基本语法:df是disk free的缩写
df -h #以人类可读的格式显示 df -T #显示文件系统类型
- 应用实例:
3.3.2 查看指定目录的磁盘占用情况
- 基本语法:du是disk usage的缩写
- 选项说明:
- -h:
- -s:
- -h:
- 查询指定目录的磁盘占用情况,不指定则默认查询当前目录
- 应用实例:查询/opt目录的磁盘占用情况,深度为1
(4)磁盘情况—工作使用指令
- 关于wc命令:
- 统计/opt文件夹下的文件的个数
ls -l /opt|grep "^-"|wc -l
- 统计/opt文件夹下的目录的个数
ls -l /opt|grep "^d"|wc -l
- 统计/opt文件夹下的文件的个数,包括子文件夹里的
ls -lR /opt|grep "^-"|wc -l
- 统计/opt文件夹下目录的个数,包括子文件夹里的
ls -lR /opt|grep "^d"|wc -l
-
以树状显示目录结构:tree 目录(注意:如果没有tree指令,则使用yum install tree,前提网络是畅通的)