个人整理 韩顺平一周学会 linux 2021 部分笔记 (10-11节)

个人整理笔记

返回目录

返回目录

10. 组管理和权限管理

linux中的每个用户,必须属于一个组,不能独立于组外。
linux中的每个文件/目录,都有且仅有一个所有者。
在liunx中有 所有者、所在组、其他组 等概念

  1. 所有者
    文件/目录的所有者,一般来说文件/目录由谁创建则所有者就是谁,可以修改
  2. 所在组
    用于多个相同权限用户的管理,用户必须属于至少一个组,一个用户可以属于多个组,一个组可以包含多个用户
  3. 其他组
    对一个文件而言,除了所有者所属用户组以外的其他用户组,成为其他组,其他组对此文件也可设定一定权限

1. 文件/目录 所有者

每个文件/目录都有且只要一个所有者。所有者默认为文件的创建者。但所有者也可更改

1. ls -l 查看文件的所有者

  1. 相关参数说明
    -l 以列表的形式显示文件/目录清单,显示内容包括:名称、大小、所有者、权限信息
  2. 常用参数
    ls -alh 列表显示、显示所有文件、按常见单位显示
    列表显示的内容(从左往右):权限、包含的文件/目录总数、所有者、所在组、大小、修改时间、名称

2. chown 修改文件的所有者/所在组

  1. 基本语法
    chown 用户名 文件名 将文件所有者修改为对应用户,所在组不变
    chown :用户组 文件名 将文件所在组更改,所有者不变
    chown 用户名AAA:组名BBB 文件名 将文件 所有者/所在组 修改为 AAA/BBB
  2. 常用参数
    -R 修改目录及其子文件、子目录的所有者和所在组
    -h 修改子文件中的软链接,而不是修改软链接指向的文件
    -v 显示详细操作
  3. 文件案例:
    1. 使用 root 账户创建 apple.txt 文件,然后将所有者改为 lilixxs
      chown lilixxs apple.txt
      
    2. 将 apple.txt 文件,所有者修改为 root,所在组修改为 lilixxs
      chown root:lilixxs apple.txt
      

2. 用户 所在组

groupadd:创建一个组 Baosight

groupadd Baosight

groupmod -n:修改组的名称:Baosight --> Ba0sight

groupmod -n Ba0sight Baosight

usermod -g:改变用户 lxy-baosight 所在组为 Ba0sight

usermod -g Ba0sight lxy-baosight

usermod -aG:将用户 hjy-baosight 添加到组 Ba0sight 中

usermod -aG Ba0sight hjy-baosight

useradd -g:新建用户 pig 并直接将此用户分配到 Ba0sight 组中

useradd -g Ba0sight pig

id:查看用户 lilixxs 的状态:用户id、所在组

id lilixxs

groupdel:删除用户组 Ba0sight

groupdel Ba0sight

3. 文件 所在组

当用户创建一个文件后,用户所在的组就是文件的所在组

1. 应用实例

1. 创建用户 lxy 并将 lxy 添加到 lilixxs 用户组中
	```bash
	useradd -g lilixxs lxy
	```

2. 使用 lxy 账户创建文件 lxy.txt,并查看此文件的所在组
	```bash
	touch lxy.txt
	ls -alh
	```

2. chgrp 修改文件的所在组

  1. 基本指令
    chgrp [参数] +组名 +文件/目录名

  2. 常用参数
    -R 修改此目录下所有子目录/子文件的所在组
    -h 修改此目录下软链接的所在组,而不是修改软链接指向的文件的所在组

  3. 应用实例
    使用 root 用户创建文件 orange.txt,然后查看此文件的所有者和所在组。之后将此文件的所有者更改为 lilixxs,所在组更改为 lilixxs

    # 切换为 root 用户
    su - root
    
    # 使用 root 用户,创建 orange.txt
    touch orange.txt
    
    # 查看此文件的所有者、所在组
    ls -alh
    
    # a. 将此文件所有者更改为 lilixxs
    chown -hR lilixxs orange.txt
    
    # b. 将此文件所在组更改为 lilixxs
    chgrp -hR lilixxs orange.txt
    
    # a+b 两步也可用 chown 一步完成
    # chown -hR lilixxs:lilixxs orange.txt
    
  4. 使用细节
    也可使用chmod指令来修改文件所在组
    chown -R AAA:BBB 文件/目录名 更改文件/目录的所有者为AAA,所在组为BBB

4. 文件 其他组

除了文件所有者属于的用户组、文件的所在组以外,其他的用户组都称为其他组。修改了文件的所有者、所在组,则其他组也会改变

5. 权限管理

1. 权限的基本介绍

使用ls -l命令后,可以看到一下以下输出

-rw-r--r-- 1 lilixxs lilixxs         0 4月  17 15:04 test2.txt

其中前边包含 r/w/x/- 等字符的部分,有 10 位。为文件类型、对应文件/目录的权限。

  1. 0-9位介绍
    每 3 位一组
    1. 第 0 位:文件类型(d, -, l, c, b)
      d:目录(directory,即文件夹)
      -:文件
      l:链接(link,即快捷方式)
      c:字符设备(character devices),如鼠标、键盘
      b:块设备(block devices),如硬盘等
    2. 第 1-9 位:所有者、所在组、其他组的权限
      1. 第 1-3 位:所有者(Owner)的权限
      2. 第 4-6 位:所在组(Group)的权限
      3. 第 7-9 位:其他组(Other)的权限
  2. 权限介绍(rwx的含义)
    1. 总体介绍
      3位一组,3位顺序为读->写->执行(r–>w–>x),若没有对应权限,则此位为横线(-)
      文件与文件件的目录是相互独立的
    2. 对文件的 rwx
      r:可读(read)——可以读取、查看文件内容
      w:可写(write)——可以修改
      rw:可读写(read&write)——可以查看、修改、删除。只有同时具备读写权限才能删除文件
      x:可执行(execute)——可以运行
      -:不具备此权限
    3. 对目录的 rwx
      r:可读(read)——可以查看此目录包含的内容,可用ls指令
      w:可写(write)——可以修改,可重命名目录,可在此目录内新建、修改、重命名、删除子文件/子目录,但不一定能进入文件或修改文件内容
      rw:可读写(read&write)——可以查看、修改、删除。只有同时具备读写权限才能删除文件
      x:可执行(execute)——可以进入此目录
      -:不具备此权限

2. 实际案例

ls -l指令的显示内容如下:

-rw-r--r-- 1 lilixxs root         0 4月  17 15:04 test2.txt
  1. 前 10 个字符表示文件类型、文件权限
    1. 第 0 个字符:-——文件类型为“文件” (-/l/d/c/b)
    2. 第 1-3 字符:rw-——所有者的权限,可读写、重命名、删除,不可执行,不可进入此目录
    3. 第 4-6 字符:r--——所在组的权限,可读、不可写、不可重命名、不可删除、不可执行、不可进入
    4. 第 7-9 字符:r--——其他组的权限,可读、不可写、不可重命名、不可删除、不可执行、不可进入
  2. 权限也可用数字表示(3 位二进制)
    r = 4,w = 2,x = 1 --> 因此,rwx权限 = 7
  3. ls指令输出的其他内容
    1包含的子目录数(若为文件则 = 1,包含子目录数最少为2:上一级目录、本级目录,不计算包含的子文件数)
    lilixxs所有者:此文件所有者为 lilixxs
    root所在组:此文件所在组为 root 组
    0文件大小(单位Byte)(若使用-h参数,则将以K/M/G/T等单位显示)
    4月17 15:04文件/目录的修改日期
    test2.txt 文件/目录名

3. chmod 修改权限

  1. 基本说明
    通过chmod指令,可以修改文件/目录的权限

  2. 基本语法
    chmod [选项] 权限表达式 文件/目录名

  3. 常用选项
    -R 递归的修改权限,同时修改目录、子目录、子文件的权限
    -v 权限修改的详细信息

  4. 权限表达式

    1. 字母形式

      1. 详解
        u=rwx,g+rw,o-r
        u,g,o三者顺序任意,省略不写则权限不变,逗号前后不能有间隔
        u = 所有者 (用户,user) 权限
        g = 所在组 (组,group) 权限
        r = 其他组 (others) 权限
        a = 所有组(包括以上全部 3 者)的权限
        r,w,x三者顺序任意,省略不写则认为无此权限
        r = 可读 (read)
        w = 可写 (write)
        x = 可执行 (execute)
        =,+,-为权限的设置模式
        + = 添加权限
        - = 减少权限
        = = 设置权限
        字母形式适用于对部分用户/组进行精细化的权限操作,可简单的实现权限的追加、去除操作。但要修改多个组/用户权限时表达式较长。
      2. 举例:
        # 1. 给 abc 文件设置权限,所有者权限不变,给所在组设置读写执行权限,给其他组设置读执行权限
        chmod g=rwx,o=rx abc
        
        # 2. 给 abc 文件的所有者除去执行权限,增加读写的权限
        chmod u-x,u+rw abc
        
        # 3. 给 abc 文件的所有用户添加读写权限,除去执行权限
        chmod a+rw,a-x abc
        
    2. 数字形式

      1. 详解
        751
        3 位 10 进制数字,分别表示:所有者、所在组、其他组的权限
        数字与权限的对应关系:
        将 rwx 视为 3 位二进制数,对应位 = 1,则表示有此权限;对应位 = 0,则表明无此权限。

        10进制数字2进制数字对应字母形式意义
        0000不可读写,不可重命名,不可删除,不可执行,不可进入
        1001–x不可读写,不可重命名,不可删除,可执行,可进入
        2010-w-不可读,可写,可重命名,不可删除,不可执行,不可进入
        3011-wx不可读,可写,可重命名,不可删除,不可执行,不可进入
        4100r–可读,不可重命名,不可删除,不可执行,不可进入
        5101r-x可读,不可写,不可重命名,不可删除,可执行,可进入
        6110rw-可读,可写,可重命名,可删除,不可执行,不可进入
        7111rwx可读写,可重命名,可删除,可执行,可进入

        数字形式相当于字母形式的=模式,且各个用户、组的权限都要同时设置。适用于要同时设置所有用户和组的权限,追加、去除权限要根据计算后数字结果直接赋值

      2. 举例:

      # 给 abc 文件设置权限,所有者设置读写执行权限,所在组设置读写权限,其他组设置读执行权限
      chmod 765 abc
      

返回目录

11. 任务调度

1. crontab crond任务调度

  1. 概述

    • 任务调度:系统定时、按照一定周期或规则,执行特定的命令或程序
    • 任务调度分类:
      1. 系统任务:某些重要的任务需要周而复始的执行,如病毒扫描等
      2. 个别用户任务:个别用户希望执行的任务,如对 mysql 数据库的备份
  2. 基本语法
    crontab [选项]

  3. 常用选项
    -e 编辑 crontab 定时任务
    -l 查询 crontab 任务
    -r 删除当前用户所有的 crontab 任务

  4. 快速入门

    1. 打开任务调度文件
      1. 使用文本编辑器,便捷 crontab 任务列表:/etc/crontab
      2. 使用指令,直接进入 crontab 任务列表:crontab -e
        若使用指令,则
    2. 配置定时任务——cron 表达式
      A B C D E +要执行的指令
      A,B,C,D,E 是对应指令执行的周期,若为*则为不使用此单位
    单位含义范围

| A | 每小时的第几分钟 | 0-59 |
| B | 每天的第几小时 | 0-23 |
| C | 每月的第几天 | 1-31 |
| D | 每年中的第几月 | 1-12 |
| E | 每周中的星期几 | 0-7 (0=7=周日) |

   各单位时间的具体含义与语法如下:
   - `*` 任意时间都匹配
	 如`A`中的`*`表示:一小时中的每分钟都执行
   - `X,Y,Z` 不连续的时间:X 或 Y 或 Z
		```bash
		# 在每天的 8:00、12:00、16:00 执行一次 命令X
		0 8,12,16 * * * 命令X
		```
   - `X-Y` 持续的时间:从 X 持续到 Y
		```bash
		# 在 周一到周六 每天的 5:00 执行一次命令Y
		0 5 * * 1-6 命令Y
		```
   - `*/X` 每隔 X 时间执行一次
	   ```bash
	   # 每隔 10 分钟执行一次 命令Z
	   */10 * * * * 命令Z
	   ```
1. 保存任务调度文件,则 crond 定时任务开始执行
1. 控制定时任务——crontab 指令
	`crontab -l` list:列出当前的所有定时任务
	`crontab -e` edit:编辑任务调度文件
	`crontab -r` remove:取消当前所有定时任务(移除当前任务调度文件)
	`service crond restart/stop/start/status` 定时任务服务重启(刷新)/停止/启动/查看服务状态
	`systemctl start/stop/restart/status crond` 同上
  1. 配置定时举例
    1. cron 表达式举例
      # 在 每天的 22:45 执行命令
      45 22 * * * 命令
      
      # 在 每周一的 17:00 执行命令
      0 17 * * 1 命令
      
      # 在 每月的 1 号和 15 号的凌晨 5:00 执行命令
      0 5 1,15 * * 命令
      
      # 在 每周一到周五的凌晨 4:40 执行命令
      40 4 * * 1-5 命令
      
      # 在 每天的凌晨 4:00-4:59 每隔 10 分钟执行一次命令
      */10 4 * * * 命令
      
      # 在 每月的 1 号和 15 号,每周一的 0:00 执行一次命令
      # 在实际的任务中,最好不要这样写
      # 同时出现日、星期,容易让管理维护者产生混乱
      0 0 1,15 * 1 命令
      
      # 每晚 21:30 执行命令
      30 21 * * * 命令
      
      # 每月 1、10、22 日的 4:45 执行命令
      45 4 1,10,22 * * 命令
      
      # 每月 1 到 10 日的 4:45 执行命令
      45 4 1-10 * * 命令
      
      # 每隔 2 分钟 (偶数分钟) 执行命令
      */2 * * * * 命令
      
      # 每隔 2 分钟 (奇数分钟) 执行命令
      1-59/2 * * * * 命令
      
      # 晚上 11 点至早上 7 点之间,每隔 1 小时执行命令
      0 23-7/1 * * * 命令
      0 23-7 * * * 命令
      
      # 每天 18:00 至 23:00 之间,每隔 30 分钟执行命令
      */30 18-22 * * * 命令
      
    2. 应用实例
      # 每隔 1 分钟,将当前日期信息,追加到 /tmp/maydate 文件中
      */1 * * * * date 
      
      # 每隔 10 分钟,将当前日期和日历都追加到 /home/mycal 文件中
      */10 * * * * date +%c;cal >> /home/mycal
      # 或者写一个脚本,然后在任务调度文件中调用脚本
      
      # 每天凌晨 2:00 将 mysql 数据库中 testdb 库,备份到 /home/db.bak 文件中
      # 提示:备份指令 mysqldump -u 用户名 -p密码 数据库
      0 2 * * * mysqldump -u 用户名 -p密码 testdb >> /home/db.bak
      

2. at 定时任务

  1. 基本介绍

    1. at命令时一次性定时计划任务,at 的守护进程atd会以后台模式运行,检查作业队列并运行
    2. 默认情况下,atd守护进程每 60 秒检查作业队列。队列有作业时,检查作业运行时间,若计划时间与当前时间匹配,则运行此作业。at定时任务的最小间隔为 1 分钟
    3. at命令是一次性定时计划任务,一个作业执行后不再执行该计划
    4. 在使用at命令时,一定要保证atd进程启动,可使用相关指令查看
  2. 命令格式

    at [选项] [时间]
    at> 命令
    (Ctrl + D)
    (Ctrl + D)
    

    第一行:at 指令输入结束后,回车到下一行输入指令
    第二行:开头的 at> 无需输入,是系统自动添加的
    命令输入结束后:Ctrl + D 结束命令的输入,要输入两次

  3. 常用选项
    -m 当前任务执行后,向用户发送邮件
    -l (=atq 指令)list:列出当前用户的 at 任务队列
    -d (=atrm 指令)delete:删除 at 任务
    -v 显示任务的将被执行的时间
    -c 输出任务内容(任务指令)
    -V 显示版本信息
    -f <文件> 从指定的文件读入,而不是从标准输入
    -t <时间参数> 以时间参数的形式提交要运行的任务,时间参数MMDDhhmm(月日时分)

  4. at 时间定义

    格式含义举例
    HH:MM当天 HH:MM 执行,若当天时间已过,则在明天 HH:MM 执行当天 4:00 (若超时则为明天 4:00):
    4:00
    英文粗略时间单次midnight(午夜,00:00)、noon(中午,12:00)、teatime(下午茶时间,16:00)midnight、noon、teatime
    英文月名A 日期B [年份C]C年A月B日执行在 2018 年 1 月 15 日执行:
    January 15 2018
    日期时间戳形式绝对计时法
    时间+日期
    时间:HH:MM
    日期:MMDDYYMM/DD/YYMM.DD.YY
    在 2018 年 1 月 15 日执行:
    01151801/15/1801.15.18
    now + 数量 单位相对计时法
    以 minutes、hours、days 或 weeks 为单位
    5 天后的此时此刻执行:
    now + 5 days
  5. 其他指令

    # 守护进程 atd 查看状态
    service atd status
    systemctl status atd
    ps -ef | grep "atd"
    ps -aux | grep "atd"
    
    # 守护进程 atd 启动/停止/重启/查看进程状态
    service atd start/stop/restart/status
    systemctl start/stop/restart/status atd
    
  6. 应用实例

    # 2 天后的下午 5 点执行 /bin/ls /home
    at 5pm + 2 days
    at> bin/ls /home
    (Ctrl + D)
    (Ctrl + D)
    
    # 查看当前用户中的 at 任务队列
    atq
    # 也可用替代指令 at- l
    at -l
    
    # 明天 17 点,将时间+日期、日历追加输出到 /home/date100.log 文件
    at 17:00 tomorrow
    at> date +%c;cal >> /home/date100.log
    (Ctrl + D)
    (Ctrl + D)
    # at 时间也可写为 5pm + 1 day / 5pm tomorrow / 17:00 + 1 day
    
    # 2 分钟后,将时间覆写输出到 /root/date200.log 文件
    at now + 2 minutes
    at> date +%T > /root/date200.log
    (Ctrl + D)
    (Ctrl + D)
    
    # 2018 年 5 月 10 日 16:00 执行 /home/mycentos.sh 脚本
    at 16:00 5/10/18
    at> /home/mycentos.sh
    (Ctrl + D)
    (Ctrl + D)
    # at 日期也可写为:4pm May 10 2018 / 4pm 051018 / 16:00 05.10.18
    
    # 删除任务号 8 的 at 任务
    at -d 8
    # 也可用 atrm 指令
    atrm 8
    

返回目录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值