linux系統命令進階

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字節的數據行,但不是空行





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章