1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。
答:~]#cp-r /etc/skel /home/tuser1
~]#chmod -R go= /home/tuser1 #法一,不会改变属主原来权限;
~]# chmod-R 700 /home/tuser1 #法二,可能会改变属主原有权限;
示例:
[[email protected]~]# touch /etc/skel/mytest.txt
[[email protected]~]# ll /etc/skel/mytest.txt
-rw-r--r--.1 root root 0 Aug 26 12:51 /etc/skel/mytest.txt
[[email protected]~]# cp -r/etc/skel /home/tuser1 #可以也可用–R;
[[email protected]~]# ls -ld /home/tuser1
drwxr-xr-x.2 root root 4096 Aug 26 12:52 /home/tuser1
[[email protected]~]# ls -ld /home/tuser1/mytest.txt
-rw-r--r--.1 root root 0 Aug 26 12:52 /home/tuser1/mytest.txt
[[email protected]~]# chmod -R go= /home/tuser1 #法一,不会改变属主原来权限;
[[email protected]~]# chmod -R 700/home/tuser1 #法二,可能会改变属主原有权限;
[[email protected]~]# ls -ld /home/tuser1/
drwx------.2 root root 4096 Aug 26 12:52 /home/tuser1/ #查看目录权限;
[[email protected]~]# ls -l /home/tuser1/mytest.txt
-rwx------. 1 root root 0Aug 26 12:52 /home/tuser1/mytest.txt #chmod –R 700的结果;
说明:cp -r,-R:递归复制目录及内部的所有内容;
chmod -R :递归修改权限;注意,此处不能使用-r;
2、编辑/etc/group文件,添加组hadoop。
答:法一:
~]#vim /etc/group,在尾部新增一行,输入hadoop:x:555:
法二:
~]#groupadd hadoop
法三:
~]# echo "hadoop2:x:2022:" >>/etc/group
说明:用tail -1 /etc/group可查看group文件最后新增的一个组信息;
3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。
答:~]# echo"hadoop:x:510:2021:user_hadoop:/home/hadoop:/bin/bash">>/etc/passwd
说明:
~]# mkdir /home/hadoop # 此方式创建用户,不会自动创建家目录,需手动创建;
~]# id hadoop # 查看hadoop用户的信息;
uid=510(hadoop)gid=2021(hadoop) groups=2021(hadoop)
4、复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。
答:~]#cp-r /etc/skel/ /home/hadoop/
~]#chmod go= /home/hadoop/ #法一,不会改变属主原来权限;
~]# chmod700 /home/hadoop/ #法二,可能会改变属主原有权限;
示例:
[[email protected]~]# cp -r/etc/skel/ /home/hadoop/
[[email protected] ~]# ll -d /etc/skel/
drwxr-xr-x.2 root root 4096 Jun 27 2015 /etc/skel/
[[email protected]~]# ll -d /home/hadoop/
drwxr-xr-x.3 root root 4096 Aug 27 10:21 /home/hadoop/
[[email protected]~]# chmod go=/home/hadoop/ #法一,不会改变属主原来权限;
[[email protected]~]# chmod 700 /home/hadoop/ #法二,可能会改变属主原有权限;
[[email protected]~]# ll -d /home/hadoop/
drwx------.3 root root 4096 Aug 27 10:21 /home/hadoop/
说明:cp -r,-R:递归复制目录及内部的所有内容;
chmod -R :递归修改权限;注意,此处不能使用-r;
5、修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。
答:~]# chown -R hadoop.hadoop/home/hadoop/ # 法一,用点号“.”;
~]#chown -R hadoop:hadoop /home/hadoop/ # 法二,用冒号“:”;
示例:
[[email protected]~]# cp /root/abc /home/hadoop/
[[email protected]~]# ll /home/hadoop/ # 查看属主、属组改变前的文件属性;
total 8
-rw-r--r--.1 root root 4 Aug 27 10:31 abc
drwxr-xr-x.2 root root 4096 Aug 27 10:21 skel
[[email protected] ~]# chown -R hadoop:hadoop /home/hadoop/
[[email protected]~]# ll /home/hadoop/ # 查看属主、属组改变后的文件属性;
total 8
-rw-r--r--.1 hadoop hadoop 4 Aug 27 10:31 abc
drwxr-xr-x.2 hadoop hadoop 4096 Aug 27 10:21 skel
说明:chown –R 表示递归修改属主或属组;
6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;
答:法一:
~]# grep -i ‘^s‘ /proc/meminfo # -i表示不区分大小写字符;
法二:
~]# grep ‘^[Ss]‘ /proc/meminfo # [ ] 表示匹配指定范围内的任意单个字符;
法三:
~]# sed -n ‘/^[Ss]/p‘ /proc/meminfo # -n 表示仅显示处理后的结果;
法四:
~]# awk ‘/^[Ss]/‘ /proc/meminfo
7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;
答:~]# grep -v ‘/sbin/nologin$‘/etc/passwd | cut -d: -f1
说明:
$ 表示行尾锚定,用于模式的最右侧;
grep中的 –v表示不被条件所匹配到的行;
cut中的 –d: 表示以冒号为分隔符,-f1 表示截取第一列的内容;
8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
答:~]# grep ‘/bin/bash$‘/etc/passwd | cut -d: -f1
说明:$ 表示行尾锚定,用于模式的最右侧;
cut中的 –d: 表示以冒号为分隔符,-f1 表示截取第一列的内容;
9、找出/etc/passwd文件中的一位数或两位数;
答:~]# grep --color=auto "\<[0-9]\{1,2\}\>" /etc/passwd
说明:--color=auto表示给匹配到的内容着色,此题也可不用添加;
\<:词首锚定,用于单词模式的左侧,也可用 \b;
\>:词尾锚定,用于单词模式的右侧,也可用 \b;
\{m,n\}:匹配前面的字符至少m次,至多n次;此处是\{1,2\};
10、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
答:法一:
~]# grep"^[[:space:]]\+" /boot/grub/grub.conf
法二:
~]#egrep "^[[:space:]]+" /boot/grub/grub.conf
法三:
~]#grep -E "^[[:space:]]+" /boot/grub/grub.conf
说明:
^ :行首锚定,用于模式的最左侧;
在基础正则表达式中(grep):
\+:表示匹配其前面的字符至少1次;
在扩展正则表达式中(egrep,grep -E):
+ :表示匹配其前面的字符至少1次;
11、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;
答:法一:
~]# grep "^#[[:space:]]\+[^[:space:]]\+" /etc/rc.d/rc.sysinit
法二:
~]# egrep "^#[[:space:]]+[^[:space:]]+" /etc/rc.d/rc.sysinit
法三:
~]# grep -E "^#[[:space:]]+[^[:space:]]+" /etc/rc.d/rc.sysinit
说明:
^ :行首锚定,用于模式的最左侧;
非;
在基础正则表达式中(grep):
\+:表示匹配其前面的字符至少1次;
在扩展正则表达式中(egrep,grep -E):
+ :表示匹配其前面的字符至少1次;
12、打出netstat-tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;
答:~]# netstat -tan | grep"LISTEN[[:space:]]*$"
说明:* :匹配前面的字符任意次;
$ :行尾锚定,用于模式的最右侧;
13、添加用户bash,testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;
答:默认情况下,bash,testbash,basher,nologin这些用户是已存在的;也可以用下面命令创建:
~]#for user in bash testbash basher nologin;do id $user &>/dev/null ||useradd $user;done;
~]# grep"^\([[:alnum:]]\+\>\).*\1$" /etc/passwd
说明:\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理;
分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为:\1,\2,\3,. . .
\1:从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;
^ :行首锚定,用于模式的最左侧;
\>或\b:词尾锚定,用于单词模式的右侧;
.* :任意长度的任意字符;
[[:alnum:]] 是匹配任意字母;
\+:表示匹配其前面的字符至少1次;