....(前面省略)....
%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
- visudo进行配置sudo
- 支持的用户/群组
- 免密码使用sudo
- visudo进行配置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相同。
- atd是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
- 与at的限制一样
- crontab使用
- crontab [-u username] [-l|-e|-r]
- 分 时 日 月 周 |<==============指令串=======>|
- anacron
- 解决关机时没有执行的crontab任务
- 每天开机后立即执行anacron,执行crontab后,anacron停止
- at :仅执行一次就结束