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目錄的屬組和其它用戶沒有任何訪問權限。
[root@bogon ~]# cp -a /etc/skel /home/hadoop [root@bogon ~]# chmod go-y /home/hadoop [root@bogon 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 [root@bogon hadoop]# grep "^[sS]" /proc/meminfo 案例2 [root@bogon hadoop]# cat /proc/meminfo |grep -i "^s"
講解:關於這裏其實不需要使用管道符號也是可以的 “|” ,在工作中,我們難免需要用到管道符,在寫匹配的時候能儘量不用管道最好不用,加多一道管道,意味着需要增加資源的損耗。具體看個人習慣以及需求而定。
7、顯示/etc/passwd文件中其默認shell爲非/sbin/nologin的用戶;
[root@bogon hadoop]# grep "/bin/nologin" /etc/passwd
8、顯示/etc/passw d文件中其默認shell爲/bin/bash的用戶;
[root@bogon 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文件中以#開頭,後面跟至少一個空白字符,而後又有至少一個非空白字符的行;
[root@bogon hadoop]# grep "^#[[:space:]]\+[^[:space:]]\+" /etc/rc.d/rc.sysinit
12、打出netstat -tan命令執行結果中以‘LISTEN’,後或跟空白字符結尾的行;
[root@bogon 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相同的用戶的信息;
[root@bogon hadoop]# useradd bash [root@bogon hadoop]# useradd testbash [root@bogon hadoop]# useradd basher [root@bogon hadoop]# useradd nologin -s /sbin/nologin [root@bogon hadoop]# grep "^\(\<[[:alpha:]]\+\>\).*\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.\< (\b) 錨定詞首 grep "\<r..t" /etc/passwd 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字節的數據行,但不是空行