欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2018-05-16考试总结

程序员文章站 2022-06-10 23:43:40
...

成绩

先亮一下成绩吧。。这次考得不好,有些题目还是没有认真看题,感觉更重要的是对于一些命令理解的还不够透彻,没有记住。
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 517 21:29 556
[root@linux7-128 ~]# ls -l /2/
总用量 0
-rw-r--r-- 1 root root 0 517 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。

相关标签: 考试