第1章 回顾昨天
1.1 权限报错问题
基础权限9位3位特殊共12位
[oldboy@show ~]$ whoami
oldboy
[oldboy@show ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[oldboy@show ~]$ rm -f /etc/passwd
rm: cannot remove `/etc/passwd': Permission denied
[oldboy@show ~]$ ls -l /tmp/oldboy.txt
-rw-r--r-- 1 root root 6 Jun 26 22:32 /tmp/oldboy.txt
[oldboy@show ~]$ echo hello oldboy >>/tmp/oldboy.txt
-bash: /tmp/oldboy.txt: Permission denied
[root@oldboyedu-39-nb ~]# su - oldboy
[oldboy@oldboyedu-39-nb ~]$ ls /root/
ls: cannot open directory /root/: Permission denied
[oldboy@oldboyedu-39-nb ~]$ ls -d /root/
/root/
[oldboy@oldboyedu-39-nb ~]$ ls -ld /root/
dr-xr-x---. 5 root root 4096 Aug 3 21:28 /root/
报错的原因及排除过程:
1.查看文件或目录的权限
2.查看当前用户与这个文件或目录的关系
3.当前用户对 这个文件或目录有什么权限
因为查看目录里面的内容 需要对这个目录拥有 rx权限
[root@oldboyedu-39-nb ~]# cp /etc/hosts{,.bak}
[oldboy@show ~]$ rm -f /etc/asswd
rm: cannot remove `/etc/passwd': Permission denied
[oldboy@oldboyedu-39-nb ~]$ m -f /etc/hosts
rm: cannot remove `/etc/hosts': Permission denied
[oldboy@oldboyedu-39-nb ~]$ m -f /etc/hosts
rm: cannot remove `/etc/hosts': Permission denied
[oldboy@oldboyedu-39-nb ~]$ ls -l /etc/hosts
-rwxrwxrwx. 2 root root 216 May 20 22:57 /etc/hosts
linux删除一个文件的权限 要看 文件所在目录的权限
文件名存放在 文件所在目录的block中。
1.查看文件或目录的权限
ls -ld /etc/
drwxr-xr-x. 78 root root 4096 Aug 3 21:44 /etc/
2.查看当前用户与这个文件或目录的关系
3.当前用户对 这个文件或目录有什么权限
oldboy对 /etc目录 有rx权限
删除一个文件的权限 你需要对这个目录拥有w权限
[oldboy@oldboyedu-39-nb ~]$ echo hello >>/tmp/oldboy.txt
-bash: /tmp/oldboy.txt: Permission denied
[oldboy@oldboyedu-39-nb ~]$ echo hello >>/tmp/oldboy.txt
-bash: /tmp/oldboy.txt: Permission denied
[oldboy@oldboyedu-39-nb ~]$ ls -l /tmp/oldboy.txt
-rw-r--r-- 1 root root 0 Aug 3 21:54 /tmp/oldboy.txt
小结:
1.修改文件 查看文件的内容 需要对文件有 rw
2.删除 创建一个文件 需要对文件所在目录拥有 wx rwx
1.2 怎么样让网站更佳安全
1.文件644 root root
2.dir 755 root root
3.上传目录 upload
4.file 644 www www
5.dir 755 www www
1.3 文件系统权限
chattr lsattr
a
i
1.4 排查系统负载高 cpu 内存
top
ps -ef
kill #PID
第2章 定时任务
定时任务相当闹钟
etc-2017-05-20-02.tar.gz
定时任务 每隔相同的时间 每天 每小时 做相同的事情(命令 脚本*****) 备份
2.1 rpm 扩展 如何查询软件包的内容和软件包属于哪个大礼包
有时候一个功能可能只是软件包中的一个 一部分
2.1.1 查看crond属于哪个大礼包
crond属于哪个大礼包
rpm -qf crond命令的绝对路径
[root@oldboyedu-40 ~]# rpm -qf `which crond `
cronie-1.4.4-16.el6_8.2.x86_64
2.1.2 如何查看软件包里面的内容
rpm -ql
[root@oldboyedu-40 ~]# rpm -ql cronie
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.deny
/etc/pam.d/crond
/etc/rc.d/init.d/crond
/etc/sysconfig/crond
/usr/bin/crontab
/usr/sbin/crond
/usr/share/doc/cronie-1.4.4
/usr/share/doc/cronie-1.4.4/AUTHORS
/usr/share/doc/cronie-1.4.4/COPYING
/usr/share/doc/cronie-1.4.4/ChangeLog
/usr/share/doc/cronie-1.4.4/INSTALL
/usr/share/doc/cronie-1.4.4/README
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/man/man8/cron.8.gz
/usr/share/man/man8/crond.8.gz
/var/spool/cron
2.1.3 实例:查询ifconfig 属于哪个软件包
[root@oldboyedu-40 ~]# rpm -qf $(which ifconfig )
net-tools-1.60-114.el6.x86_64
[root@oldboyedu-40 ~]# rpm -ql net-tools
[root@oldboyedu-40-nb ~]# rpm -qf `which ifconfig`
net-tools-1.60-114.el6.x86_64
[root@oldboyedu-40-nb ~]# rpm -ql net-tools
安装命令时需要把大礼包全安装上吗
which 和 whereis 都是找系统里面本身有的 如果which和whereis 都没结果 rpm -qf 还能找么
第3章 系统定时任务
3.1 /etc/crontab文件和crontab -e命令区别
1、格式不同
前者
# For details see man 4 crontabs
# 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
# | | | | |
# * * * * * user-name command to be executed
后者
#50 1 * * * command
2、使用范围
修改/etc/crontab这种方法只有root用户能用,这种方法更加方便与直接直接给其他用户设置计划任务,而且还可以指定执行shell等等,
crontab -e这种所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename
3.服务重启
1 /etc/init.d/crond restart
2 service crond restart
1、crontab 会进行语法检查,vi 不会
2、听说有些 os 的 crond 不会重读配置,所以用 service 重启
crontab -e是某个用户的周期计划任务;/etc/crontab是系统的周期任务
1. crontab -e 与 /etc/crontab 修改语法格式不一样,后者多一个 user 指定
2. 不管用 crontab -e or 改 /etc/crontab 都不需要重新启动 crond 服务
01 22 * * * /sbin/shutdown -h now
执行的结果都是一样, 一般LINUX 都用shutdown -h now 也可以init 0
init 0在UNIX用得比较多,
关机需要root的身份在可以执行,
lz可以选取方法操作
方法1
换到root 的身份
su - root
crontab -e (按a增加下)
01 22 * * * /sbin/shutdown -h now (或01 22 * * * /sbin/init 0)
保存退出即可以
方法2 vi /etc/crontab 在里面插入
01 22 * * * root /sbin/shutdown -h now
或 01 22 * * * root /sbin/init 0
/var/log/messages 系统日志文件
/var/log/messages-20170501
日志切割---日志轮询----系统的定时任务+logrotate(管理日志文件)
安全信息和系统登录与网络连接的信息:/var/log/secure
[root@~]# ls -ld /var/log/secure*
-rw------- 1 root root 23K 2017-09-07 08:12 /var/log/secure
-rw-------. 1 root root 735 2017-08-20 09:38 /var/log/secure-20170820
-rw------- 1 root root 9.3K 2017-08-25 03:00 /var/log/secure-20170825
-rw------- 1 root root 2.4K 2017-08-27 20:46 /var/log/secure-20170827
-rw------- 1 root root 22K 2017-09-03 06:36 /var/log/secure-20170903
[root@oldboyedu-40 ~]# ll /etc/cron.daily/
total 24
-rwx------. 1 root root 180 Jul 10 2003 logrotate
-rwx------. 1 root root 927 Mar 22 08:53 makewhatis.cron
-rwx------. 1 root root 189 Jan 26 2015 mlocate.cron
-rwxr-xr-x. 1 root root 2126 Jul 19 2013 prelink
-rwxr-xr-x. 1 root root 563 Nov 23 2013 readahead.cron
-rwxr-xr-x. 1 root root 433 Nov 7 2015 tmpwatch
[root@oldboyedu-40 ~]# cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
3.2 用户定时任务
[root@oldboyedu-40 ~]# crontab -l
no crontab for root
[root@oldboyedu-40 ~]# #root用户没有定时任务
3.3 使用定时任务
3.3.1 查看定时任务是否运行
[root@oldboyedu-40 ~]# /etc/init.d/crond status
crond (pid 8913) is running...
[root@oldboyedu-40 ~]# ps -ef |grep crond
root 8913 1 0 14:49 ? 00:00:01 crond
root 33383 32849 0 22:52 pts/2 00:00:00 grep crond
[root@oldboyedu-40 ~]# ps -ef |grep sshd
root 8791 1 0 14:49 ? 00:00:00 /usr/sbin/sshd
3.3.2 定时任务是否开机自启动
[root@oldboyedu-40 ~]# chkconfig |grep crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
3.3.3 crontab怎么使用
crontab命令使用
-e edit 编辑当前用户的定时任务
vi /var/spool/cron/root
-l list显示当前用户的定时任务
cat /var/spool/cron/root
3.3.4 为何使用crontab命令
1.有语法检查功能 格式不对
2.方便
3.4 定时任务相关的文件
###/var/spool/cron/
###/var/log/cron
3.5 linux中查看日志
grep /egrep
less
tail /tail -f
head
* * * * * 命令
3.6 每五分钟同步一下系统的时间
3.6.1 第一个里程碑-用什么命令
[root@oldboyedu-40 ~]# ntpdate ntp1.aliyun.com
7 Sep 10:52:44 ntpdate[33569]: step time server 182.92.12.11 offset 2286907.971444 sec
[root@oldboyedu-40 ~]#
3.6.2 第二个里程碑-定时任务
[root@oldboyedu-40 ~]# crontab -l
#sync time by li 20170101
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1
3.6.3 第三个里程碑-检查结果
date -s "10year"
Tue Sep 7 10:56:03 CST 2027
3.7 每天的上午7点到上午11点 每一个小时运行CMD命令
定时任务中表示小时 每个小时 在分钟上面加上00 表示整点
3.7.1 格式:
* 07-11 * * * CMD ###错误
00 07-11 * * * CMD ###OK
00 07-11/1 * * * CMD ###OK
00 07-11 * * * CMD ###OK
00 07,08,09,10,11 * * * CMD
3.8 早上7点到11点还有晚上10点到12点
00 07-11,22-00 * * * CMD
3.9 每分钟把自己的名字 追加到 /oldboy/oldboy.txt
3.9.1 第一个里程碑-命令
[root@oldboyedu-40 ~]# mkdir -p /oldboy
[root@oldboyedu-40 ~]# echo oldboyedu >>/oldboy/oldboy.txt
[root@oldboyedu-40 ~]# cat /oldboy/oldboy.txt
oldboyedu
3.9.2 第二个里程碑-定时任务
[root@oldboyedu-40 ~]# crontab -l |tail -2
#print name by li 20170101
* * * * * echo oldboyedu >>/oldboy/oldboy.txt 2>&1
3.9.3 第三个里程碑-检查
[root@oldboyedu-40 ~]# tail /oldboy/oldboy.txt
oldboyedu
[root@oldboyedu-40 ~]# tail /oldboy/oldboy.txt
oldboyedu
[root@oldboyedu-40 ~]# tail -2 /var/log/cron
Sep 7 12:06:01 oldboyedu-40 crond[8913]: (root) RELOAD (/var/spool/cron/root)
Sep 7 12:06:01 oldboyedu-40 CROND[35124]: (root) CMD (echo oldboyedu >>/oldboy/oldboy.txt 2>&1)
[root@oldboyedu-40 ~]# tail /oldboy/oldboy.txt
oldboyedu
oldboyedu
3.9.4 正确格式:
* * * * * /bin/echo "oldboy" >>/oldboy/oldboy.txt >/dev/null 2>&1
3.9.5 姿势:
定时任务中 命令/脚本 定向到空 >/dev/null 2>&1
定时任务中 命令/脚本 追加到文件中 >>/tmp/oldboy.log 2>&1
第4章 扩展
logroate 如何切割日志