美文网首页
24—sudo的切换和定时任务

24—sudo的切换和定时任务

作者: 杨丶子 | 来源:发表于2019-05-14 17:47 被阅读0次
    image

    一、sudo 临时让用户获得root权限

    image

    1. 怎么用su?

     1先登录普通用户,没事不允许登录Root
       只有执行的任务需要root权限的时候才允许你登录Root。
       系统维护通道
    
          用su管理,必须知道root密码,安全隐患
         10个运维,逗得知道root密码,安全隐患
    
    

    2. 需求:

      1、不用知道root密码还能管理服务器
      2、最小化管理服务器,想关机,就只给你halt权限
        所以就出来sudo 命令
    
    

    3. sudo 允许指定用户执行某命令期间拥有root权限

           -l  查看获得的权限
         suid针对命令,任何用户执行命令都有root身份    任何用户执行某个命令,模糊
         sudo 针对用户权限的命令,具体
    
    

    4. 如何编辑配置sudo?

       sudo 是一个提权的命令(对应的权限通过读取/etc/sudoers(严格语法)文件实现的)
     配置/etc/sudoers可以使用visudo命令。或 vim/etc/sudoers(不推荐)
    
    
    准备环境
    准备两个用户
    root
    oldboy
    给oldboy设置密码123456
    useradd oldboy;echo 123456|passwd --stdin oldboy
    
    

    然后在root下进入"visudo"
    100dd切换到100行

    ##visudo==vim /etc/sudoers

    在root用户下进入visudo添加普通用户

    ## Allow root to run any commands anywhere
    root    ALL=(ALL)       ALL
    oldboy01  ALL=(ALL)     /bin/ls, /bin/touch
    oldboy  ALL=(ALL)       /bin/ls, /bin/touch
    
    

    sudo -l 查看当前用户有哪些权限

    image

    grep oldboy /etc/sudoers 查看用户有什么权限第二种方法

    image

    在visudo下修改的格式:

    oldboy ALL=(ALL)  /bin/*
    拥有所有命令
    
    oldboy ALL=(ALL)  /bin/ls,/bin/touch,....
    添加一些命令
    
    oldboy ALL=(ALL)  /bin/*,!/bin/vi,!/bin/su,!/bin/rm
    给所有但排除一些命令  用感叹号!
    
    oldboy ALL=(ALL)  NOPASSWD:ALL
    给oldboy配置可以运行系统中所有命令并且不需要再输入oldboy密码
    禁止root远程登录的时候这样用。
    
    

    ※sudo有个机制
    设定使用sudo的用户每几分钟要输入用户密码
    设置NOPASSWD:ALL表示不需要再输入本用户密码

    sudo -k 
    清除密码缓存
    
    

    我们设置一下sudo:

    第一步:在oldboy用户下查看/root,没有权限

    image

    第二步 :在root用户下用visudo给oldboy加ls 权限

    image

    3第三步:在oldboy用户下用sudo ls 查看/root

    image
    image
    image

    visudo 编辑sudo 配置文件的命令

             -c  检查语法
    
    

    sudo练习题 :
    给oldboy配置sudo可以查看系统的日志 (思考查看日志有什么命令)

    给oldboy配置可以运行/bin下面所有命令

    image

    给oldboy配置可以运行系统中所有命令并且不需要再输入oldboy密码

    image

    定时任务

    1、什么是定时任务

    类似闹钟
    Linux下面定时执行任务
        备份 流量低谷期(人少的时候)
        脚本/命令
    
    

    2.定时任务分类

    crontab(cronie) 工作必会
    anacron    适用于 服务器7*24小时运行
    atd        一次性的定时任务
    
    

    3.crontab

    系统的定时任务
      配置文件  /etc/crontab
      目录
        /etc/cron.hourly      这个目录内容系统定时任务 会小时执行
        /etc/cron.daily       这个目录内容系统定时任务 会每天执行
        /etc/cron.monthly     这个目录内容系统定时任务 会月执行
        /etc/cron.weekly      这个目录内容系统定时任务 会每周执行
    
    >如果中毒了
    定时检查
    存放开机自启动
    
    

    4.日志切割

    系统定时对系统日志 进行切割(日志切割/日志轮询)防止单个日志过大
    系统定时任务+logroate(后期会讲)
    
    
    无名英雄 --->日志切割
    [11:45 root@oldboy ~]# ll /var/log/messages* /var/log/secure* /var/log/cron*
    -rw------- 1 root root   4610 Apr 26 11:40 /var/log/cron
    -rw------- 1 root root  17622 Apr 21 18:47 /var/log/cron-20190421
    -rw------- 1 root root  26236 Apr 24 18:18 /var/log/cron-20190424
    -rw------- 1 root root 673675 Apr 26 11:40 /var/log/messages
    -rw------- 1 root root 254643 Apr 21 18:47 /var/log/messages-20190421
    -rw------- 1 root root 808680 Apr 24 18:18 /var/log/messages-20190424
    -rw------- 1 root root 122712 Apr 26 11:17 /var/log/secure
    -rw------- 1 root root   3102 Apr 21 17:07 /var/log/secure-20190421
    -rw------- 1 root root  44285 Apr 16 15:09 /var/log/secure-20190424
    
    

    5.用户自己的定时任务※

    crontab -l
        list 查看
        查看当前用户的定时任务
    crontab -e
        edit 编辑
        修改当前用户的定时任务
    
    

    查看和修改文件:

    crontab -l        cat /var/spool/cron/root
    crontab -e        vi /var/spool/cron/root
    
    

    没有定时任务:

    [11:53 root@oldboy ~]# crontab -l
    no crontab for root
    [11:55 root@oldboy ~]# crontab -e
    no crontab for root - using an empty one    没有定时任务,给创建一个 
    
    

    保存退出时出现更新定时任务规则:installing new crontab

    "/tmp/crontab.gAm8Hw" 1L, 7C written
    crontab: installing new crontab
    "/tmp/crontab.gAm8Hw":1: bad minute
    errors in crontab file, can't install.
    Do you want to retry the same edit? 
    
    

    ※定时任务格式

    编写定时任务的语法:

    * 号

    # .---------------- 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)
    
    
        * * * * *    (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
        第六列:要执行的任务命令或程序
    
    

    / 号

        每隔xx分钟
        */2 * * * *  每2分钟
        */1 * * * * date +%F_%T >>/tmp/time.log
    
    

    每隔1分钟执行一次时间命令追加到time.log中

    检查结果

    看文件的内容 cat /tmp/time.log

    image

    看日志tail -f /var/log/cron

    image

    练习:每天晚上12点打包备份/etc目录到/tmp下

    周期性的执行任务计划的软件,linux****定时任务的常用软件 crond****。
    2****、作用:使用定时任务软件,可以每天、每小时按你需求重复的执行一项任务。
    例如:保证数据不丢失,需要备份,都是0点以后,2点爬起来备份,4点以后睡觉。
    需要写一个程序实现自动备份,然后让定时任务软件帮你执行
    相当于一个闹钟。
    3****、怎样用:
    (1)系统的定时任务
    1.不用管理员干预,系统自动执行。
    2.也可以利用系统任务为管理员服务。
    
    
     ll /var/log/messages*
    
    

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

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

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

    systemctl start crond.service
    systemctl stop crond.service
    systemctl status crond.service
    开启自启动:
    systemctl disable crond.service
    systemctl enable crond.service
    
    

    特殊符号:
    *表示 每 的意思
    -连续区间 1-10
    00 8-23 * * * cmd
    列举 1,2,3,4,8
    00 1,2,3,4,8 * * * cmd
    /n n是数字
    n代表自然数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成

    相关文章

      网友评论

          本文标题:24—sudo的切换和定时任务

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