簡單文件權限管理命令總結:linux
1、命令功能總結shell
1.vimexpress
man文檔說明:vim
NAME vim - Vi IMproved, a programmers text editor SYNOPSIS vim [options] [file ..] vim [options] - vim [options] -t tag vim [options] -q [errorfile] ex gex view gvim gview vimx evim eview rvim rview rgvim rgview
中文說明:bash
加強型的vi文本編輯工具網絡
vim工做模式:(1)命令模式;(2)輸入模式;(3)末行模式:app
工做模式切換:編輯器
編輯模式 --> 輸入模式:
分佈式
參數: ide
i: insert 在當前光標處輸入
a:append 在當前光標後輸入
o:new line 切換新行輸入
I: 行首
A:行尾
O:上方新建行
輸入模式 --> 編輯模式: ESC
編輯模式 --> 末行模式::
末行模式 --> 編輯模式: ESC
打開文本文件: (1)vim filename (2) vim filename +行號 (3)vim filename /查找內容
關閉文件:
:q 退出
:q!不保存退出
:wq保存退出
:x保存退出
ZZ:保存退出
光標跳轉:
字符間跳轉:
h:左一個字符
l:右一個字符
j:下一個字符
k:上一個字符
單詞間跳轉:
w:後單詞的詞首
e:當前或後一個單詞的詞尾;
b:當前或前一單詞的詞首;
行內跳轉:
^: 跳轉至行首的第一個非空白字符;
0:跳轉至行首;
$: 跳轉至行尾;
行間移動:
G:文檔尾部
gg:文檔首部
句間移動:
)句首
(句尾
段落間移動:
}段首
{段尾
編輯命令:
字符編輯:
x: 刪除光標所在處的字符
#x:刪除x個字符
xp: 左右替換
r: 替換光標所在處的字符;
刪除命令:
d:
d^刪除光標到句首的字符
d$刪除光標到句尾的字符
dw, de, db
dd: 刪除整行
注意:刪除的內容會被vim編輯器保存至緩衝區當中;
粘貼:p (paste, put)
若是此複製或刪除的內容不是一個完整行
p:粘貼至當前光標所在處後面;
P:粘貼至當前光標所在處前面;
若是複製的內容是完整行(可不止一行)
p: 粘貼至當前光標所在行下方;
P:行上方;
複製命令:y, yank
y
y$, y^, y0
ye, yw, yb
yy: 複製行
撤消此前的編輯操做:
u:撤消此前編輯操做;
Ctrl+r:恢復此前的撤消操做
.: 重複前一個編輯操做
翻屏操做:
Ctrl+f: 向後一屏;
Ctrl+b:向前一屏;
Ctrl+d: 向後半屏
Ctrl+u: 向前半屏
vim內建教程:vimtutor
vim的末行模式
(1) 地址,定界:start_pos,end_pos
(2) 查找
/PATTERN:向尾部進行
?PATTERN:向首部進行
n: 與命令同方向
N:與命令反方向
(3) 查找替換
s: 在末行模式下,在地址定界的範圍內完成查找替換操做;
s/要查找的內容/替換爲的內容/修飾符
要查找的內容:可以使用模式
替換爲的內容:不能使用模式,但可使用後向引用符號,以引用前面模式中的分組括號所匹配到的內容;
\1, \2, ...
&:引用「要找的內容」匹配到的整個內容;
修飾符:
i: 忽略大小寫
g: 全局替換
/:用於分隔符,因此,要查找的內容或替換爲的內容中出現此符號,要使用\對其轉義,使用格式:\/
分隔符可替換爲其它字符:例如@,#等;
多文件模式:
vim FILE1 FILE2 ...
:next 下一個打開的文件
:first 第一個打開的文件
:prev 向前一個打開的文件
:last 最後一個打開的文件
:wqall 所有保存
:q!all 所有不保存
多文件窗口分割:vim -o|-O FILE1 FILE2 ...
Ctrl+w, ARROW
單文件窗口分割:
Ctrl+w, s: split, 水平分割
Ctrl+w, v: vertical, 垂直分割
定製vim的某些工做特性:
(1) 行號
顯示:set nu
禁用:set nonu
(2) 括號匹配
顯示:set sm
禁用:set nosm
(3) 自動縮進:
set ai
set noai
(4) 高亮搜索
set hlsearch
set nohlsearch
(5) 語法着色
syntax on
syntax off
(6) 忽略字符大小寫
set ic
set noic
:help 獲取幫助
:help SUBJECT
特性設定的永久生效方式:
全局配置文件:/etc/vimrc
用戶我的的配置文件:~/.vimrc
2.find
man說明:
NAME find - search for files in a directory hierarchy SYNOPSIS find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
中文說明:
搜索文件或文件夾命令
查找條件:
根據文件名進行查找:
-name "文件名稱": 支持使用glob;*, ?, []
-iname "文件名稱":不區分字符大小寫,支持使用glob;
-regex "PATTERN":以PATTERN匹配整個文件路徑字符串,而不單單是文件名稱;
根據屬主、屬組查找:
-user USERNAME: 查找屬主爲指定用戶的文件;
-group GROUPNAME:
-uid UserID: 查找文件的屬主指定uid的文件;
-gid GroupID:
-nouser: 查找沒有屬主的文件;
-nogroup:查找沒有屬組的文件;
根據文件類型進行查找:
-type TYPE
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)的任何一位權限符合條件便可;隱含或條件;
-MODE:爲每一類對象指定的每一位權限都必須同時存在方爲符合條件;隱含與條件;
處理動做:
-print: 默認處理動做
-ls:相似於對查找到的每一個文件作"ls -l"的操做;
-delete: 刪除查找到的文件;
-fls /path/to/somefile:查找到的文件的詳細路徑信息保存至指定文件中;
-ok COMMAND {} \;對每一個文件執行指定的命令以前須要用戶事先確認;
-exec COMMAND {} \;無需用戶確認;
3.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弱類型:
變量存儲數據時,默認均採用字符形式;任何變量能夠不經聲明,直接引用;
定義本地變量:name=value 查看:set
定義環境變量:export name=value ,declare -x name=value
查看:env, printenv, export
撤消變量:unset name
引用變量:${name}, $name
bash中的引用符號:
'': 強引用,變量替換不會發生
"":弱引用
``: 命令引用
shell登陸類型:
交互式登陸:
直接經過終端進行的登陸;
經過su - Username命令實現的用戶切換;
非交互式登陸:
圖形界面下打開的命令行窗口;
執行腳本;
su Username;
配置文件做用次序:
交互式登陸:/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式登陸:~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
4.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磁盤和系統管理知識
Linux磁盤管理
硬盤:機械式硬盤;SSD
機械式:
track
sector: 512bytes
cylinder: 分區的基本單位;
MBR:Master Boot Record
512bytes 446: bootloader 64: filesystem allocation table 16: 標識一個分區 2:55AA
磁盤接口類型:
IDE (ATA):133MB/s,/dev/hd
SCSI: 640MB/s
SATA:6Gbps
SAS:6Gbps
USB:480MB/s
識別硬盤設備:/dev/sdx
標記不一樣的硬盤設備:/dev/sd[a-z]
標記同一設備上的不一樣分區:/dev/sd[a-z][1-]
1-4: 主或擴展分區標識
5+:邏輯分區標識
設備文件:特殊文件
設備號:
major, minor
major: 設備類型
minor: 同一類型下的不一樣設備「塊」:block,隨機設備
「字符」:character,線性設備
分區:分隔存儲空間爲多個小的空間,每一個空間可獨立使用文件系統;
分區工具:fdisk, parted, sfdisk
fdisk工具的使用:
最多支持在一塊硬盤上的15個分區;
fdisk分區管理子命令:
p: 顯示
n: 建立
d: 刪除
t: 修改分區ID
l: 列出全部支持ID類型
w: 保存退出
q: 放棄修改並退出
m: 獲取幫助
建立完成以後,查看內核是否已經識別新的分區:
# cat /proc/partitions
有三個命令可讓內核重讀磁盤分區表:
CentOS 5: partprobe [DEVICE]
CentOS 6,7: partx kpartx
partx命令:
partx DEVICE
partx -a DEVICE
partx -a -n M:N DEVICE
M
M:分區範圍
:N
kpartx命令:
kpartx -af DEVICE
a:添加一個分區
Linux文件系統管理
文件系統:
VFS:Virtual File System
Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap
光盤:iso9660
Windows: fat32(vfat), ntfs
Unix: ffs, ufs, jfs, jfs2
網絡文件系統:nfs, cifs
集羣文件系統:ocfs2, gfs2
分佈式文件系統:ceph,moosefs, mogilefs, hdfs, gfs, glusterfs
(1) 日誌型文件系統
非日誌型文件系統:ext2
日誌型文件系統:ext3,ext4
(2) swap:交換分區
建立文件系統:
在分區上執行格式化(高級格式化)
要使用某種文件系統,知足兩個條件:
內核中:支持此種文件系統
用戶空間:有文件系統管理工具
建立工具:mkfs (make filesystem)
mkfs -t type DEVICE
mkfs.type DEVICE
ext系列文件系統的專用管理工具:
mke2fs -t {ext2|ext3|ext4} DEVICE
-b BLOCK: 1024, 2048, 4096
-L 'LABEL': 設定卷標
blkid命令:
blkid DEVICE
LABEL, UUID, TYPE
二,課後練習
1.複製/etc/grub.cfg配置文件至/tmp目錄,用查找替換命令刪除/tmp/grub.cfg文件中的行首的空白字符;
命令:
:%s/^[[:blank:]]//g
2.複製/etc/rc.d/init.d/functions文件至/tmp目錄,用查找替換命令爲/tmp/functions的每行開頭爲空白字符的行的行首加一個#; 原有空白字符保留;
命令:
%s/^[[:blank:]]/#&/g
3.替換/tmp/functions文件中的/etc/sysconfig/init爲/var/log;
命令:
%s@/etc/sysconfig/init@/var/log@g
4.刪除/tmp/functions文件中因此#開頭,且#後面至少跟了一個空白字符的行的行首#
命令:
:%s/^#[[:blank:]]/ /g
5.查找/var目錄屬主爲root,且屬組爲mail的全部文件;
命令:
find /var -user root -a -group mail -ls
6.查找/usr目錄下不屬於root、bin或hadoop的全部文件;
命令:
find /usr -not -user root -a -user bin -a -user hadoop
7.查找/etc目錄下最近一週內其內容修改過,且屬主不爲root或hadoop的全部文件;
命令:
find /etc -mtime -7 -a -not \( -user hadoop -o -user root \)
8.查找當前系統上沒有屬主或屬組,且最近一週內曾被訪問過的全部文件;
命令:
find / -nouser -a -nogroup -a -atime -7
9.查找/etc目錄下大於20k且類型爲普通誰的的全部文件;
命令:
find /etc -size +20k -a -type f
10.查找/etc目錄下全部用戶都沒有寫權限的文件;
命令:find /etc -not -perm /222
11.查找/etc目錄下至少有一類用戶沒有執行權限的文件;
命令:
find /etc -not -perm -111
12.查找/etc/init.d目錄下,全部用戶都有執行權限,且其它用戶擁有寫權限的文件;
命令:
find /etc/rc.d/init.d -perm -111 -a -perm -002
13.讓普通用戶能使用/tmp/cat去查看/etc/shadow文件;
命令:
cp /bin/cat /tmp chmod u+s /tmp/cat /tmp/cat /etc/shadow
14.建立目錄/test/data,讓某組內普通用戶對其有寫權限,且建立的全部文件的屬組爲目錄所屬的組;此外,每一個用戶僅能刪除本身的文件;
命令:
mkdir -p /test/data chmod g+w /test/data chmod g+s /test/data chmod o+t /test/data