一、组

  1. 在linux中每个用户都属于一个组,不能独立于组外。
  2. 在linux中每个文件有所有者,所在组,其他组的概念。
    • 所有者:文件是谁的
    • 所在组:文件是归属哪个组的
    • 其他组:除去所在组的其他组

      1、所有者

      一般来说文件的创建者,谁创建了该文件,就自然地成为该文件的所有者

      2、查看文件的所有者

      **ls-ahl** 【a:查看所有,h:human 转换成人看的,l: 长列表格式】

应用案例
创建一个组police 在创建一个用户 tom,然后使用tom来创建一个文件,看看情况如何

  • su root 切换root用户
  • groupadd police 创建组
  • useradd -g police tom 创建用户,并指定组
  • passwd tom 修改密码
  • su tom 切换tom用户
  • cd 回到tom的home目录
  • touch ok.txt 创建一个ok.txt文件
  • ls -ahl查看文件所有者

未命名图片.png

3、修改文件所有者

**chown 用户名 文件名**
案例:
使用root创建一个文件apple.txt 然后将其所有者修改成tom

  • su root 切换用户
  • cd 回到root目录
  • touch apple.txt 创建文件
  • chown tom apple.txt 修改所有者为tom
  • 此时文件的所有者是 tom 但是文件的所在组是 root组

未命名图片.png

4、文件目录所在组

当某一个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组

4.1 查看文件/目录所在组

  • 基本指令:**ls -ahl**

4.2 修改文件所在组

  • 基本指令:**chgrp 组名 文件名**
  • **chgrp -R 组名 目录 //递归的把目录内的全部改成该组的**

案例
使用root用户创建文件 orange.txt 看看当前这个文件属于哪个组,然后将这个文件所在组,修改到police组

  • touch orange.txt 创建文件
  • ls -ahl 查看信息
  • chgrp police orange.txt 修改文件所在组

未命名图片.png

5、其他组

除去文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

二、权限理解

  • 这里的权限主要是 文件和目录的权限
  • 当使用ls- ahl 查看时会显示下列信息

1、-rw-r--r--. 1 tom police 0 Sep 28 14:20 ok.txt

未命名图片.png
开头的 **-** 是文件的类型:
-普通文件
d:目录
l:软链接
c:字符设备【键盘鼠标】
b: 块文件 【硬盘】
**rw-** 表示:文件所有者拥有的权限
r:读的权限
w:写的权限
-:没有权限
x
**r--**: 文件所在组的用户拥有的权限
r-- 表示文件所在者的用户只有读的权限
**r--**:文件的其他组的用户拥有的权限
r-- 表示文件其他组的用户只有读的权限
**1**:一般是文件 都是1
如果是目录,就代表他下面的子目录有多少个的个数
**tom** :用户
**police**:所在组
**0**: 文件的大小 ,如果是目录会显示 4096
**Sep 28 14:20**:文件最后的修改时间
**ok.txt**:文件名
未命名图片.png

2、详解rwx权限 rw-

2.1 rwx作用到文件

  • r 代表可读,可以查看 读取 read
  • w 代表可写,可以修改,但是不代表可以删除该文件,因为删除一个文件的前提是对该文件所在目录有写权限,才能删除该文件 write
  • x代表可执行,可以被执行 execute

2.2 rwx作用在目录上

  • r 代表可读,可以读取 ls查看目录内容
  • w代表可写,可以修改,目录内创建+删除+重命名目录
  • x代表可执行,可以进入该目录

三、修改权限

基本说明:通过chmod指令,可以修改文件或者目录的权限

1、第一种方式: + - = 变更权限

u:所有者 g:所在组 o:其他人 a:所有人 (u g o 的总和)

  1. **chmod u=rwx,g=rx,o=x **``**文件目录名** 【给后面这个文件 的所有者 rwx权限 所在组 rx权限….】
  2. **chmod o+w 文件目录名** 【给后面这个文件的 其他人增加一个 写的权限】
  3. **chmod a-x 文件目录名** 所有人 删掉一个 执行的权限】

案例:

  • 给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限

chmod u=rwx,g=rx,o=rx abc

  • 给abc文件的所有者除去执行的权限,增加组写的权限

chmoe u-x,g+w abc

  • 给abc文件的所有用户添加读的权限

chmoe a+r abc

第二种方式 :通过数字变更权限

  • r=4 w=2 x=1 rwx=4+2+1=7
  • chmod u=rwx,g=rx,=x 文件目录名
  • 相当于 chmod 571 文件目录名
  • 案例:
    • 将/home/abc.txt 文件的权限修改成rwxr-xr-x 使用数字的方式实现
      • chmod 755 /home/abc.txt

修改文件所有者

基本介绍
**chown 新用户名 文件名 改变文件的所有者**
**chown 新用户名 :新组名 文件 改变用户的所有者和所有组**
-R 如果是目录 则使其下所有子文件或者目录递归生效
案例

  • 将/home/abc.txt 文件的所有者修改成 tom

chown tom abc.txt

  • 将/home/kkk目录下所有的文件和目录的所有者都修改成tom

su root
**chown -R tom kkk/**

未命名图片.png
未命名图片.png

四、定时任务调度

1、crond任务调度 crond:守护线程

  • 任务调度:是指系统在某个时间执行的特定的命令或程序
  • 任务调度分类:
    • 系统工作:有些重要的工作必须周而复始地执行,入病毒扫描等
    • 个别用户工作:个别用户可能希望执行某些程序,比如对mysql的备份
  • 基本语法:
    • **crontab 【选项】 **
    • **service crond restart 【重启任务调度】**
  • 常用选项 | 选项 | 功能 | | —- | —- | | -e | 编辑crontab 定时任务 | | -l | 查询contab任务 | | -r | 删除当前用户所有的crontab任务 |

未命名图片.png

2、快速入门案例:

  1. 设置任务调度文件:/etc/crontab
  2. 设置个人任务调度。执行 crontab -e命令
  3. 接着输入任务到调度文件
  4. 如:/1 * ls -l /etc/>/tmp/to.txt
  5. 意思是说每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt 命令

    3、步骤如下

    crontab -e //创建定时任务
    /1 * ls -l /etc >> /tmp/to.txt
    当保存退出后就会生效
    在每一分钟都会自动的调用 ls -l /etc >> /tmp/to.txt

    4、参数细节说明

    5个占位符的说明
项目 含义 范围
第一个 * 一小时当中的第几分钟 0-59
第二个 * 一天当中的第几个小时 0-23
第三个 * 一个月中的第几天 1-31
第四个 * 一年当中的第几月 1-12
第五个 * 一周当中的第几天 0-7(0和7都是周日)

特殊符号的说明

特殊符号 含义
* 代表任何时间,比如第一个 * 就代表一小时中每分钟都执行一次的意思
, 代表不连续的时间,比如 ”0 8,12,16 *命令 “ 就代表在每天的8点0分,12点0分,16点0分都执行一次的命令
- 代表连续的时间范围,比如“0 5 1-6 命令”代表周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“/10 * 命令” 代表每隔10分钟就执行一遍命令

特定时间执行任务案例

时间 含义
45 22 * 命令 在22点45分执行命令
0 17 1 命令 在每周1的17点0分执行命令
0 5 1,15 命令 每月1号到15号的凌晨5点0分执行命令
40 4 1-5 命令 每周一到周五的凌晨4点40分执行命令
/10 4 命令 每天的凌晨4点,每个10分钟执行一次命令
0 0 1,15 * 1命令 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们的定义都是天,容易让管理员混乱

5、案例

  1. 每隔一分钟,就将当前的日期信息,追加到 /tmp/mydate文件中
    • 先编写一个文件 /home/mytask1.sh(shell脚本)
      • date >> /tmp/mydate.txt
    • 给mytask1.sh 文件一个可执行权限
      • chmod 744 mytask1.sh
    • crontab -e
    • /1 * /home/mytask1.sh
    • 成功
  2. 每隔一分钟,将当前的日期和日历都追加到 /home/mycal文件中
    • 先编写一个文件 /home/mytask2.sh(shell脚本)
      • date >> /tmp/mycal.txt
      • cal >> /tmp/mycal.txt
    • 给mytask2.sh 文件一个可执行权限
      • chmod 744 mytask2.sh
    • crontab -e
    • /1 * /home/mytask1.sh
    • 成功
  3. 每天凌晨2点将MySQL数据库的testdb,备份到文件中 mydb.bak
    • 先编写一个文件 /home/mytask3.sh(shell脚本)
      • /usr/local/mysql/bin/mysqldump -u root -p0000 testdb > /tmp/mydb.bak
    • 给mytask2.sh 文件一个可执行权限
      • chmod 744 mytask3.sh
    • crontab -e
    • 0 2 * /home/mytask3.sh
    • 成功