第一、访问控制列表
例子1:
用户 属组 权限
root root: rwx
tom tom: rw-
bean bean: r--
jack jack: ---
hellen root: rw-
moto bean: r-x
# getfacl logout.txt
# file: logout.txt
# owner: root
# group: root
user::rwx <---文件拥有者的权限
user:tom:rw- <---指定某个用户的具体权限,因为这里出现了user:tom:关键字控制
user:bean:r-- <---指定某个用户的具体权限
group::rw- <--- ::之间没有任何名字就代表控制文件拥有组的权限
group:bean:r-x
mask::rwx
other::---
归纳:判断一个用户对某个文件的权限的过程
1、该用户是否是这个文件的拥有者,如果是,就直接按拥有者的权限,也就ls -l 可以直接判断出来的权限,或者getfacl 出来之后看到的user::??? 对应的权限,判断完成。如果不是就接着下面的步骤判断
2、如果该用户不是文件的拥有者,就看看是否存在针对该用户的具体的访问控制,如果有,就根据acl的设定决定他的权限,判断完成。如果没有,再接着第三步判断
3、如果没有针对该用户的具体acl设定,那么就判断这个用户是否属于文件的拥有组里的成员,如果是,就按拥有组的权限(group::???),判断完成。否则,接着第四步骤
4、如果用户不属于文件的拥有组里的成员,就看看是否有针对该用户所属于组的具体的acl控制,如果有就按照具体的acl设定。否则第五步
5、以上就不匹配就是代表他处于所有人的角色,权限也就是所有人的权限,具体的权限可以直接ls -l得到,或者getfacl 结果中other::???
setfacl -m user::rwx,user:tom:rw,user:bean:r,group::rw,group:bean:rx,other::--- logout.txt
例子2:
用户 属组 权限
root root: r-x
tom tom: r--
bean bean: rw-
jack jack: -w-
hellen root: r-x
moto bean: --x
# getfacl logout.txt
# file: logout.txt
# owner: root
# group: root
user::r-x <---文件拥有者的权限
user:tom:r-- <---指定某个用户的具体权限,因为这里出现了user:tom:关键字控制
user:bean:rw- <---指定某个用户的具体权限
group::r-x <--- ::之间没有任何名字就代表控制文件拥有组的权限
group:bean:--x
mask::rwx
other::-w-
setfacl -m user::rx,user:tom:r,user:bean:rw,group::rx,group:bean:x,other::w ./logout.txt
例子3:
用户 属组 权限
root root:
tom tom:
bean bean:
jack jack:
hellen root:
moto bean:
# getfacl logout.txt
# file: logout.txt
# owner: root
# group: root
user::r-- <---文件拥有者的权限
user:tom:r-x <---指定某个用户的具体权限,因为这里出现了user:tom:关键字控制
user:bean:--- <---指定某个用户的具体权限
group::r-- <--- ::之间没有任何名字就代表控制文件拥有组的权限
group:bean:-w-
mask::rwx
other::r--
# setfacl -m user::r,user:tom:rx,user:bean:-,group::r,group:bean:w,other::r ./logout.txt
例子4:
用户 属组 权限
root root:
tom tom:
bean bean: -w-
jack jack:
hellen root:
moto bean:
# getfacl logout.txt
# file: logout.txt
# owner: root
# group: root
user::r-- <---文件拥有者的权限 ,直接看这里,ls -l
user:tom:r-x <--- * 指定某个用户的具体权限,因为这里出现了user:tom:关键字控制
group::r-- <--- * ::之间没有任何名字就代表控制文件拥有组的权限
group:bean:-w- <--- *
mask::rwx
other::r--
# setfacl -m user::r,user:tom:rx,group::r,group:bean:w,other::r ./logout.txt
注意:在权限的判断过程中,拥有者和其他人的权限可以通过ls -l直接得到或者通过getfacl直接得到,不需要任何计算;其他的,包括拥有组,具体的某个组,具体某个用户他们的具体权限,还需要通过mask进行取交集(取相同)
tom r-x
mask rwx ==> r-x
group r--
mask rwx ==> r--
group:bean: -w-
mask rwx ===> -w-
例子5:
用户 属组 权限
root root: r--
tom tom: r--
bean bean: ---
jack jack: r--
hellen root: r--
moto bean: ---
# getfacl logout.txt
# file: logout.txt
# owner: root
# group: root
user::r-- <---文件拥有者的权限 ,直接看这里,ls -l
user:tom:r-x <--- * 指定某个用户的具体权限,因为这里出现了user:tom:关键字控制
group::r-- <--- * ::之间没有任何名字就代表控制文件拥有组的权限
group:bean:-w- <--- *
mask::r--
other::r--
tom : r-w
mask: r-- ==> r--
group:bean -w-
mask: r-- ==> ---
setfacl -m user::r,user:tom:rx,group::r,group:bean:w,other::r,mask::r ./logout.txt
真正的输出结果:
[root@dns test]# getfacl ./logout.txt
# file: logout.txt
# owner: root
# group: root
user::r--
user:tom:r-x #effective:r--
group::r--
group:bean:-w- #effective:---
mask::r--
other::r--
练习:
建立文件夹,/tmp/test/mydir , 属性root:bean,权限 777 ,文件夹下创建一个logout.txt文件,属性跟目录一样,权限664。
用户情况
moto 属于 bean 组
bean 属于 bean 组
tom 属于 tom 组
jack 属于 jack 组
要求: moto 不允许修改logout.txt文件 r-x
bean 允许修改和读取文件 rw-
tom 对文件没有任何权限 ---
jack 只允许修改文件,不允许读取和执行文件 -w-
思考: 这些用户能删除 logout.txt文件吗?如果可以,想拒绝这些用户删除logout.txt文件该如何操作,至少采用两种方法。
chmod o+t ./mydir
或
chmod 755 ./mydir
或
setfacle -m user:moto,bean,tom,jack:rx ./mydir
setfacl -b ./logout.txt 《-- 清空acl设定
man setfacl
======================================
Inode索引节点
1、索引节点是标识一个文件的存在,每新建一个文件系统都会为他创建一个inode (除了硬链接文件)
2、每个文件保存在磁盘上的是否,都分两部分,一部分就是保存在数据区域,另一部分就是inode信息,占用数据区域的磁盘空间。
软链接:
1、就相当于windows上的快捷方式;
2、他是一个独立的文件,有自己的inode信息 (a --> b , a和b都是独立文件)
软链接的文件内容就是它所指向文件的路径
3、可以对目录进行设定软链接
4、可以跨文件系统(跨分区)建立软链接
ln -s /etc/fstab ./slfs
硬链接:
1、它不是一个独立的文件,仅仅是在inode表添加多一个名字信息,不占用磁盘空间,与所连接的文件有相同的inode编号;
2、不可以对目录进行设定硬链接;
3、不可以跨文件系统建立硬链接;
---》 它相当于为文件建立一个冗余,不管删除哪一个文件,数据还是能继续访问
练习:
1、分别建立两个软链接和硬连接,软链接链接到别的分区上的文件,硬连接是否可以?
2、分别对/boot/grub/grub.conf 在/tmp/test/下建立软链接,在/boot/grub/下建立一个硬链接,分别使用ls -lih查看这三个文件的属性,对比一下,自己总结一下;删除 /boot/grub/grub.conf,输出软连接的时候,是否能正确输出内容,输出硬连接呢?练习完成,请还原。
3、在soft目录下有一个压缩文件rarlinux-3.7.1.tar.gz ,请使用
tar xvf rarlinux-3.7.1.tar.gz -C /usr/src 解压,这是一个rar的压缩工具,解压之后马上能使用 /usr/src/rar/rar 命令可以直接对文件进行压缩,现在想让rar这个命令能直接运行,而不用添加这么长的路径。
一般出现web服务器,或者是存放了大量小文件的分区,这些分区一般分区可用空间还有很多,但是却不能创建文件,原因就是索引节点inode空间满了,已经不能再创建新的inode信息。也就是说,软连接还可以用来解决索引节点空间满了的故障,也可以解决磁盘空间
=======================================
磁盘配额
可以用来限定用户使用某个分区的多少容量。 --ftp web nfs mail
注意:磁盘配额只能针对分区进行设定。
操作步骤:
1、新建分区,并格式化成ext3
2、使用磁盘配额参数挂载该分区
mount -o usrquota,grpquota /dev/sda9 /web
为了让这个分区以后都能支持磁盘配额,应该怎么操作? /etc/fstab
3、生成磁盘配额配置文件
quotacheck -cavug
-c 忽略已经存在的配置文件,重新生成
-a 扫描所有带有磁盘配参数挂载的分区,并生成配置文件
-v 显示整个过程
-u 支持用户的磁盘配额功能
-g 支持组的磁盘配额功能
产生两个配置文件 aquota.group aquota.user
4、编辑具体使用配额
# edquota -u tom
Disk quotas for user tom (uid 512): 1000 -> 1M
Filesystem blocks soft hard inodes soft hard
/dev/sda9 0 20000 22000 0 5 7
5、启用磁盘配额功能,让配置马上生效
quotaon /dev/sda9
6、查看用户使用磁盘的情况
repquota -a 查看所有的进行了磁盘配额的分区的使用情况,但要注意,第一次查看的时候,你会发现有些新设定的用户的配置根本没有反映出来,原因就是这些用户并没有在分区上创建任何文件。要看到他们的使用情况和配置,就至少需要他们创建一个文件。
[tom@dns web]$ dd if=/dev/zero of=./tom_10M count=10 bs=1M
练习:
回去查看 man 帮助,或者上互联网查看资料,了解关于 组的磁盘配额的设定,明天提问
例子2:
针对用户组的磁盘配额限制
注意: 挂载的时候 grpquota
生成配置文件的时候必须有 -g 参数 quotacheck -cavug
要正确对组进行限制,必须所有组成员的默认首先组是该组(gid相同)
1、edquota -g tom
2、quotaon /dev/sda9
3、repquota -a
重新添加了配额设定,应该关闭再启动配额
tom -- tom组
bean -- tom组
要求: 限定tom组最多能使用20M空间,验证一下,是每个用户单独使用20M还是所有组成员加起来最多使用20M ? 如果是后者,怎么解决使用不均衡现象。
其他命令:
edquota -t
edquota -T -u tom 注意区分以上两个命令的区别
edquota -p tom -u bean 把tom的配置复制一份给bean
========================================
简单的文本处理命令
sort 排序命令
-n 按数值大小来排序
sort -t: -k1,1 -k3,3n s1.txt <-- -t 指定分割符, -k 指定从哪列开始到哪列结束
uniq <--唯一的意思,作用: 去除连续的重复行
wc -l 统计行数
[root@dns test]# cat s4.txt
hello you
welcome
[root@dns test]# wc s4.txt
2 3 18 s4.txt
行数 单词数 字符数(包含换行符,每行算一个)
三个命令结合使用
# sort s3.txt | uniq | wc -l
cut
cut -d: -f1,2 s1.txt
======================================================
进程管理
ps
ps -ef
ps aux
进程的状态
S 代表 Sleep 进程正在睡眠,可中断睡眠
R 代表 Runing 进程正在运行
D 代表不可中断的睡眠
T 代表Stop ,暂停状态,程序停止除里一切
Z 代表僵尸进程 父进程死了,子进程来不及释放
需要留意的就是 USER ,PID字段,还有进程路径,一般结合kill命令使用,或者查看进程的资源状态
kill <---发送信号的工具
-9 杀掉一个进程,用来杀掉比较顽固的进程
-15 友好的终止一个进程,一般先尝试用15来终止一个进程
-stop 暂停一个进程 同 -19
top
M 就是按内存来排序
P 就是按CPU使用排序
shift + > | < 翻页
top -b -n 3 > ./tt.txt <---把top刷新3次的结果输出到一个文件里
load average: 0.33, 0.52, 0.69 分别代表 1 , 5 ,15分钟 ,一般来说,如果 15分钟的数值 > 5 就说明系统非常忙,就需要留意一下什么进程占用了这么多资源。
uptime
free
nice 进程的优先级从-20 ~ 19 ,数值越低优先级越高
nice --10 firefox <--以 -10的优先级运行
renice 更改一个已经运行了的进程的优先级
renice #num pid ( renice -19 pid 以-19的优先级运行)
nice --20 rpm --rebuilddb
==========================================================
计划任务
常见的计划任务的工具: at , cron , anacron
1、at
特点:如果时间点过了,任务就失效了;
任务只能一次有效,下次需要重新设定
使用:
[root@dns 12]# at 13:48 121609
at> wall "Hello every"
at> <---Ctrl + d
job 22 at 2009-12-16 13:48
Can't open /var/run/atd.pid to signal atd. No atd running?
[root@dns 12]# service atd restart
停止 atd: [失败]
启动 atd: [确定]
[root@dns 12]#
atq
计划任务放在/var/spool/at/ ,存在一个文件
涉及两个文件
/etc/at.allow <--里面填写允许使用at定义计划任务的帐号
/etc/at.deny <--禁止使用at的帐号,如果at.allow存在,就会忽略该文件
2、cron
service crond restart
chkconfig --level 35 crond on
crontab
全局配置文件 /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
* * * * * root (wall "Hi")
01 * * * * root
分钟 小时 日 月 星期
0-59 0-23 1-31 1-12 0-7 执行任务的身份
run-parts /etc/cron.hourly
是一个脚本命令 一个目录
0 20 * * * root init 0
1 * * * * root (wall "Hello every";echo "here" >> /tmp/test/cronlog)
0-29 * * * * <--- 每个小时的前30分钟
0,2,4,6,8 * * * * <---每个小时中第0,2,4,6,8分执行任务
*/2 * * * * <---每隔两分钟执行一次任务
*/3 */2 15 * * <---每个月的15号,每两个小时每3分钟执行一边
0 12 */3 * 2 <--- 每月每隔3天的中午12点整执行任务 或 每个星期二中午12点整也会执行
注意: cron时间任务最小的单位是分钟。
如果要实现秒为单位的任务,就需要用到脚本的sleep命令
while true
do
command
sleep 30
done
例子:
vim /etc/rc.d/rc.local
while :; do ntpdate 10.1.1.1 >/dev/null 2>/dev/null; sleep 30; done &
例子:添加一个脚本作为计划任务
1、
shell> vim /tmp/test/test.sh
#!/bin/bash
echo "This is crond execute" >> /tmp/test/crond.log
shell> chmod 755 /tmp/test/test.sh <---别漏了
2、
* * * * * root /tmp/test/test.sh
3、重启服务
service crond restart
例子:每分钟执行多个任务
1、
* * * * * root run-parts /tmp/test
2、
shell > vim /tmp/test/time.sh
#!/bin/bash
/usr/sbin/ntpdate 10.1.1.1
shell> vim /tmp/test/test.sh
#!/bin/bash
echo "This is crond execute" >> /tmp/crond.log
shell > chmod 755 /tmp/test/*.sh
3、 service crond restart
通过命令设定用户的计划任务
crontab -e
0 20 * * * /sbin/init 0 <---注意了,不需要写用户名了,直接写命令
手工管理用户的cron计划任务:
/var/spool/cron/ 把对应用户的配置文件删除
管理员可以通过命令管理别的用户的计划任务
crontab -e -u tom
其他配置文件 /etc/cron.allow <--作用和at.? 一样
/etc/cron.deny
练习:
设定一个计划任务,通过脚本实现,脚本的框架下面给出。脚本需要实现的功能: 修改管理员的密码,要求
upl时间日期sz
upl1439121609sz
要求该脚本是3分钟执行一次
#!/bin/bash
echo "upl`date +%H%M%m%d%y`sz" | passwd --stdin root
3、anacron 任务
用来保证crond这个服务设定的计划任务顺利执行,这些任务必须最小单位是天
service anacron restart 《--保证这个服务器开机运行
vim /etc/anacrontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
单位:7 延迟的时间,单位分钟 任务的描述 实际任务
1 65 cron.daily run-parts /etc/cron.daily
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly
====================================
网络工具的使用
ping -c 5 10.1.1.1
ping 127.0.0.1
ping 网络IP
ping 网关
配置一台电脑,能让它浏览互联网
1、配置IP
2、配置网关
3、配置DNS
mii-tool
# mii-tool
eth0: negotiated 100baseTx-FD, link ok 《-- link ok 网卡通电
cat /proc/net/dev
netstat
netstat -n <--- 显示电脑当前所有协议所有状态的连接
netstat -ntl <-- -t 只显示tcp协议的连接 , -l 只显示正在监听状态的连接 *
# netstat -ntl | grep :21 <---有返回结果,就能简单的判断对应的服务正在监听 *
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
netstat -nul < 查看udp协议的状态
-nal < -- a 代表所有协议
netstat -r -n
netstat -ntlp <-- p 显示进程的名字 *
netstat -i -e
traceroute
mtr <--- 判断两点之间通讯故障到底出现途中哪个部分
tcpdump <---命令行捉包工具
参数的分类:
协议类 tcp udp icmp arp
端口类 22 21 80
方向 dst src
tcpdump tcp port 80 <--捕获所有包含80端口的数据包
tcpdump tcp port 22 <--- 远程登录的数据包 ssh
tcpdump dst 10.1.1.1 <---捕获所有目的地址是10.1.1.1的数据包
tcpdump tcp dst port 80 <--- 捕获所有访问本机80端口的数据包
tcpdump tcp dst port 80 -vv -w /tmp/test/tcp.cap
安装数据包文件读取工具
wireshark-gnome
作业:
1、要求使用计划任务的形式,让电脑每30秒中同时系统时间,使用的同步命令下面给出,要求把命令编辑到一个脚本文件:
while :; do ntpdate 10.1.1.1 >/dev/null 2>/dev/null; sleep 30; done &
2、处理在笔记目录下的qq.txt,要求
通过命令组合,统计出文件里独立IP或独立域名的个数, 另外通过组合命令输出文件的独立IP
阅读(779) | 评论(0) | 转发(0) |