2018-05-16考试总结
成绩
先亮一下成绩吧。。这次考得不好,有些题目还是没有认真看题,感觉更重要的是对于一些命令理解的还不够透彻,没有记住。
错题
在配置**验证时,需要做的步骤中,哪一步是不对的?(B)
a. 关闭selinux
b. 把公钥复制到~/.ssh/authorized_key 文件里
c. 把公钥所在的文件权限修改为600
d. iptables规则把22端口加入白名单
解析
这道题就是考验记忆力的时候了,公钥复制到的文件名应该是authorized_keys,选项B少了一个s,我由于记忆混淆错以为是正确的,选了D。为什么选D呢,因为我不了解 iptables规则,所以导致了错误。
关于 iptables
iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。
事实上,22端口是默认开启的,我们平时用的Xshell和Putty就是使用的22端口,只不过我没有想起来。
语法
iptables(选项)(参数)
选项
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
iptables命令选项输入顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名>
-p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网>
--dport 目标端口 -j 动作
表名包括:
- raw:高级功能,如:网址过滤。
- mangle:数据包修改(QOS),用于实现服务质量。
- net:地址转换,用于网关路由器。
- filter:包过滤,用于防火墙规则。
规则链名包括:
- INPUT链:处理输入数据包。
- OUTPUT链:处理输出数据包。
- PREROUTING链:用于目标地址转换(DNAT)。
- POSTOUTING链:用于源地址转换(SNAT)。
动作包括:
- accept:接收数据包。
- DROP:丢弃数据包。
- REDIRECT:重定向、映射、透明代理。
- SNAT:源地址转换。
- DNAT:目标地址转换。
- MASQUERADE:IP伪装(NAT),用于ADSL。
- LOG:日志记录。
实例
清除已有iptables规则
iptables -F
iptables -X
iptables -Z
开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问
屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
查看已添加的iptables规则
iptables -L -n -v
Chain INPUT (policy DROP 48106 packets, 2690K bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
191K 90M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
1499K 133M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4364K 6351M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6256 327K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
删除已添加的iptables规则
将所有iptables以序号标记显示,执行: iptables -L -n --line-numbers
比如要删除INPUT里序号为8的规则,执行: iptables -D INPUT 8
ls -l 列出来的信息第一列表示文件类型,下面描述不对的是?(D)
a. d 表示目录
b. -表示普通文件
c. l表示链接文件
d. s表示管道文件
解析
这道题错在,对文件类型还是没记住。
回顾下文件类型:
文件类型
d:文件夹
-:普通文件,文本文档、二进制文件
l:链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如猫等串口设备)
s:套接口文件/数据接口文件(例如启动一个MySql服务器时会产生一个mysql.sock文件)
可以看到,s代表的是套接口文件/数据接口文件,并不是管道文件。而p才代表的是管道文件。
cp一个文件,如果目标已经存在,会问我们是否要覆盖,如何做可以不让它询问?(B)
a. 加-f选项
b. 使用绝对路径/bin/cp
c. 加–force选项
d. 加-n选项
解析
cp命令实际是cp -i 所以每次会询问是否覆盖,用/usr/bin/cp时,直接即可复制
[root@linux7-128 ~]# cp 1/2.txt 2.txt
cp:是否覆盖"2.txt"? y
[root@linux7-128 ~]# /usr/bin/cp 1/2.txt 2.txt
[root@linux7-128 ~]#
cp一个目录时,如果目标目录已经存在会发生什么?(A)
a. 源目录会放到目标目录下面
b. 源目录下的文件和子目录会到目标目录下面
c. 源目录会把目标目录替代
d. 没有任何变化
解析
当目标目录已经存在文件时,会把源目录直接放到目标目录下,如果目标目录不存在,会把源目录拷贝过来改名字。目录要记得加/,cp 目录要加 -r。
[root@linux7-128 ~]# cp -r 1/2/ /2/
[root@linux7-128 ~]# ls -l 1/2/
总用量 0
-rw-r--r-- 1 root root 0 5月 17 21:29 556
[root@linux7-128 ~]# ls -l /2/
总用量 0
-rw-r--r-- 1 root root 0 5月 17 21:32 556
mv文件或者目录时,如果目标文件名已经存在,会提示我是否要覆盖,那么如何不让它提示?(A)
a. 使用绝对路径/bin/mv
b. mv -F
c. mv -i
d. mv -n
解析
此题和前面类似,mv命令实际是mv -i 所以每次会询问是否覆盖,用/usr/bin/mv,直接即可移动
mv一个目录时,如果目标目录已经存在会发生什么?(A)
a. 源目录会放到目标目录下面
b. 源目录下的文件和子目录会到目标目录下面
c. 源目录会把目标目录替代
解析
当目标文件是目录时,其存在与否,执行后的结果是不一样的。如果该目录存在,则会把源文件或目录移动到该目录中。如果该目录不存在,则会把源目录重命名为给定的目标文件名。
当目标文件是文件时,其存在与否,执行后的结果是不一样的。如果该文件存在,则会询问是否覆盖。如果该文件不存在,则会把源文件重命名为给定的目标文件名。
[root@linux7-128 tmp]# mkdir abc
[root@linux7-128 tmp]# mkdir abd
[root@linux7-128 tmp]# mv abc abd
[root@linux7-128 tmp]# ls abd
abc
当abd目录存在时,mv abc abd
,则会把abc放到abd目录下 。
下面关于文件类型描述错误的是那一项?(C)
a. s表示文件类型为socket
b. d表示文件类型为目录
c. -表示文件类型为普通的文本文档
d. b表示文件类型为设备类型
解析
这题也是没有注意审题的结果,-表示的是普通文件,文本文档、二进制文件,不仅仅是文本文档。
如果有一个实时更新的日志文件,我们不想让别人随意删除怎么做? (B)
a. chattr +i file
b. chattr +a file
c. chattr -i file
d. chattr -a file
解析
这道题错在忽略了“实时更新”这四个字,i权限是不允许更改文件的,所以这里需要a权限,可以追加内容。
如何给一个文件设置suid权限?不对的是(D)
a. chmod u+s file
b. chmod 4755 file
c. chmod u=rws file; chmod u+x file
d. chmod u=rwS file
解析
设置suid权限时,没有chmod u=rwS file这种用法,只是查看权限时能看到rwS,它没有x可执行权限,但是其实不影响,普通用户还是可以执行,可以在赋予一个x权限,就会S变s。
有时候我们看到权限类似于-rwSr-xr-x ,这里的S是什么意思呢?不对的是(D)
a. 这个就是设置了suid才变成了S
b. 因为没有执行权限所以才显示S
c. chmod u=rws 就会变成S
d. 以上答案都不正确
解析
rwS,表示它没有x可执行权限,但是其实不影响,普通用户还是可以执行,可以在赋予一个x权限,就会S变s。这道题,ABC选择都是对的,错误的是D。
如何给一个文件设置sgid权限?不对的是(D)
a. chmod g+s file
b. chmod 2755 file
c. chmod g=rwsx file
d. chmod g=rwS file
解析
[root@linux7-128 tmp]# chmod g=rwS huhu.txt
chmod: 无效模式:"g=rwS"
Try 'chmod --help' for more information.
chmod g=rwS file是错误命令,正确的应该是小写s
使用find命令,如果只想找到当前目录下(不要子目录以及子目录的子目录)的文件或目录符合条件的需要加什么选项?(B)
a. -depth 1
b. -maxdepth 1
c. -max-depth 1
d. -maxdepth 0
解析
find命令,-maxdepth<目录层级>:设置最大目录层级;对于-maxdepth不是很熟悉,应该是从1开始,而不是0.
[aaa@qq.com128 ~]# find -maxdepth 0
.
[aaa@qq.com128 ~]# find -maxdepth 1
.
./.bash_logout
./.bashrc
./.cshrc
./.tcshrc
./anaconda-ks.cfg
./.config
./.cache
./Desktop
./Downloads
./Templates
./Public
./Documents
./Music
./Pictures
./Videos
./.ICEauthority
./.local
./.esd_auth
./.bash_history
./.Xauthority
./.ssh
./.lesshst
./folder.ini
./.pki
./manpages-zh-1.5.1.tar.gz
./manpages-zh-1.5.1
./.bash_profile
-depth:从指定目录下最深层的子目录开始查找;
下面关于find规则描述不正确的是?(C)
a. find . -type f -mtime +10 -o -perm 644 搜索当前目录下10天以前的文件或者权限为644的文件和目录
b. find . -name “.txt” -a \( -perm 777 -o -type d \) 首先满足文件名为.txt, 然后还要满足权限为777或者是目录这样的要求,也就是说,当前目录下文件名为.txt的目录符合条件,或者文件名为.txt并且权限为777也符合条件
c. find . -size +100m 搜索当前目录下大小大于100兆的文件
d. find /tmp/ -type f -user user1 -group test 搜索/tmp/目录下属主为user1属组为test的文件
解析
+100M 大写M ,不是小写m。