1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。cp -a /etc/group /home/tuser1
chown -R o-rwx /home/tuser1
2、编辑/etc/group文件,添加组hadoop。新建方法了解到的有如下两种
例子1:
echo "hadoop:x:2024:" >> /etc/group
例子2:
group hadoop
下面这种的创建方式,相对比较常见,具体看个人操作习惯
3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。
这里也提供两种新建的方法:例子1:
echo "hadoop:x:2020:2026::/home/hadoop:/bin/bash"
例子2:
useradd hadoop
讲解:默认创建的用户都会在/home目录下面,默认/bin/bash/下的用户都允许登录系统,如果需要拥有最大的超级管理员权限,只需要将ID号修改为0:0即可。
4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。[[email protected] ~]# cp -a /etc/skel /home/hadoop
[[email protected] ~]# chmod go-y /home/hadoop
[[email protected] hadoop]# su hadoop
bash: /home/hadoop/.bashrc: Permission denied
bash-4.2$
根据上面操作,hadoop,就没有访问家目录的权限了
5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。chown -R hadoop.hadoop /home/hadoop || chown -R hadoop:doop /home/hadoop
上面两种操作方式都可以执行的,5系列的大部分都是使用前者,后者由于没有环境是否也可行,暂时未知,下次有机会试验,再补上。
6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;案例1
[[email protected] hadoop]# grep "^[sS]" /proc/meminfo
案例2
[[email protected] hadoop]# cat /proc/meminfo |grep -i "^s"
讲解:关于这里其实不需要使用管道符号也是可以的 “|” ,在工作中,我们难免需要用到管道符,在写匹配的时候能尽量不用管道最好不用,加多一道管道,意味着需要增加资源的损耗。具体看个人习惯以及需求而定。
7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;[[email protected] hadoop]# grep "/bin/nologin" /etc/passwd
8、显示/etc/passw d文件中其默认shell为/bin/bash的用户;[[email protected] hadoop]# grep "/bin/bash" /etc/passwd
9、找出/etc/passwd文件中的一位数或两位数;grep -o "[0-9]\{1,2\}" /etc/passwd
10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;grep "^[[:space:]]" /boot/grub/grub.conf
11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;[[email protected] hadoop]# grep "^#[[:space:]]\+[^[:space:]]\+" /etc/rc.d/rc.sysinit
12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;[[email protected] hadoop]# netstat -lan | grep "LISTEN[[:space:]]\+$"
参数介绍:
a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;[[email protected] hadoop]# useradd bash
[[email protected] hadoop]# useradd testbash
[[email protected] hadoop]# useradd basher
[[email protected] hadoop]# useradd nologin -s /sbin/nologin
[[email protected] hadoop]# grep "^\(\\).*\1$" /etc/passwd
总结:
本章用的最多的就是grep的命令例子了,主要是配合正则去匹配题目上要求的结果,这里对grep的一些高级用法,在下面列举一下。
励志话语:烂木头,如果现在努力了,后面就是甘泉,如果现在不努力,后面将是,噩梦的开始。
grep
一.匹配字符. 匹配任意单个字符
[ ] 匹配指定范围内的任意字符
[^] 匹配飞指定范围内的任意字符
[:alpha:] 字母字符
[:lower:] 小写字母字符
[:upper:] 大写字母字符
[:digit:] 数字
[:alnum:] 字母数字字符
[:space:] 空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符
[:punct:] 标点字符
[:cntrl:] 控制字符(禁止打印)
[:print:] 可打印字符
使用时一般使用两个中括号,具体会在下面的例子中使用。
二.匹配次数* 匹配前面的字符任一次
.* 匹配任意长度的任意字符(注意贪婪模式,比如 grep “r.*t” /etc/passwd )
x\{m,n\} 指定前面的字符至少出现m次,至多出现N次。
x\{m,\} 指定前面的字符至少出现m次
x\{0,n\} 指定前面的字符至多出现N次
x\{m\} 精确匹配m次
? 匹配其前面的字符0或1次
三.锚定符1.^ 锚定行首 grep "^r..t" /etc/passwd
2.$ 锚定行尾 grep "h$" /etc/passwd
3.^$ 锚定空白行 grep "^$" /etc/passwd
4.\
5.\> (\b) 锚定词首 grep "r..t\>" /etc/passwd
示例(容易混淆):
至少包含一个空白字符 grep "[[:space:]]\{1,\}" /etc/passwd
至少包含一个非空白字符 grep "[^[:space:]]\{1,\}" /etc/passwd
没有一个空白字符 grep -v "[^[:space:]]\{1,\}" /etc/passwd
6.\(\)对字符分组 grep "\(l..e\).*\1r"
示例:
grep --color "l\([13]\):\1:.*:\1" /etc/inittab
四.选项-v:对结果取反
-i:忽略字母大小写
-o:仅显示匹配到的字符串(行的其他内容不显示)
-E:支持扩展的正则表达式
-A:显示匹配到的行下面n行
-B:显示匹配到的行上面n行
-C:显示匹配到的行上下面各显示n行
-E:扩展正则表达式egrep
-F:一个换行符分隔的字符串的集合fgrep
-G:基本正则
-P:调用的perl正则
-e:后面根正则模式,默认无
-f:从文件中获得匹配模式
-i:不区分大小写
-w:匹配整个单词
-x:匹配整行
-z:一个 0字节的数据行,但不是空行