美文网首页
2019-03-22 第12章 Linux 系统权限知识及应用

2019-03-22 第12章 Linux 系统权限知识及应用

作者: Ffvc | 来源:发表于2019-03-22 19:14 被阅读0次

    Day17

    作者:方维超

    归档:课堂笔记

    时间:2019/3/22

    老男孩教育教学核心思想6重:重目标、重思路、重方法、重实践、重习惯、重总结

    学无止境,老男孩教育成就你人生的起点!

    第****12****章 Linux 系统权限知识及应用实践

    suid是针对二进制命令的,给一个二进制命令设置UID,任何一个用户使用这个命令,都有对应的权限

    image.png image.png

    Sgid****的作用

    sgid的作用就是让普通用户可以在执行某个设置了sgid位的命令时,

    拥有和命令对应用户组(一般为root用户组)一样的身份和权限(默认)

    locate****搜索内容,默认从updatedb****对应的数据库中查找

    updatedb 更新locate****查找内容对应的数据库。

    [root@oldboyedu ~]# updatedb

    [root@oldboyedu ~]# ls -l /var/lib/mlocate/mlocate.db

    -rw-r----- 1 root slocate 1977042 Oct 8 00:47 /var/lib/mlocate/mlocate.db

    [root@oldboyedu ~]# file /var/lib/mlocate/mlocate.db

    /var/lib/mlocate/mlocate.db: data

    sgid基于目录的作用:

    让不同的人创建文件属于相同的用户组,从而可以互相共享文件的权限。

    image.png image.png image.png

    -u 指定UID

    章节重点

    1)Linux基本9位权限之文件和目录权限详细说明。

    2)Linux基本9位权限之字符和数字(8进制)权限知识。

    3)权限及用户用户组属性修改命令chmod、chown、chgrp。

    4)默认权限umask以及系统目录安全案例。

    5)特殊权限Suid知识掌握,Sgid和sticky知识了解即可

    《3W1H****框架》用于总结,写稿等

    第十三章 linux****系统定时任务

    1****、什么是定时任务

    周期性的执行任务计划的软件,linux****定时任务的常用软件 crond****。

    2****、作用:使用定时任务软件,可以每天、每小时按你需求重复的执行一项任务。

    例如:保证数据不丢失,需要备份,都是0点以后,2点爬起来备份,4点以后睡觉。

    需要写一个程序实现自动备份,然后让定时任务软件帮你执行

    相当于一个闹钟。

    3****、怎样用:

    (1)系统的定时任务

    1.不用管理员干预,系统自动执行。

    2.也可以利用系统任务为管理员服务。

    [root@oldboy ~]# ll /var/log/messages*

    -rw-------. 1 root root 96594 Mar 21 12:40 /var/log/messages

    -rw-------. 1 root root 485249 Mar 20 10:46 /var/log/messages-20190320

    [root@oldboy ~]# ll /var/log/secure*

    -rw-------. 1 root root 1430 Mar 21 12:50 /var/log/secure

    -rw-------. 1 root root 2695 Mar 20 10:46 /var/log/secure-20190320

    [root@oldboyedu /etc/cron.daily]# ll /etc/cron.daily/logrotate /etc/logrotate.conf

    -rwx------. 1 root root 219 Oct 31 2018 /etc/cron.daily/logrotate

    -rw-r--r--. 1 root root 662 Jul 31 2013 /etc/logrotate.conf

    按天切割日志,就可以用logrotate****。

    (2)用户的定时任务

    在Linux系统中,

    cron是定时任务的软件名,

    crond是服务进程名,真正实现定时任务服务。

    crontab****命令是用来设置定时任务规则的配置命令

    要想配置定时任务,首先启动crontab服务。

    systemctl start crond.service

    systemctl stop crond.service

    systemctl status crond.service

    开启自启动:

    systemctl disable crond.service

    systemctl enable crond.service

    [root@oldboy/etc/cron.d]# systemctl status crond.service

    ● crond.service - Command Scheduler

    Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)

    Active: active (running) since Thu 2020-10-08 20:30:31 CST; 1h 40min ago

    Main PID: 6105 (crond)

    CGroup: /system.slice/crond.service

    └─6105 /usr/sbin/crond -n

    Oct 08 20:30:31 oldboy systemd[1]: Started Command Scheduler.

    Oct 08 20:30:31 oldboy crond[6105]: (CRON) INFO (RANDOM_DELAY w...)

    Oct 08 20:30:31 oldboy crond[6105]: (CRON) INFO (running with i...)

    Hint: Some lines were ellipsized, use -l to show in full.

    Crontab****命令

    内容放在哪?定时任务存放的位置/var/spool/cron/

    以当前用户名作为文件名

    -l 列表 查看已经设置的定时任务 #####

    -e edit 编辑定时任务 #####

    -u user 查看特定用户下的定时任务

    root:

    crontab -l == cat /var/spool/cron/root

    crontab -e == vim /var/spool/cron/root

    编写定时任务的语法:

    Example of job definition:

    .---------------- minute (0 - 59)

    | .------------- hour (0 - 23)

    | | .---------- day of month (1 - 31)

    | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

    | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

    | | | | |

    * * * * * (command to be executed)

    共六列:

    第一列:分 minute (0 - 59)

    第二列:时 hour (0 - 23)

    第三列:日 day of month (1 - 31)

    第四列:月 month (1 - 12) OR jan,feb,mar,apr ...

    第五列:周 day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

    第六列:要执行的任务命令或程序

    特殊符号:

    *表示 每 的意思

    -连续区间 1-10

    00 8-23 * * * cmd

    列举 1,2,3,4,8
    00 1,2,3,4,8 * * * cmd

    /n n是数字
    n代表自然数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成

    */10 * * * * cmd

    课堂练习:
    */1 * * * * /bin/sh /scripts/data.sh

    30 3,12 * * * /bin/sh /scripts/oldboy.sh

    30 */6 * * * /bin/sh /scripts/oldboy.sh

    30 8-18/2 * * * /bin/sh /scripts/oldboy.sh

    30 21 * * * 最强大脑

    45 4 1,10,22 * * /application/apache/bin/apachectl graceful

    10 1 * * 6,0 /application/apache/bin/apachectl graceful

    0,30 18-23 * * * /application/apache/bin/apachectl graceful

    00 */1 * * * /application/apache/bin/apachectl graceful

    #################

    • 23,00-07/1 * * * /application/apache/bin/apachectl graceful

    00 */1 * * *

    00 11 * 4 1-3 /application/apache/bin/apachectl graceful

    每周日上午9:30去老男孩教育上课

    每天上午8:30去老男孩教育上课,这是脱产班的上课频率。

    课堂练习:

    命令实例1:/1 * * * * /bin/sh /scripts/data.sh
    在本例中除了数字与命令脚本外,还使用到了符号"
    ",*号的意思“每一”。
    第一列的意思为分钟,特殊符号“/”表示每隔的意思,即表示每隔一分钟执行/bin/sh /scripts/data.sh程序。

    命令实例2:30 3,12 * * * /bin/sh /scripts/oldboy.sh
    在本例中,第一列为30,表示30分钟;第二列为 3,12,这代表3点及 12点,此定时任务的意思是每天凌晨3点和中午12点的半点时刻(或描述为每天凌晨3:30和中午12:30)执行/scripts/oldboy.sh脚本。

    命令实例3:30 /6 * * * /bin/sh /scripts/oldboy.sh
    在本例中,第一列为30,表示30分钟;第二列
    /6代表每6个小时,也相当于 6、12、18、24 的作用。此定时任务的意思是每隔6个小时的半点时刻执行/scripts/oldboy.sh脚本任务。

    命令实例4:30 8-18/2 * * * /bin/sh /scripts/oldboy.sh
    在本例中,其中的第一列为30,表示30分钟;第二列8-18/2代表在早晨8点到下午18点之间每隔2小时,也相当于把8、10、12、14、16、18单独列出。
    那么,此定时任务的意思就是早晨8点到下午18点之间,每隔2小时的半点时刻执行/scripts/oldboy.sh脚本任务。

    命令实例5:30 21 * * * /application/apache/bin/apachectl graceful
    本例表示每晚的21:30重启apache。

    命令实例6:45 4 1,10,22 * * /application/apache/bin/apachectl graceful
    本例表示每月1、10、22日的凌晨4 : 45分重启apache。

    命令实例7:10 1 * * 6,0 /application/apache/bin/apachectl graceful
    本例表示每周六、周日的凌晨1 : 10分重启apache。

    命令实例8:0,30 18-23 * * * /application/apache/bin/apachectl graceful
    本例表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

    命令实例9:00 */1 * * * /application/apache/bin/apachectl graceful
    本例表示每隔一小时整点重启apache

    命令实例10:* 23,00-07/1 * * * /application/apache/bin/apachectl graceful
    本例并不表示晚上23点和早上0-7点之间每隔一小时重启Apache。
    要说明的是,以上结果是不规范的,也是不对的。大家想想为什么?
    以上定时任务的第一列为*,表示每分都执行任务即晚上23点和早上0-7点之间每隔一小时的每分都重启Apache,很可怕吧。

    命令实例11:00 11 * 4 1-3 /application/apache/bin/apachectl graceful
    本例表示4月的每周一到周三的上午11点整重启Apache。

    命令实例12:30 09 * * 0 去老男孩教育上课
    本例表示每周日上午9:30去老男孩教育上课,这是周末班的上课频率。

    命令实例13:30 08 * * *去老男孩教育上课
    本例表示每上午8:30去老男孩教育上课,这是脱产班的上课频率。
    通过上述13个例子,相信读者已经能够理解定时任务的配置规则了。

    实践:

    1、每分钟追加一次oldboy字符串到/tmp/oldboy.log里。

    解答:大象放冰箱分三步

    a.命令行执行成功。

    [root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log

    [root@oldboyedu ~]# cat /tmp/oldboy.log

    oldboy

    [root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log

    [root@oldboyedu ~]# cat /tmp/oldboy.log

    oldboy

    oldboy

    b.配置定时任务crontab -e 编辑配置

    [root@oldboyedu ~]# crontab -l

            • echo "oldboy">>/tmp/oldboy.log

    c.检查

    [root@oldboyedu ~]# tail -f /tmp/oldboy.log

    oldboy

    oldboy

    oldboy

    老男孩思想:

    1)先输入* * * * *

    2)先命令行操作成功。

    3)拷贝命令到定时任务编辑里。

    范例13-2:让服务器时间每5分钟和互联网时间做一次同步。

    安装时间服务软件:yum install ntpdate -y

    更新互联网时间 /usr/sbin/ntpdate ntp1.aliyun.com

    [root@oldboyedu ~]# crontab -l

    */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null

    /dev/null 黑洞设备。

    &>/dev/null 等价>/dev/null 2>&1

    范例13-3:每天晚上0点,把站点目录/var/www/html下的内容打包备份到/data目录下,并且要求每次生成不同的备份包名。 至少分三步: 1.命令行稿成功 准备工作: [root@oldboyedu ~]# mkdir /var/www/html /data -p 具体命令: [root@oldboyedu ~]# tar zcvf /data/html_(date +%F).tar.gz /var/www/html/ tar: Removing leading `/' from member names /var/www/html/ [root@oldboyedu ~]# ll /data total 4 -rw-r--r-- 1 root root 117 Mar 22 11:59 html_2019-03-22.tar.gz 2、编写定时任务 [root@oldboyedu ~]# crontab -l 00 00 * * * tar zcvf /data/html_(date +%F).tar.gz /var/www/html/ 错了,不执行。。。。 看报错日志。。。错误日志 定时任务没有执行,出错了日志在哪里? 出错日志/var/log/cron
    Mar 22 12:03:01 oldboyedu CROND[18770]: (root) CMD (tar zcvf /data/html_(date +) **定时任务对%的要求,百分号要转义。\%** 正确答案: [root@oldboyedu ~]# crontab -l 00 00 * * * tar zcvf /data/html_(date +%F).tar.gz /var/www/html/

    优秀的答案(企业里): 1.命令行执行

    cd /var/www

    tar zcf /data/html_$(date +%F).tar.gz ./html

    2.尽量用脚本文件实现

    mkdir /server/scripts -p #存放脚本的文件

    运维规范:

    脚本位置:/server/scripts

    软件位置:/server/tools

    编译位置:/application/软件名字-版本,然后要软链接。

    cd /server/scripts

    cat bak.sh

    cd /var/www

    tar zcf /data/html_$(date +%F).tar.gz ./html

    命令行执行:

    /bin/sh /server/scripts/bak.sh

    3、编辑定时任务

    bak html dir by oldboy at 2020108

    00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null

    [root@oldboyedu /server/scripts]# crontab -l|tail -2

    bak html dir by oldboy at 2020108

    00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null

    4、检查正式结果

    [root@oldboyedu /server/scripts]# ls -l /data

    生产环境下的定时****Cron****书写要领

    要领1****:为定时任务规则加必要的注释

    要领2****:所有的定时任务尽量都以脚本的形式执行

    要领3****:在执行的Shell****脚本前加上/bin/sh

    要领4****:定时任务中命令或脚本的结尾加>/dev/null 2>&1

    要领5****:在指定用户下执行相关定时任务

    要领6****:生产任务计划程序中不要随意打印输出信息,****有输出的想法去掉。

    要领7****:定时任务执行的脚本要存放到规范路径下

    要领8****:配置定时任务要规范操作过程,减少出错

    要领9****:定时任务脚本中程序命令及路径尽量用全路径

    要领10****:时间变量%****号要用反斜线转义(只有定时任务里是命令时需要)

    要领11****:若脚本中调用了系统环境变量,要重新定义

    要领12****:出错或无法执行,就检查/var/log/cron****日志

    课下作业:

    1) 在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出crontab中的语句。
    答:15 3 * * */6 /bin/sh /home/shell/collect.pl &>>/dev/null

    2) crontab在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh,怎么实现 ?
    答:00 6-12/2 * 11 * /bin/sh /usr/bin/httpd.sh&>/dev/null

    3) crontab文件由六个域组成,每个域之间用空格分割,其排列正确的为(B )

    A、MIN HOUR DAY MONTH YEAR COMMAND

    B、MIN HOUR DAY MONTH DAYOFWEEK COMMAND

    C、COMMAND HOUR DAY MONTH DAYOFWEEK

    D、COMMAND YEAR MONTH DAY HOUR MIN

    考试:考到定时任务。

    下周:

    ============================

    用户管理:1天

    磁盘管理:2-3天

    三剑客深入:1-2天

    Shell基础:2天

    进程管理命令、安装命令 1天

    ============================

    Linux网络基础:4天 2天基础 两天实践

    第一大阶段结束:

    第二大阶段,搭建集群。

    相关文章

      网友评论

          本文标题:2019-03-22 第12章 Linux 系统权限知识及应用

          本文链接:https://www.haomeiwen.com/subject/obarvqtx.html