您好,登錄后才能下訂單哦!
作業(練習)內容:
1、總結文本編輯工具vim的使用方法;
Vim :全屏編輯器,模式化編輯器
Vim模式:
編輯模式(命令模式)
輸入模式
末行模式
模式轉換:
編輯--à輸入:
i:在當前光標所在字符的前面,轉為輸入模式;
a:在當前光標所在字符的后面,轉為輸入模式;
o:在當前光標所在的下方,新建一行,并轉為輸入模式;
I:在當前光標所在行的行首,轉換為輸入模式
A:在當前光標所在行的行尾,轉換為輸入模式
O:在當前光標所在行的上方,新建一行,并轉為輸入模式:
打開文件
#vi /tmp/grub2.cfg
Vi +#:打開文件,并定位于第#行
Vi + :打開文件,定位至最后一行
Vi +/PSTTERN: 打開文件,定位至第一次被PATTERN匹配到的行的行首
默認處于編輯模式
關閉文件
末行模式關閉文件
:q 不保存退出
:wq 保存退出
:q! 強制不保存退出
:w 保存
:w! 強行保存
:wq --à:x
2編輯模式下退出
zz:保存并退出
vim的末行模式
(1) 地址,定界
:start_pos,end_pos
#:第#行;
#,#
#,+#
.:當前行
$:最后一行
%: 全文,相當于1,$
/pat1/:第一次被此模式所匹配到的行;
#,/pat1/
/pat1/,/pat2/
后可跟編輯命令:
d, y
w, r
(2) 查找
/PATTERN:向尾部進行
?PATTERN:向首部進行
n: 與命令同方向
N:與命令反方向
(3) 查找替換
s: 在末行模式下,在地址定界的范圍內完成查找替換操作;
s/要查找的內容/替換為的內容/修飾符
要查找的內容:可使用模式
替換為的內容:不能使用模式,但可以使用后向引用符號,以引用前面模式中的分組括號所匹配到的內容;
\1,\2, ...
&:引用“要找的內容”匹配到的整個內容;
修飾符:
i:忽略大小寫
g:全局替換
/:用于分隔符,所以,要查找的內容或替換為的內容中出現此符號,要使用\對其轉義,使用格式:\/
分隔符可替換為其它字符:例如@,#等;
1、總結文件查找命令find的使用方法;
find命令:實時查找;查找速度略慢;精確查找;
find [OPTION]... [查找路徑] [查找條件] [處理動作]
查找路徑:默認為當前路徑;
查找條件:指定的查找標準,可以根據文件名、大小、屬主屬組、類型等進行;默認為找出指定路徑下的所有文件;
處理動作:對符合條件的文件做什么操作;默認為輸出至屏幕;
查找條件:
根據文件名進行查找:
-name "文件名稱": 支持使用glob;
*, ?,[]
-iname "文件名稱":不區分字符大小寫,支持使用glob;
-regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱;
根據屬主、屬組查找:
-user USERNAME: 查找屬主為指定用戶的文件;
-group GROUPNAME:
-uid UserID: 查找文件的屬主指定uid的文件;
-gid GroupID:
-nouser: 查找沒有屬主的文件;
-nogroup:查找沒有屬組的文件;
根據文件類型進行查找:
-typeTYPE
f:普通文件
d:目錄
l:符號鏈接
b:塊設備
c:字符設備
p:命名管道
s:套接字
組合查找條件:
與條件:-a
或條件:-o
非條件:-not, !
!A-o !B = !(A -a B)
!A-a !B = !(A -o B)
根據文件大小來查找:
-size[+|-]#UNIT
單位: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:查找到的文件的詳細路徑信息保存至指定文件中;
-okCOMMAND {} \;
對每個文件執行指定的命令之前需要用戶事先確認;
-execCOMMAND {} \;
無需用戶確認;
2、總結bash環境變量的相關內容;
配置文件,生效范圍劃分,存在兩類:
全局配置:
/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
定義本地變量:
name=value
查看:set
定義環境變量:
exportname=value
declare -xname=value
查看:env, printenv, export
撤消變量:
unset name
引用變量:
${name},$name
bash中的引用符號:
'': 強引用,變量替換不會發生
"":弱引用
``: 命令引用
3、總結Linux文件系統上的特殊權限(SUID、SGID、Sticky)的知識點;
SUID:
(1) 任何一個可執行程序文件能不能啟動為進程:取決于發起者對程序文件是否有執行權限;
(2) 啟動為進程之后,其屬主不是發起者,而程序文件自己的屬主;這種機制即為SUID;
權限設定:
chmodu+s FILE...
chmodu-s FILE...
注意:
s: 屬主原本擁有x權限;
S: 屬主原本無x權限;
SGID:
默認情況下,用戶創建文件時,其屬級為此用戶所屬的基本組;
一旦某目錄被設定了SGID權限,則對此目錄擁有寫權限的用戶在此目錄中創建的文件所屬的組為目錄的屬組,而非用戶的基本組;
權限設定:
chmodg+s FILE...
chmodg-s FILE...
Sticky:
對于一個多人可寫的目錄,此權限用于限制每個僅能刪除自己的文件;
權限設定
chmodo+t FILE...
chmodo-t FILE...
權限模型:
u, g, o
r, w, x
進程的安全上下文:
前提:進程有屬主(進程以哪個用戶的身份運行);文件有屬主和屬組;
(1) 用戶是否能夠把某個可執行程序文件啟動為進程,取決于用戶對程序文件是否擁有執行權限;
(2) 程序啟動為進程后,此進程的屬主為當前用戶,也即進程的發起者;進程所屬的組,為發起者的基本組;
(3) 進程擁的訪問權限,取決其屬主的訪問權限:
(a) 進程的屬主,同文件屬主,則應用文件屬主權限;
(b) 進程的屬主,屬于文件的屬組,則應用文件屬組權限;
(c) 則應用其它權限;
5、總結Linux磁盤管理、文件系統相關知識點及其相關命令的使用方法;
分區:分隔存儲空間為多個小的空間,每個空間可獨立使用文件系統;
分區工具:
fdisk,parted, sfdisk
fdisk工具的使用:
最多支持在一塊硬盤上的15個分區;
分區管理子命令:
p: 顯示
n: 創建
d: 刪除
t: 修改分區ID
l: 列出所有支持ID類型
w: 保存退出
q: 放棄修改并退出
m: 獲取幫助
創建完成之后,查看內核是否已經識別新的分區:
# cat/proc/partitions
有三個命令可以讓內核重讀磁盤分區表:
CentOS5: partprobe [DEVICE]
CentOS6,7:
partx
kpartx
partx命令:
partxDEVICE
partx-a DEVICE
partx-a -n M:N DEVICE
M
M:
:N
kpartx命令:
kpartx-af DEVICE
Linux文件系統管理:
mkfs, mkfs -ttype = mkfs.type
ext:mke2fs
創建文件系統:
mke2fs[OPTION]... DEVICE
-t {ext2|ext3|ext4}
-b{1024|2048|4096}
-L'LABEL'
-j:mke2fs -t ext3
-i #:
-N #:
-m #: 預留磁盤空間占據多大百分比的空間為后期管理使用;
-OFEATURE[,...]
-O^FEATURE:關閉此特性
has_journal
文件系統屬性查看及調整工具:
e2label
e2lableDEVICE [LABEL]
tune2fs
顯示ext系列文件系統的屬性,或調整其屬性;
-l:顯示超級塊中的信息;顯示整個文件的屬性及布局等相關信息;
-L'LABEL':修改卷標;
-m #: 調整預留給管理員的管理空間百分比;
-j: ext2--> ext3
-O:文件系統屬性的啟動或關閉
-o:文件系統默認掛載選項的啟用或關閉
dumpe2fs:
-h: 僅顯示超級塊信息;
文件系統檢測:
fsck:Filesystem check
fsck -ttype
fsck.type
-a: 自動修復錯誤
-r: 交互式修復錯誤
-f: 強制檢測
e2fsck:ext系列文件系統專用的檢測修復工具;
-y: 自動回答為“yes”
-f:force
6、復制/etc/grub.cfg配置文件至/tmp目錄,用查找替換命令刪除/tmp/grub.cfg文件中的行首的空白字符;
[root@localhost~]# cp -p /etc/grub2.cfg /tmp/ [root@localhost~]# ls /tmp/ grub2.cfg [root@localhost~]# vi /tmp/grub2.cfg :%s/^\s*//g或者:%s/^[[:space:]]//g 在左下角命令模式
7、復制/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令為/tmp/functions的每行開頭為空白字符的行的行首加一個#; 原有空白字符保留;
[root@localhost~]# cp /etc/rc.d/init.d/functions /tmp/ [root@localhost~]# vi /tmp/functions
:%s/^\s/#&/g或者:%s/^[[:space:]]/#&/g 在左下角命令模式
8、替換/tmp/functions文件中的/etc/sysconfig/init為/var/log;
[root@localhost~]# vi /tmp/functions :%s/\/etc\/sysconfig\/init/\var\/log/g
9、刪除/tmp/functions文件中所以#開頭,且#后面至少跟了一個空白字符的行的行首#;
[root@localhost~]# vi /tmp/functions :%s/^#\(\s\+\)/\1/g
10、查找/var目錄屬主為root,且屬組為mail的所有文件;
[root@localhost~]# find /var -user root -group mail -ls 134295027 0 drwxrwxr-x 2 root mail 6 Jun 10 2014 /var/spool/mail [root@localhost~]#
11、查找/usr目錄下不屬于root、bin或hadoop的所有文件;
[root@localhost~]# find /usr ! -user root ! -user bin ! -user hadoop -ls find: ‘hadoop’is not the name of a known user [root@localhost~]# useradd hadoop [root@localhost~]# find /usr ! -user root ! -user bin ! -user hadoop -ls --------------這里可能需要等待幾秒中,不要以為卡在這里--------- 200304 0 drwx------ 2 polkitd root 6 Jun 10 2014 /usr/share/polkit-1/rules.d
12、查找/etc目錄下最近一周內其內容修改過,且屬主不為root或hadoop的所有文件;
[root@localhost~]# find /etc -mtime -7 ! -user hadoop -ls 67108993 12 drwxr-xr-x 74 root root 8192 Sep 2 08:23 /etc 431625 4 -rw-r--r-- 1 root root 14 Sep 2 04:36 /etc/tuned/active_profile 67985872 4 -rw-r--r-- 1 root root 470 Sep 2 08:23 /etc/group 67985873 4 ---------- 1 root root 371 Sep 2 08:23 /etc/gshadow 67985868 4 -rw-r--r-- 1 root root 995 Sep 2 08:23 /etc/passwd 67985871 4 ---------- 1 root root 643 Sep 2 08:23 /etc/shadow 67109049 4 drwxr-xr-x 6 root root 4096 Sep 2 04:36 /etc/sysconfig 134732599 4 drwxr-xr-x 2 root root 4096 Sep 2 04:36 /etc/sysconfig/network-scripts 135058400 4 -rw-r--r-- 1 root root 352 Aug 28 05:38/etc/sysconfig/network-scripts/ifcfg-eno16777736 67427376 4 -rw-r--r-- 1 root root 952 Sep 2 08:18 /etc/passwd- 67109038 4 ---------- 1 root root 614 Sep 2 08:18 /etc/shadow- 67311285 4 -rw-r--r-- 1 root root 455 Sep 2 08:18 /etc/group- 67109030 4 ---------- 1 root root 360 Sep 2 08:18 /etc/gshadow- [root@localhost~]#
[root@localhost~]# find /etc -mtime -7 ! -user hadoop ! -user root -ls [root@localhost~]# ----這里如果把root也除外什么都沒有了,但是可以修改屬主吖 [root@localhost~]# cp -p /etc/group- /etc/group1 [root@localhost~]# find /etc -mtime -7 ! -user hadoop ! -user root -ls [root@localhost~]# chown bin: /etc/group1 [root@localhost~]# find /etc -mtime -7 ! -user hadoop ! -user root -ls 67985874 4 -rw-r--r-- 1 bin bin 455 Sep 2 08:18 /etc/group1 [root@localhost~]#
13、查找當前系統上沒有屬主或屬組,且最近一周內曾被訪問過的所有文件;
[root@localhost ~]# find /-nouser -mtime -7
14、查找/etc目錄下大于20k且類型為普通誰的的所有文件;
[root@localhost ~]# find /etc -type f-size +20k -ls [root@localhost ~]# find /etc-size +20k -type f -ls
15、查找/etc目錄下所有用戶都沒有寫權限的文件;
[root@localhost ~]# find /etc ! =perm+222 -ls [root@localhost ~]# find /etc-not -perm +222
16、查找/etc目錄下至少有一類用戶沒有執行權限的文件;
[root@localhost~]# find /etc ! -perm -111 -ls [root@localhost~]# find /etc -not -perm -222 -ls
17、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶擁有寫權限的文件;
[root@localhost~]# find /etc/init.d -perm -113 -ls 67208865 0 lrwxrwxrwx 1 root root 11 Aug 21 04:01/etc/init.d -> rc.d/init.d
18、讓普通用戶能使用/tmp/cat去查看/etc/shadow文件;
[root@localhost~]# which cat /usr/bin/cat [root@localhost~]# cp /bin/cat /tmp [root@localhost~]# ls -l /tmp/ total 76 -rwxr-xr-x. 1root root 54048 Sep 2 09:01 cat -rw-r--r--. 1root root 13430 Sep 2 07:45 functions -rw-r--r--. 1root root 3976 Aug 21 04:12 grub2.cfg [root@localhost~]# chmod u+s /tmp/cat [root@localhost~]# ls -l /tmp/ total 76 -rwsr-xr-x. 1root root 54048 Sep 2 09:01 cat -rw-r--r--. 1root root 13430 Sep 2 07:45 functions -rw-r--r--. 1root root 3976 Aug 21 04:12 grub2.cfg [root@localhost~]# chmod u-s /tmp/cat [root@localhost~]# ls -l /tmp/ total 76 -rwxr-xr-x. 1root root 54048 Sep 2 09:01 cat -rw-r--r--. 1root root 13430 Sep 2 07:45 functions -rw-r--r--. 1root root 3976 Aug 21 04:12 grub2.cfg [root@localhost~]# chmod 4755 /tmp/cat [root@localhost~]# ls -l /tmp/ total 76 -rwsr-xr-x. 1root root 54048 Sep 2 09:01 cat -rw-r--r--. 1root root 13430 Sep 2 07:45 functions -rw-r--r--. 1root root 3976 Aug 21 04:12 grub2.cfg [root@localhost~]#
19、創建目錄/test/data,讓某組內普通用戶對其有寫權限,且創建的所有文件的屬組為目錄所屬的組;此外,每個用戶僅能刪除自己的文件;
[root@localhost~]# mkdir -p /test/data [root@localhost~]# groupadd only [root@localhost~]# chown :only /test/data/ [root@localhost~]# ls -l /test/ total 0 drwxr-xr-x. 2root only 6 Sep 2 09:14 data [root@localhost~]# chmod o+t /test/data/ [root@localhost~]# ls -l /test/ total 0 drwxr-xr-t. 2root only 6 Sep 2 09:14 data [root@localhost~]# useradd -G only user1
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。