一、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。

cp -a /etc/skel /home/tuser1 && chmod -R go-rwx /home/tuser1
#cp [OPTION]... SOURCE... DIRECTORY
#-a:归档,保留所有元属性,用于备份,相当于-dR --preserv=all
#-d:不跟踪符号连接,保留连接本身
#-p:保留源文件或目录的属性,相当于--preserv=mode,ownership,timestamp
#-R:保留递归复制目录及其子目录内的所有内容
#chmod [OPTION]... MODE[,MODE]... FILE...
#-R:可递归遍历子目录,把修改应到目录下所有文件和子目录
#go-rwx  g(组)o(其他)-(删除权限)r(读)w(写)x(执行)

二、编辑/etc/group文件,添加组hadoop。

vim /etc/group
hadoop:x:2021:
#编辑/etc/group,在末行添加组hadoop
#hadoop        组名
#x             用户组加密后的口令字段
#2021          组标识号

三、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。

vim /etc/passwd
hadoop:x:2021:2021::/home/hadoop:/bin/bash
#编辑/etc/passwd,在末行添加hadoop用户
#hadoop         用户名
#x              密码(已经加密)
#2021           UID用户标识
#2021           GID组标识
#/home/hadoop   家目录
#/bin/bash      登录Shell

四、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。

cp -a /etc/skel /home/hadoop && chmod go-rwx /home/hadoop

五、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。

chown -R hadoop:hadoop /home/hadoop/
#chown [OPTION]... [OWNER][:[GROUP]] FILE...
#-R --recursive     可递归遍历子目录,把修改应到目录下所有文件和子目录
#hadoop:hadoop     指定所有者和所有组都为hadoop

六、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;

grep "^[sS]" /proc/meminfo
SwapCached:           20 kB
SwapTotal:       1048572 kB
SwapFree:        1048552 kB
Shmem:             12868 kB
Slab:             124352 kB
SReclaimable:      81792 kB
SUnreclaim:        42560 kB
#grep [OPTIONS] PATTERN [FILE...]
#^     行首锚定;用于模式的最左侧
#[]     匹配指定范围内的任意单个字符
[root@localhost ~]# grep -i '^s' /proc/meminfo
SwapCached:            0 kB
SwapTotal:       4064252 kB
SwapFree:        4064252 kB
Shmem:              8684 kB
Slab:              69296 kB
SReclaimable:      42660 kB
SUnreclaim:        26636 kB
#grep [OPTIONS] PATTERN [FILE...]
# ^     行首锚定;用于模式的最左侧
#-i     忽略大小

七、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;

grep -v "/sbin/nologin$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1001::/home/user2:/bin/bash
user3:x:1002:1002:user3 Obama:/home/user3:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
slackware:x:2002:2016::/home/slackware:/bin/bash
openstack:x:3003:2019::/home/openstack:/bin/bash
hadoop:x:2021:2021::/home/hadoop:/bin/bash
#-v     显示不能够被pattern匹配到的行
#$     行尾锚定;用于模式的最右侧

八、显示/etc/passwd文件中其默认shell为/bin/bash的用户;

grep "/bin/bash$" /etc/passwd
root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1001::/home/user2:/bin/bash
user3:x:1002:1002:user3 Obama:/home/user3:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash
slackware:x:2002:2016::/home/slackware:/bin/bash
openstack:x:3003:2019::/home/openstack:/bin/bash
hadoop:x:2021:2021::/home/hadoop:/bin/bash
#$     行尾锚定;用于模式的最右侧

九、找出/etc/passwd文件中的一位数或两位数;

grep -o "\<[0-9]\{1,2\}\>" /etc/passwd
0
0
1
1
2
2
3
4
4
7
5
0
6
0
7
0
8
12
11
0
12
14
50
99
99
81
81
59
59
89
89
74
74
#\<[0-9]\{1,2\}\>
#\> 或 \b     词尾锚定;用于单词模式的右侧
#\{m,n\}     匹配前面的字符至少m次,至多n次
#\> 或 \b     词尾锚定;用于单词模式的右侧

十、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;

grep '^[[:space:]]\+' /boot/grub/grub.conf
#^[[:space:]]     表示以空白字符开头
#\+     表示前一个字符重复一次或更多次,并加上转义字符\

十一、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

grep '^[[:space:]]\+[^[:space:]]\+' /etc/rc.d/rc.sysinit
#^[[:space:]]\+     匹配至少一个空白字符
#[^[:space:]]\+     匹配至少一个非空白字符

十二、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;

netstat -tan | grep "LISTEN[[:space:]]*$"
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
#[[:space:]]*$    匹配出现任意次空白符并结尾

十三、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

useradd bash
useradd testbash
useradd basher
useradd -s /sbin/nologin nologin
grep '\(^\<[[:alnum:]]\+\>\).*\1$' /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
bash:x:3004:3004::/home/bash:/bin/bash
nologin:x:3007:3007::/home/nologin:/sbin/nologin
#^\<[[:alnum:]]\+\>\     匹配至少出现一次的字母或数字加上^\<\>进行行首的单词锚定,用来匹配用户名
#\<[[:alnum:]]\+\>     匹配用户名加上,用\(\)括起来将表达式定义为“组”,\1表示引用之前定义的组,跟上$作为行尾锚定