You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.9 KiB
48 lines
1.9 KiB
9 months ago
|
#!/bin/bash
|
||
|
|
||
|
# 定义检查函数
|
||
|
check_command() {
|
||
|
if eval $1; then
|
||
|
echo "第$2题正确"
|
||
|
else
|
||
|
echo "第$2题错误"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# 1. 检查是否为root用户并且当前目录是否为/opt
|
||
|
check_command "[ $(id -u) -eq 0 ]" 1
|
||
|
|
||
|
# 2. 检查用户tom和jack以及组hr是否存在,并且tom是否属于组hr
|
||
|
check_command "id tom &>/dev/null && id jack &>/dev/null && grep hr /etc/group &>/dev/null" 2
|
||
|
|
||
|
# 3. 检查目录/opt/myfile和文件hello.txt、world.txt是否存在
|
||
|
check_command "[ -d /opt/myfile ] && [ -f /opt/myfile/hello.txt ] && [ -f /opt/world.txt ]" 3
|
||
|
|
||
|
# 4. 检查world.txt文件是否包含abcde字符串,且重复10行
|
||
|
check_command "grep -Fxq 'abcde' /opt/world.txt && [ \$(grep -c 'abcde' /opt/world.txt) -eq 10 ]" 4
|
||
|
|
||
|
# 5. 检查world.txt文件的属主是否为jack,属组是否为hr
|
||
|
check_command "[ \$(stat -c '%U' /opt/world.txt) = 'jack' ] && [ \$(stat -c '%G' /opt/world.txt) = 'hr' ]" 5
|
||
|
|
||
|
# 6. 检查world.txt文件权限是否设置正确
|
||
|
check_command "[ \$(stat -c '%A' /opt/world.txt) = '-rwxrw-r--' ]" 6
|
||
|
|
||
|
# 7. 检查/opt/myfile目录的属组是否为hr,并且递归设置
|
||
|
check_command "[ \$(stat -c '%G' /opt/myfile) = 'hr' ] && [ \$(find /opt/myfile -not -group hr | wc -l) -eq 1 ]" 7
|
||
|
|
||
|
# 8. 检查/opt/myfile目录的权限是否允许所有用户创建文件或子目录,且新文件继承属组
|
||
|
check_command "[ \$(stat -c '%a' /opt/myfile) = '2777' ]" 8
|
||
|
|
||
|
# 9. 检查cat命令是否设置为特殊提权指令
|
||
|
check_command "find / -perm -4000 2>/dev/null| grep -qw 'cat'" 9
|
||
|
|
||
|
# 10. 检查world.txt的后5行是否被复制到hello.txt中
|
||
|
check_command "head -n 5 /opt/myfile/hello.txt | grep abcde &>/dev/null" 10
|
||
|
|
||
|
# 11. 检查ip地址信息是否追加到hello.txt文件中
|
||
|
check_command "grep ens33 /opt/myfile/hello.txt &>/dev/null" 11
|
||
|
|
||
|
# 12. 检查/opt目录下的所有内容是否复制到/mnt目录下
|
||
|
check_command "[ \$(diff -r /opt /mnt | wc -l) -eq 0 ]" 12
|
||
|
|