一、复制/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表示引用之前定义的组,跟上$作为行尾锚定