一、sudo 临时让用户获得root权限
image1. 怎么用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 查看当前用户有哪些权限
imagegrep 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 权限
image3第三步:在oldboy用户下用sudo ls 查看/root
imageimage
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分钟执行一次任务可以写成
网友评论