第四周学习内容:文件系统权限管理,grep和正则表达式。

第四周作业:

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

      首先拷贝/etc/skel目录至/home/tuser1,由于是目录文件,需要加上选项-r表示递归。

      Linux学习(第四周)_学习记录

      然后修改该目录的权限属组和其他用户减去可读和可执行权限,两个权限修改命令之间用“,”隔开,也可以使用g=,o=等各种修改方法。

      Linux学习(第四周)_作业_02

      答案:cp -r /etc/skel /ome/tuser1/;chmod -R g-rx,o-rx /home/tuser1/

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

      手动添加组,若使用命令的话是groupadd。

      Linux学习(第四周)_作业_03

      答案:echo "hadoop:x:2000:" >> /etc/group

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

      手动添加用户,若使用命令的话是useradd。

      Linux学习(第四周)_作业_04

      答案:echo "hadoop:x:1111:2000:zhushixinxi:/home/hadoop:/bin/bash" >> /etc/passwd

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

      与第一题类似。

      Linux学习(第四周)_学习记录_05

      答案:cp -r /etc/skel/ /home/hadoop/;chmod -R g=,o= /home/hadoop/

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

      使用chown命令可以一次性将属主和属组都搞定,不用专门为改属组而是用chgrp命令。因为是目录文件,还是带上选项-R,表示递归;格式要记住了,属主和属组之间用“:”隔开。

      Linux学习(第四周)_学习记录_06

      答案:chown -R hadoop:hadoop /home/hadoop/

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

      需要用到grep和正则表达式。一种方法是使用grep的-i选项可以无视大小写,还有一种就是利用正则表达式“[]”符号,匹配范围内的单个字符。

      Linux学习(第四周)_作业_07

      答案:grep "^[Ss]" /proc/meminfo;grep -i "^s" /proc/meminfo

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

      grep的-v选项可以显示未匹配到的行,为了只显示用户名在grep以后再切割一下。

      Linux学习(第四周)_作业_08

      答案:grep -v "nologin$" /etc/passwd | cut -d: -f1

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

      与上一题类似,搜索结果cut一下。

      Linux学习(第四周)_作业_09

      答案:grep "bash$" /etc/passwd | cut -d: -f1

9、找出/etc/passwd文件中的一位数或两位数。

      首先出现的必须要是数字,然后出现最少一次,最多两次,最后还要锚定词首和词尾。

      Linux学习(第四周)_作业_10

      答案:grep "\<[[:digit:]]\{1,2\}\>" /etc/passwd

10、显示/boot/grub2/grub.cfg中以至少一个空白字符开头的行。

      首先出现的必须是空白字符,然后至少出现,最后锚定句首。截图不全,下面还有很多。

      Linux学习(第四周)_学习记录_11

      答案:grep "^[[:space:]]\+" /boot/grub2/grub.cfg

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

      首先是以#开头,锚定句首,然后是空白字符至少出现一次,最后非空白字符至少出现一次。

      Linux学习(第四周)_学习记录_12

12、打出netstat -tan命令执行结果中以‘LISTEN',后或跟空白字符结尾的行。

      首先将netstat -tan命令通过管道符送给grep,然后再搜索以LISTEN后加空白字符任意次结尾的行。

      Linux学习(第四周)_作业_13

      答案:netstat -tan | grep "LISTEN[[:space:]]*$"

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

      先添加用户,特别指定nologin的默认shell为/sbin/nologin。

      Linux学习(第四周)_作业_14

      然后要找出用户名和默认shell相同的信息,需要用到grep的分组和引用,分组是将多个字符捆绑在一起当做一个整体去处理,而分组所匹配到的内容会被转化为正则表达式引擎自动记录于内部的变量,该变量可以被引用。首先抓出句首的用户名,锚定句首,以非冒号结尾的单词,就可以抓出用户名了。

      Linux学习(第四周)_学习记录_15

      将其放入分组后,再是中间出现任意长度任意字符,最后在句尾引用此分组

      Linux学习(第四周)_作业_16

      答案:useradd bash;useradd testbash;useradd basher;useradd -s /sbin/nologin nologin;grep "\(^[^:]\+\>\).*\1$" /etc/passwd