1. 程式人生 > >week4 vi 編譯器 bash指令碼 及所學命令

week4 vi 編譯器 bash指令碼 及所學命令

1.這周所學的一些命令的使用

1.1 usermod

(1) 修改使用者名稱:usermod -l newuser olduser 注意只改變了使用者名稱,其家目錄不改變;
(2) 增加描述資訊: usermod -c "描述資訊" user
(3) 修改登入shell : usermod -s /sbin/nologin user將使用者user修改成不可登陸
(4) 鎖定賬號: -L 禁止其登入系統
(5)解鎖賬號: -U 允許其登入系統

1.2 檔案查詢 which / whereis / find

which: 查詢可執行檔案的路徑 which [-a] command


whereis:查詢檔案或目錄名稱whereis file/directory
find:find 路徑 引數

三個檔案查詢其中find查詢較全面

引數 作用
-name 按照名字查詢
-perm 安裝許可權查詢
-prune 不再當前指定的目錄下查詢
-user 檔案屬主來查詢
-nogroup 檔案所屬組來查詢
-nouser 查詢無有效所屬組的檔案
-type 按照檔案型別查詢

1.3 userdel : 刪除使用者

引數 作用
-f 強制刪除使用者
-r 同時刪除使用者及使用者家目錄

rm刪除使用者只是將其看為檔案刪除其還在/etc/passwd下

1.4 許可權

命令 作用
chmod 用於設定檔案或目錄的許可權
chown 用於修改檔案屬性和許可權
chgrp 用於修改檔案屬性和許可權

例題:
研發部開發人員David和Peter屬於組A,行政部人員Jack和Mike屬於組B;
1.建立目錄“/project_a”,該目錄裡面的檔案只能由研發部開發人員讀取、增加、刪除、修改以及執行,其他用
戶不能對該目錄進行任何的訪問操作;
2.建立目錄“/project_b”,該目錄裡面的檔案只能由行政部人員讀取、增加、刪除、修改以及執行,其他使用者不
能對該目錄進行任何的訪問操作;
3.建立目錄“/project”,該目錄裡面的檔案可由研發部、行政部人員讀取、增加、刪除、修改以及執行,其他部
門使用者只可以對該目錄進行只讀的訪問操作
#此題只給出兩個組,其實要想實現此功能需要3個組。研發部一個組,行政部一個組,包含研發部和行政部需要一
個組。此題目的在於熟悉組、使用者、許可權相關命令
groupadd a;groupadd b;groupadd ab
echo ‘1’ | passwd --stdin david #其它使用者省略
mkdir /project_a;mkdir /project_b;mkdir /project
chgrp ab /project;chgrp a /project_a;chgrp b /project_b
usermod -G a,ab david;usermod -G a,ab peter;usermod -G b,ab mike;usermod -G b,ab jack
chmod 774 /project; chmod 770 /project_a; chmod 770 /project_b

2.ACL

主要用在與提供傳統的UGO的讀寫執行許可權之外進行更細緻的許可權設定,可以針對單一檔案,單一使用者,單一目錄來進行許可權設定

2.1查詢ACL功能是否啟用(預設都啟用)cat /boot/config-3.10.0-693.el7.x86_64 | grep -i xfs #centos7.

2.2 設定ACL:setfacl

引數 描述
-m 設定後續acl引數,不可與-x合用
-x 刪除後續acl引數,不可與-m合用
-b 刪除全部的acl引數
-k 刪除預設的acl引數
-R 遞迴設定acl,包括子目錄
-d 設定預設acl,只對目錄有效

2.2.1 用法:

setfacl -m u:alice:rx file ; ll file 設定使用者alice對檔案file具有可讀可執行許可權並檢視設定結果成功否(許可權後面顯示 +);
setfacl -x u:alice file刪除使用者alice對檔案file特設許可權
setfacl -b file 刪除對檔案file設定的所有acl引數
echo $? 來檢視上句命令是否執行 結果0 執行了

3. vi 文字編譯器

3.1 Vi 的三種模式:
命令模式 控制游標移動,可對文字進行復制、貼上、刪除和查詢等
輸入模式 正常的文字錄入 ( i進行 )
末行模式 儲存或退出文件 (shift + : )

3.2 vi 輸入模式常用命令

命令 作用
dd 刪除(剪下)游標所在整行
10dd 刪除(剪下)從游標處開始的10行
yy 複製游標所在整行
10yy 複製從游標處開始的10行
p 刪除(dd)或複製(yy)過的資料貼上到游標後面
n 顯示搜尋命令定位到的下一個字串
N 顯示搜尋命令定位到的上一個字串
u 撤銷上一步的操作
ctrl+f 向檔案尾翻一屏
ctrl+b 向檔案首翻一屏
a 在當前字元後新增文字
i 在當前字元前新增文字
o 在當前後面插入一空行
h、j、k、l 左、下、上、右
shirf + $ 行尾
shift + ^ 行首
shift + G 尾部
gg 首部

3.2 vi 末行模式常用命令

命令 作用
:w 儲存
:q 退出
:q! 強制退出
:wq! 強制儲存退出
:set nu 顯示行號
:set nu 不顯示行號
: s/one/two 當前游標所在行的第一個one替換成two
: s/one/two/g 當前游標所在行的所有one替換成two
:%s/one/two/g 將全文中的所有one替換成two
?str 在文字中從下至上搜索該字串
/str 在文字中從上至下搜尋該字串
4. bash 指令碼編輯

4.1 指令碼書寫

vi test.sh (按i進行編輯
#!/bin/bash頭內容解析器
echo "hello_word"shift+x儲存退出)
chmod u+x test.sh (給使用者賦執行許可權
執行指令碼方法有三種

  1. 直接路徑
    直接路徑 指令碼名
  2. 當前路徑
    ./ 指令碼名
  3. sh
    sh 指令碼名