SUDO
sudo 执行的重点是:『 能否使用 sudo 必须要看 /etc/sudoers 的设定值, 而可使用 sudo者是透过输入用户自己的密码来执行后续的指令串』由于能否使用与/etc/sudoers 有关, 所以我们当然要去编辑 sudoers 档案啦!不过,因为该档案的内容是有一定的规范的,因此直接使用 vi 去编辑是不好的。 此时,我们得要透过 visudo 去修改这个档案喔!
visudo 与 /etc/sudoers
为什么要用visudo,因为/etc/sudoers 有固定语法,如果用vi 编辑 一不小心,语法错误了会导致sudo指令的不良后果;而visudo会检查语法咯;
[root@www ~]# visudo
....(前面省略)....
root ALL=(ALL) ALL <==找到这一行,大约在 76 行左右
vbird1 ALL=(ALL) ALL <==这一行是你要新增的!
....(前面省略)....
visudo 只是利用vi 呼出 /etc/sudoers 来修改,
visudo
使用者账号 登入者的来源主机名=(可切换的身份) 可下达的指令
root ALL=(ALL) ALL <==这是默认值
上面这一行的四个组件意义是:
1. 系统的哪个账号可以使用 sudo 这个指令的意义,默认为 root 这个账号;
2. 当这个账号由哪部主机联机到本 Linux 主机,意思是这个账号可能是由哪一部网路主机联机过来的, 这个设定值可以指定客户端计算机(信任用户的意思)。默认值 root 可来自任何一部网络主机
3. 这个账号可以切换成什么身份来下达后续的指令,默认 root 可以切换成任何人;
4. 可用该身份下达什么指令?这个指令请务必使用绝对路径来写。 预设root 可以切换任何
利用群组 处理visudo
简单来讲 就是让 某个群组均支持sudo指令,这样讲需要sudo指令的用户支持这个群组就好了;
[root@www ~]# visudo <==同样的,请使用 root 先设定
....(前面省略)....
%wheel ALL=(ALL) ALL <==大约在 84 行左右,请将这行的 # 拿掉!
# 在最左边加上 % ,代表后面接的是一个『群组』
免密码方式使用sudo
[root@www ~]# visudo <==同样的,请使用 root 先设定
....(前面省略)....
%wheel ALL=(ALL) NOPASSWD: ALL <==大约在 87 行左右,请将 # 拿
掉!
# 在最左边加上 % ,代表后面接的是一个『群组』
在可下达指令 ALL前 增加NOPASSWD 即可免密码使用sudo;
有限制的指令操作
当一般用户有了root权限,如果他更改了root密码这时候 会很头疼;所以要限制;
[root@www ~]# visudo <==注意是 root 身份
myuser1 ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
用! 和 通配符,保证了不能输入 passwd 和 passwd root,保证了不能修改root密码噢;
值得研究的一点是,Ubuntu中visudo 并没有做限制,而他的用户却只能修改自身密码;Ubuntu是在哪里做了限制呢?
PAM 模块简介
Pluggable Authentication Modules 嵌入式模块
PAM 可以说是一套应用程序编程接口 (Application Programming Interface, API),他提供了一连串的验证机制,只要使用者将验证阶段的需求告知 PAM 后, PAM 就能够回报使用者验证的结果 (成功或失败)。
PAM 用来进行验证的数据称为模块 (Modules),每个 PAM 模块的功能都不太相同。举例来说, 我们在本章使用 passwd 指令时,如果随便输入字典上面找的字符串, passwd 就会回报错误信息了!这是为什么呢?这就是 PAM 的 pam_cracklib.so 模块的功能!他能够判断该密码是否在字典里面! 并回报给密码修改程序,此时就能够了解你的密码强度了。
主机上用户信息传递
查询使用者: w, who, last, lastlog
使用者对谈: write, mesg, wall
大量建账户当然是要用脚本了,关键语句:echo $username | passwd --stdin $username;将用户名作为密码;
第十五章,磁盘配额(Quota)与进阶文件系统管理
Quota
磁盘容量使用根据公平,举例:/home是独立的partition有10G,而/home 下总共有30个用户,这样每个用户应该333M,偏偏有一个用户在自己家目录里放了很多8G的电影,这样其他用户就很不爽不够用啊;所以Quota就是来处理这个问题的;
quota 比较常使用的几个情况是:
针对 WWW server ,例如:每个人的网页空间的容量限制!
针对 mail server,例如:每个人的邮件空间限制。
针对 file server,例如:每个人最大的可用网络硬盘空间 (教学环境中最常见!)
上面是针对网络服务设计的,那么针对Linux系统主机有:
限制某一群组所能使用的最大磁盘配额 (使用群组限制):
限制某一用户的最大磁盘配额 (使用用户限制):
以 Link 的方式,来使邮件可以作为限制的配额 (更改 /var/spool/mail 这个路径):
第十六章 例行性工作排程(crontab)
linux 工作排程的种类:at crontab
at :仅执行一次就结束的排程
crontab :周期性执行指令的排程
Linux上常见的例行性工作:
进行登录档的轮替 (log rotate):
登录文件分析 logwatch 的任务:
建立 locate 的数据库:
whatis 数据库的建立:
RPM 软件登录文件的建立:
移除暂存档:
与网络服务有关的分析行为: 如果你有安装类似 WWW 服务器软件 (一个名为 apache 的软件),那么你的 Linux 系统通常就会主动的分析该软件的登录文件。 同时某些凭证与认证的网络信息是否过期的问题,我们的Linux 系统也会很亲和的帮你进行自动检查!
atd 的启动与 at 运作的方式:
atd是at的服务,at是具体指令;
[root@www ~]# /etc/init.d/atd restart
正在停止 atd: [ 确定 ]
正在激活 atd: [ 确定 ]
chkconfig :
开机时自启动atd服务
[root@www ~]# chkconfig atd on
at的运作方式:
at产生索要运作的工作,并将这个工作以文本文件的方式写入/var/spool/at目录内,该工作就能够等待atd这个服务取用与执行了;
at的限制管理:/etc/at.allow /etc/at.deny
实际上加上上述两个文档之后,at的工作情况是这样的:
1. 先找寻 /etc/at.allow 这个档案,写在这个档案中的使用者才能使用 at ,没有在这个档案中的使用者则不能使用 at (即使没有写在 at.deny 当中);
2. 如果 /etc/at.allow 不存在,就寻找 /etc/at.deny 这个档案,若写在这个 at.deny 的使用者则不能使用 at ,而没有在这个 at.deny 档案中的使用者,就可以使用 at 咯;
3. 如果两个档案都不存在,那么只有 root 可以使用 at 这个指令。
[root@www ~]# at [-mldv] TIME
[root@www ~]# at -c 工作号码
选项与参数:
-m :当 at 的工作完成后,即使没有输出讯息,亦以 email 通知使用者该工作已完成。
-l :at -l 相当与 atq,列出目前系统上面的所有该用户的 at 排程;
-d :at -d 相当与 atrm ,可以取消一个在 at 排程中的工作;
-v :可以使用较明显的时间格式栏出 at 排程中的任务栏表;
-c :可以列出后面接的该项工作的实际指令内容。
TIME:时间格式,即什么时候要进行at这项工作,格式有:
HH:MM ex>04:00
HH:MM YYYY-MM-DD ex>04:00 2009-03-17
HH:MM[am|pm] [Month] [Date] ex>04pm March 17
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex>now + 5 minutes
ex>04pm + 3 days
注意:在设置完例程之后 ctrl+d 才算真正的设置好了,注意不能用ctrl+c,ctrl+c是用来结束的;
实际上 at -c 显示的是 /vat/spool/at目录下面的 一个通常以a开头的可执行文件,当然你也可以把 指令直接写在这个执行文档中,因为at服务会直接拿这个文档执行噢;
人性化的batch:系统有空时才进行背景任务;
他会在CPU 工作负载小于0.8的时候才工作;
工作负载说的是CPU单一时间内所负责的工作数量,和CPU使用率不同;负载指的是单一时间CPU负责的任务数量,即单一时间内有多少任务在等待实用CPU;
至于使用方法和at 相同;
循环执行的工作排程:
cron(crond)这个服务
crontab 这个指令
限制:
/etc/cron.allow:将可以使用 crontab 的账号写入其中,若不在这个档案内的使用者则不可使用 crontab;
/etc/cron.deny:将不可以使用 crontab 的账号写入其中,若未记录到这个档案当中的使用者,就可以使用crontab 。
用crontab指令建立工作会被记录到 /var/spool/cron里面去,而且是以账号来作为判别的,root使用crontab后,工作记录到/var/spool/cron/root里面去;
但不要使用vi直接编辑,因为若语法作为,会导致corn这个服务无法执行;另外cron自行的每一项工作都会记录到/var/log/cron这个登录档案中,所以可以看看这个档案,来判断自己有没有被黑噢;
看来这个/var/log/corn是很重要的啦;
[root@www ~]# crontab [-u username] [-l|-e|-r]
选项与参数:
-u :只有 root 才能进行这个任务,亦即帮其他使用者建立/移除 crontab 工作
排程;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除所有的crontab 的工作内容,若仅要移除一项,请用 -e 去编辑。
范例一:用 dmtsai 的身份在每天的12:00 发信给自己
[dmtsai@www ~]$ crontab -e
# 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分 时 日 月 周 |<==============挃令串=======>|
特殊字符代表意义:
*(星号) 代表任何时刻都接受的意思!举例来说,范例一内那个日、月、周都是 * , 就代表着『不论何月、何日的礼拜几的 12:00 都执行后续指令』的意思!
,(逗号) 代表分隔时段的意思。举例来说,如果要下达的工作是 3:00 与6:00 时,就会是:0 3,6 * * * command时间参数还是有五栏,不过第二栏是 3,6 ,代表 3 与 6 都适用!
-(减号) 代表一段时间范围内。举例来说, 8 点到 12 点之间的每小时的 20 分都进行一项工作:20 8-12 * * * command仔细看到第二栏变成 8-12 喔!代表 8,9,10,11,12 都适用的意思!
/n(斜线) 那个 n 代表数字,亦即是『每隔 n 单位间隔』的意思,例如每五分钟进行一次,则:*/5 * * * * command 注意此时*/5 是第一栏噢;
注意:时间的五栏 均要以空格 分开噢;;
anacron
以天为单位或者是开机以后立刻执行anacron,他会侦测停机期间应该进行但是没有进行的crontab任务,并将该任务执行一遍后,anacron就自动停止;
旨在解决关机时没有执行的crontab任务;其实anacron也是透过crontab来运行的,所以其用作时间通常有两个,一个是系统开机期间,一个是写入crontab的排程中。
anacron 与 /etc/anacrontab
anacron其实是一支程序并非一个服务,这支程序在centos当中已经写入crontab的进程中;
重点回顾
系统可以透过 at 这个指令来排程单一工作的任务!『 at TIME』为指令下达的方法,当 at 进入排程后, 系统执行该排程工作时,会到下达时的目录进行任务;
at 的执行必须要有 atd 服务的支持,且 /etc/at.deny 为控制是否能够执行的使用者账号;
透过 atq, atrm 可以查询与删除 at的工作排程;
batch 与 at 相同,不过 batch 可在 CPU 工作负载小于 0.8 时才进行后续的工作排程;
系统的循环例行性工作排程使用 cron 这个服务,同时利用 crontab -e 及 /etc/crontab 进行排程的安排;
crontab -e 设定项目分为六栏,『分、时、日、月、周、挃令』为其设定依据;
/etc/crontab 设定分为七栏,『分、时、日、月、周、执行者、指令』为其设定依据;
anacron 配合/etc/anacrontab 的设定,可以唤醒停机期间系统未进行的 crontab 任务!
总结
- sudo
- 主机用户信息传递
- 查询使用者:w,who,last,lastlog
- 使用者对谈:write,mesg,wall
- 大量脚本创建用户
- echo $username | passwd --stdin $username
- quota--磁盘容量公平使用
- www server ,每个人的网页空间的容量限制
- mail server,每个人邮件空间限制
- 限制群组/用户的最大磁盘配额
- 例行工作
- at :仅执行一次就结束
- atd是at的服务
- /etc/init.d/atd restart
- 开机自启动:chkconfig atd on
- 运作方式,
- at产生所要运行的工作,并以文本方式写入/var/spool/at内
- atd这个服务自动取用与-l执行
- at使用者限制管理:/etc/at.allow /etc/at.deny
- at.allow,存在,则只能是该文件中有的用户才能使用
- at.allow不存在,则不在/etc/at.deny的用户可以使用
- 两个文件都不存在,则只有root才能使用
- at 使用
- at [-mldv] TIME
- 以ctrl+d,结束设置
- batch,可以人性化的在cpu负载较低才启动任务;使用方法和at相同。
- crontab
- cron(crond)是服务
- 运行方式
- crontab产生的工作写到 /var/spool/cron,且是以账号来分割如root则写到/var/spool/cron/root
- 一般不要修改/var/spool/cron/root中内容因为,有特殊语法
- cron每项工作都会记录到/var/log/cron这个档案,所以可以看看这个文案来看看,自己有没有被黑
- crontab使用者限制:/etc/cron.allow /etc/cron.deny
- crontab使用
- crontab [-u username] [-l|-e|-r]
- 分 时 日 月 周 |<==============指令串=======>|
- anacron
- 解决关机时没有执行的crontab任务
- 每天开机后立即执行anacron,执行crontab后,anacron停止