linux運維實戰練習-2015年8月30日課程作業

1、總結文本編輯工具vim的使用方法;    

移動光標的方法
h 或 向左箭頭鍵(←)光標向左移動一個字符
j 或 向下箭頭鍵(↓)光標向下移動一個字符
k 或 向上箭頭鍵(↑)光標向上移動一個字符
l 或 向右箭頭鍵(→)光標向右移動一個字符
[Ctrl] + [f]屏幕『向下』移動一頁,相當於 [Page Down]按鍵 (常用)
[Ctrl] + [b]屏幕『向上』移動一頁,相當於 [Page Up] 按鍵 (常用)
[Ctrl] + [d]屏幕『向下』移動半頁
[Ctrl] + [u]屏幕『向上』移動半頁
+光標移動到非空格符的下一列
-光標移動到非空格符的上一列
n<space>那個 n 表示『數字』,例如 20 。按下數字後再按空格鍵,光標會向右移動這一行的 n 個字符。例如 20<space> 則光標會向後面移動 20 個字符距離。
0 或功能鍵[Home]這是數字『 0 』:移動到這一行的最前面字符處 (常用)
$ 或功能鍵[End]移動到這一行的最後面字符處(常用)
H光標移動到這個屏幕的最上方那一行的第一個字符
M光標移動到這個屏幕的中央那一行的第一個字符
L光標移動到這個屏幕的最下方那一行的第一個字符
G移動到這個檔案的最後一行(常用)
nGn 爲數字。移動到這個檔案的第 n 行。例如 20G 則會移動到這個檔案的第 20 行(可配合 :set nu)
gg移動到這個檔案的第一行,相當於 1G 啊! (常用)
n<Enter>n 爲數字。光標向下移動 n 行(常用)
搜尋與取代
/word向光標之下尋找一個名稱爲 word 的字符串。例如要在檔案內搜尋 vbird 這個字符串,就輸入 /vbird 即可! (常用)
?word向光標之上尋找一個字符串名稱爲 word 的字符串。
n這個 n 是英文按鍵。代表重複前一個搜尋的動作。舉例來說, 如果剛剛我們執行 /vbird 去向下搜尋 vbird 這個字符串,則按下 n 後,會向下繼續搜尋下一個名稱爲 vbird 的字符串。如果是執行 ?vbird 的話,那麼按下 n 則會向上繼續搜尋名稱爲 vbird 的字符串!
N這個 N 是英文按鍵。與 n 剛好相反,爲『反向』進行前一個搜尋動作。 例如 /vbird 後,按下 N 則表示『向上』搜尋 vbird 。
:n1,n2s/word1/word2/gn1 與 n2 爲數字。在第 n1 與 n2 行之間尋找 word1 這個字符串,並將該字符串取代爲 word2 !舉例來說,在 100 到 200 行之間搜尋 vbird 並取代爲 VBIRD 則:
『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 !(常用)
:1,$s/word1/word2/gc從第一行到最後一行尋找 word1 字符串,並將該字符串取代爲 word2 !且在取代前顯示提示字符給用戶確認 (confirm) 是否需要取代!(常用)
刪除、複製與貼上
x, X在一行字當中,x 爲向後刪除一個字符 (相當於 [del] 按鍵), X 爲向前刪除一個字符(相當於 [backspace] 亦即是退格鍵) (常用)
nxn 爲數字,連續向後刪除 n 個字符。舉例來說,我要連續刪除 10 個字符, 『10x』。
dd刪除遊標所在的那一整列(常用)
nddn 爲數字。刪除光標所在的向下 n 列,例如 20dd 則是刪除 20 列 (常用)
d1G刪除光標所在到第一行的所有數據
dG刪除光標所在到最後一行的所有數據
d$刪除遊標所在處,到該行的最後一個字符
d0那個是數字的 0 ,刪除遊標所在處,到該行的最前面一個字符
yy複製遊標所在的那一行(常用)
nyyn 爲數字。複製光標所在的向下 n 列,例如 20yy 則是複製 20 列(常用)
y1G複製遊標所在列到第一列的所有數據
yG複製遊標所在列到最後一列的所有數據
y0複製光標所在的那個字符到該行行首的所有數據
y$複製光標所在的那個字符到該行行尾的所有數據
p, Pp 爲將已複製的數據在光標下一行貼上,P 則爲貼在遊標上一行! 舉例來說,我目前光標在第 20 行,且已經複製了 10 行數據。則按下 p 後, 那 10 行數據會貼在原本的 20 行之後,亦即由 21 行開始貼。但如果是按下 P 呢? 那麼原本的第 20 行會被推到變成 30 行。 (常用)
J將光標所在列與下一列的數據結合成同一列
c重複刪除多個數據,例如向下刪除 10 行,[ 10cj ]
u復原前一個動作。(常用)
[Ctrl]+r重做上一個動作。(常用)
.重複前一個動作

第二部份:一般模式切換到編輯模式的可用的按鈕說明

進入插入或取代的編輯模式
i, I進入插入模式(Insert mode):
i 爲『從目前光標所在處插入』, I 爲『在目前所在行的第一個非空格符處開始插入』。 (常用)
a, A進入插入模式(Insert mode):
a 爲『從目前光標所在的下一個字符處開始插入』, A 爲『從光標所在行的最後一個字符處開始插入』。(常用)
o, O進入插入模式(Insert mode):
這是英文字母 o 的大小寫。o 爲『在目前光標所在的下一行處插入新的一行』; O 爲在目前光標所在處的上一行插入新的一行!(常用)
r, R進入取代模式(Replace mode):
r 只會取代光標所在的那一個字符一次;R會一直取代光標所在的文字,直到按下 ESC 爲止;(常用)
[Esc]退出編輯模式,回到一般模式中(常用)

第三部份:一般模式切換到指令列模式的可用的按鈕說明

指令列的儲存、離開等指令
:w將編輯的數據寫入硬盤檔案中(常用)
:w!若文件屬性爲『只讀』時,強制寫入該檔案。不過,到底能不能寫入, 還是跟你對該檔案的檔案權限有關啊!
:q離開 vi (常用)
:q!若曾修改過檔案,又不想儲存,使用 ! 爲強制離開不儲存檔案。
:wq儲存後離開,若爲 :wq! 則爲強制儲存後離開 (常用)
ZZ這是大寫的 Z 喔!若檔案沒有更動,則不儲存離開,若檔案已經被更動過,則儲存後離開!
:w [filename]將編輯的數據儲存成另一個檔案(類似另存新檔)
:r [filename]在編輯的數據中,讀入另一個檔案的數據。亦即將 『filename』 這個檔案內容加到遊標所在行後面
:n1,n2 w [filename]將 n1 到 n2 的內容儲存成 filename 這個檔案。
:! command暫時離開 vi 到指令列模式下執行 command 的顯示結果!例如
『:! ls /home』即可在 vi 當中察看 /home 底下以 ls 輸出的檔案信息!
vim 環境的變更
:set nu顯示行號,設定之後,會在每一行的前綴顯示該行的行號
:set nonu與 set nu 相反,爲取消行號!

 2、總結文件查找命令find的使用方法;    

       find  path   -option   [  -print ]   [ -exec   -ok  command ]   {} ;

-name "文件名稱": 支持使用glob;
-regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱;
-user USERNAME: 查找屬主爲指定用戶的文件;
-uid UserID: 查找文件的屬主指定uid的文件;
-gid GroupID:
-nouser: 查找沒有屬主的文件;
-nogroup:查找沒有屬組的文件;
根據文件類型進行查找:
d: 目錄
l: 符號鏈接
b: 塊設備
s: 套接字

!A -o !B = !(A -a B)
!A -a !B = !(A -o B)
單位:k, M, G
#UNIT: (#-1,#]
+#UNIT: (#,+oo)
-#UNIT:[0,#-1]
根據時間戳:
以“天”爲單位
-atime [+|-]#
#:[#,#+1)
+#: [#+1,oo]
-#: [0,#)
-mtime
-ctime
以“分鐘”爲單位
-amin
-mmin
-cmin
根據權限:
-perm [/|-]MODE
MODE: 精確權限匹配
/MODE:任何一類對象(u,g,o)的任何一位權限符合條件即可;隱含或條件;/400
-MODE:爲每一類對象指定的每一位權限都必須同時存在方爲符合條件;隱含與條件;

處理動作:
-print: 默認處理動作
-ls:類似於對查找到的每個文件做"ls -l"的操作;
-delete: 刪除查找到的文件;
-fls /path/to/somefile:查找到的文件的詳細路徑信息保存至指定文件中;

-ok COMMAND {} \;
對每個文件執行指定的命令之前需要用戶事先確認;
-exec COMMAND {} \;
無需用戶確認;


3、總結bash環境變量的相關內容;

sh環境配置:
配置文件,生效範圍劃分,存在兩類:
全局配置:
/etc/profile, /etc/profile.d/*.sh
/etc/bashrc
個人配置:
~/.bash_profile
~/.bashrc

按功能劃分,存在兩類:
profile類:爲交互式登錄的shell提供配置
/etc/profile, /etc/profile.d/*.sh
~/.bash_profile

功用:
(1) 定義環境變量,例如PATH、PS1
(2) 運行命令或腳本
bashrc類:爲非交互式登錄shell提供配置
/etc/bashrc
~/.bashrc

功用:
(1) 定義命令別名;
(2) 定義本地變量;

變量:內存空間,變量名
類型:
環境變量:作用範圍當前shell進程及其子進程
本地變量:作用範圍當前shell進程
局部變量:作用範圍僅爲當前shell進程中某代碼片斷(通常爲函數上下文)

位置變量:$1, $2
特殊變量:$?

變量定義方式:
bash內置變量:可直接調用,內置了許多環境變量,例如PATH等
自定義變量:
變量賦值:變量名=值

bash弱類型:
變量存儲數據時,默認均採用字符形式;任何變量可以不經聲明,直接引用;

120:24bits
120: 8bits

定義本地變量:
查看:set

定義環境變量:
export name=value
declare -x name=value

查看:env, printenv, export

撤消變量:
unset name

引用變量:
${name}, $name

bash中的引用符號:
'': 強引用,變量替換不會發生
"":弱引用
``: 命令引用

shell登錄類型:
交互式登錄:
直接通過終端進行的登錄;
通過su -l Username命令實現的用戶切換;

非交互式登錄:
圖形界面下打開的命令行窗口;
執行腳本;
su Username;

配置文件作用次序:
交互式登錄:
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

非交互式登錄:
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh:


4、總結Linux文件系統上的特殊權限(SUID、SGID、Sticky)的知識點;

SUID:
(1) 任何一個可執行程序文件能不能啓動爲進程:取決於發起者對程序文件是否有執行權限;(2) 啓動爲進程之後,其屬主不是發起者,而程序文件自己的屬主;這種機制即爲SUID;
權限設定:
chmod u+s FILE...
chmod u-s FILE...
注意:
s: 屬主原本擁有x權限;
S: 屬主原本無x權限;

SGID:
默認情況下,用戶創建文件時,其屬級爲此用戶所屬的基本組;
一旦某目錄被設定了SGID權限,則對此目錄擁有寫權限的用戶在此目錄中創建的文件所屬的組>爲目錄的屬組,而非用戶的基本組;
權限設定:
chmod g+s FILE...
chmod g-s FILE...

Sticky:
對於一個多人可寫的目錄,此權限用於限制每個僅能刪除自己的文件;

權限設定
chmod o+t FILE...
chmod o-t FILE...


5、總結Linux磁盤管理、文件系統相關知識點及其相關命令的使用方法;


6、複製/etc/grub.cfg配置文件至/tmp目錄,用查找替換命令刪除/tmp/grub.cfg文件中的行首的空白字符;

     :%s/^[[:space:]]\{1,}/g

7、複製/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令爲/tmp/functions的每行開頭爲空白字符的行的行首加一個#; 原有空白字符保留;

     %s/^ /# /g

8、替換/tmp/functions文件中的/etc/sysconfig/init爲/var/log;

     %s@/etc/sysconfig/init@/var/log@g

9、刪除/tmp/functions文件中所以#開頭,且#後面至少跟了一個空白字符的行的行首#;

     :%s/^# \{1,}/ /gc 

10、查找/var目錄屬主爲root,且屬組爲mail的所有文件;    

[Task@magedu tmp]$ sudo find /var -user root -group mail -ls
786590    4 drwxrwxr-x   2 root     mail         4096 9月  1 23:25 /var/spool/mail
792773    4 -rw-------   1 root     mail         1943 9月  1 23:25 /var/spool/mail/root

11、查找/usr目錄下不屬於root、bin或hadoop的所有文件; 

[Task@magedu usr]$sudo find /usr ! \( -user root -o -user bin -o -user hadoop \) -ls
530922    0 -rw-r--r--   1 Test     Test            0 9月  2 04:27 /usr/123

12、查找/etc目錄下最近一週內其內容修改過,且屬主不爲root或hadoop的所有文件;

 sudo find /etc/ -atime -7  -a ! \( -user root -o -user hadoop \) -ls

13、查找當前系統上沒有屬主或屬組,且最近一週內曾被訪問過的所有文件;      

sudo find /etc/ -atime -7  -a -nouser -a  -nogroup  -ls

14、查找/etc目錄下大於20k且類型爲普通文件的所有文件;

sudo find /etc/ -size +20k -a -type f -ls

15、查找/etc目錄下所有用戶都沒有寫權限的文件;

find /etc  -perm 555 -type f -ls

16、查找/etc目錄下至少有一類用戶沒有執行權限的文件;

find /etc -perm /666  -type f -ls

17、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶擁有寫權限的文件;

find /etc/init.d  -perm  -111 -a -perm -002 -ls

18、讓普通用戶能使用/tmp/cat去查看/etc/shadow文件;

      sudo chmod u+s /bin/cat

wKioL1Xpub3CqMJUAALEZ_YZo-E972.jpg

19、創建目錄/test/data,讓某組內普通用戶對其有寫權限,且創建的所有文件的屬組爲目錄所屬的組;此外,每個用戶僅能刪除自己的文件;

# chmod g+s /tmp/test/data
# chmod g+w /tmp/test/data
# chmod o+t /tmp/test/data

[root@magedu /]# mkdir -p /tmp/test/data
[root@magedu /]# chmod g+s /tmp/test/data
[root@magedu /]# chmod g+w /tmp/test/data
[root@magedu /]# chmod o+t /tmp/test/data
[root@magedu /]# chown .test123 /tmp/test/data
[root@magedu /]# id Test
uid=503(Test) gid=503(Test) 組=503(Test),513(test123)
[root@magedu /]# id Task
uid=504(Task) gid=504(Task) 組=504(Task),0(root),513(test123)
[root@magedu /]#
[root@magedu /]# ls -l  /tmp/test/data/
總用量 0
-rw-rw-r--. 1 Task test123 0 9月   5 05:56 123
-rw-rw-r--. 1 Test test123 0 9月   5 05:56 321
[root@magedu /]# su - Test
[Test@magedu ~]$ cd /tmp/test/data/
[Test@magedu data]$ rm 123
rm: 無法刪除"123": 不允許的操作
[Test@magedu data]$


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