上节余留
一、suid
1、 suid功能是针对二进制命令或程序的,必能用在Shell等类似脚本文件上。
2
用户或属主对应的前三位权限的X位上,如果有s就表示具备suid权限。
3、suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有和命令对应属主(一般位root管理员)一样的身份和权限(默认)。
4、二进制命令程序需要有可执行权限x配合才行。
5、suid对应的身份和权限仅在程序命令执行过程中有效。
6、suid是一把双刃剑,是一个比较危险的功能,对系统安全有一定威胁,企业里用户授权可以使用shdo等代替suid功能
7、在进行安全优化时,系统中默认设置了suid权限的命令要取消掉
二、sgid
1、sgid基于目录的作用:
让不同的人创建文件属于相同的用户组,从而可以互相共享文件的权限
2、对二进制命令或程序来说,sgid和suid的功能基本相同,唯一的区别是suid获得的是命令所属用户的身份和权限,而sgid是或得命令所属用户组的身份权限。
================================================================
12.9 本章重点
1)Linux基本9位权限之文件和目录权限详细说明。
2)Linux基本9位权限之字符和数字(8进制)权限知识。
3)权限及用户用户组属性修改命令chmod、chown、chgrp。
4)默认权限umask以及系统目录安全案例。
5)特殊权限Suid知识掌握,Sgid和sticky知识了解即可。
==========================================================================
13章Linux定时任务
1、什么是定时任务?
周期性执行任务的计划软件,Linux定时任务的常用软件crond
2、作用:使用定时任务软件,可以每天每小时按你需求重复的执行一项任务工作。
eg:备份 都是后半夜自动备份
需要写一个程序实现自动备份,然后让定时任务软件帮你执行
3、怎样用
(1)用户定时任务计划
在Linux系统中
cron是定时任务的软件名
crond是服务进程名,正真实现定时任务服务
crontab是用来设置定时任务规则的配置命令
想要配置定时任务,首先启动crond服务
systemctl start crond.service
systemctl stop crond.service
systemctl status crond.service
开启自启动:
systemctl disable crond.service
systemctl enable crond.service
crontab命令是用来设置定时任务规则的配置命令。
内容存放哪里了。定时任务内容存放的位置/var/spool/cron/
以当前用户名作为文件名
-l l列表 查看已经设置的定时任务*
-e edit 编辑定时任务*
-u user 查看特定用户下定时任务
root:
crontab -l == cat /var/spool/cron/root
crontab -e == vim /var/spool/cron/root
(2)系统定时任务计划
a、不用管理员干预,系统自动执行
b、也可以利用系统任务为管理员服务
4、编写定时任务的语法:
# 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 eek (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
第六列:要执行的任务命令或程序
特殊符号:
* 表示每一 eg:每一天,每一周
00 23 * * * cmd
- 连续区间
, 列举1,2,3,5,9 cmd
/n n是数字
即“每隔n单位时间” eg:每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
5、实践:
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
/dev/null 黑洞设备
MH370>/dev/null
&>/dev/null 等价>/dev/null 2>&1
[root@oldboyedu ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null
范例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
6、生产环境下的定时Cron书写要领
1 为定时任务 加注释
2 所有的定时任务尽量以脚本的方式执行
3、在执行的脚本前加上/bin/sh
4、定时任务中命令或脚本的结尾加>/dev/null 2>&1
5 在指定用户下执行相关定时任务
6生产任务计划中不要随意打印输出信息,有输出的想法去掉。
7定时任务执行的脚本要存放在规范路劲下
8 配置定时任务时要规范操作过程,减少输出
9 定时任务脚本中程序命令
10 时间变量%号要用反斜线转义(只有定时任务里是命令是需要)
11若脚本中调用了系统变量时,要重新定义
12 出错无法执行,就检查/var/log/cron日志
下周:
=============================================
用户管理:1天
磁盘管理:2-3天
三剑客深入:1-2天
Shell基础:2天
进程管理命令、安装命令 1天
============================
Linux网络基础:4天 2天基础 两天实践
第一大阶段结束:
第二大阶段,搭建集群。