用戶登陸node
root 用戶 #表明管理員用戶linux
一個特殊的管理賬戶git
也被稱爲超級用戶正則表達式
root已接近完整的系統控制 算法
對系統損害幾乎有無限的能力 shell
除非有必要,不要登陸爲 root 數據庫
普通( 非特權 )用戶 $表明普通用戶vim
權限有限緩存
形成損害的能力比較有限 安全
什麼是shell :Shell 是Linux系統的用戶界面,提供了用戶與內核進行交互操做的一種接口。它接收用戶輸入的命令並把它送入內核去執行
shell也被稱爲LINUX的命令解釋器(command interpreter)
shell是一種高級程序設計語言
顯示全部類型的shell
顯示當前shell
在shell中可執行的命令有兩類
內部命令:由shell自帶的,並且經過某命令形式提供
help 內部命令列表
enable cmd 啓用內部命令
enable –n cmd 禁用內部命令
enable –n 查看全部禁用的內部命令
外部命令:在文件系統路徑下有對應的可執行程序文件
查看路徑:which -a |--skip-alias ; whereis
區別指定的命令是內部或外部命令
------內部命令
--------外部命令
Hash緩存表
系統初始hash表爲空,當外部命令執行時,默認會從PATH路徑下尋找該命令,找到後會將這條命令的路徑記錄到hash表中,當再次使用該命令時,shell解釋器首先會查看hash表,存在將執行之,若是不存在,將會去PATH路徑下尋找,利用hash緩存表可大大提升命令的調用速率
hash常見用法
hash 顯示hash緩存
hash –l 顯示hash緩存,可做爲輸入使用
hash –p path name 將命令全路徑path起別名爲name
hash –t name 打印緩存中name的路徑
hash –d name 清除name緩存
hash –r 清除緩存
命令別名
顯示當前shell進程全部可用的命令別名
定義別名NAME,其至關於執行命令VALUE alias NAME='VALUE'
在命令行中定義的別名,僅對當前shell進程有效
u若是想永久有效,要定義在配置文件中
僅對當前用戶:~/.bashrc
對全部用戶有效:/etc/bashrc
編輯配置給出的新配置不會當即生效
ubash進程從新讀取配置文件
source /path/to/config_file
. /path/to/config_file
撤消別名:unalias
unalias [-a] name [name ...]
-a 取消全部別
命令格式
選項:用於啓用或關閉命令的某個或某些功能
短選項:-c 例如:-l, -h
長選項:--word 例如:--all, --human-readable
Ø參數:命令的做用對象,好比文件名,用戶名等 (例如;ls -a ls --all)
注意:
Ø多個選項以及多參數和命令之間使用空白字符分隔
Ø取消和結束命令執行:Ctrl+c,Ctrl+d
Ø多個命令能夠用;符號分開
Ø一個命令能夠用\分紅多行
日期和時間------Linux的兩種時鐘
date 顯示和設置系統時間
clock: 顯示硬件時鐘
-s, --hctosys 以硬件時鐘爲準,校訂系統時鐘
-w, --systohc 以系統時鐘爲準,校訂硬件時鐘
Clock -w
時區:/etc/localtime
u顯示日曆:cal –y
簡單命令
關機:halt, poweroff
關機:halt, poweroff
u重啓:reboot
-f: 強制,不調用shutdown
-p: 切斷電源
u關機或重啓:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
-r: reboot
-h: halt
-c:cancel
TIME:無指定,默認至關於+1(CentOS7)
now: 馬上,至關於+0
+m: 相對時間表示法,幾分鐘以後;例如 +3
hh:mm: 絕對時間表示,指明具體時間
screen命令:須要安裝screen工具
建立新screen會話
screen –S [SESSION]
加入screen會話
screen –x [SESSION]
退出並關閉screen會話
exit
剝離當前screen會話
Ctrl+a,d
顯示全部已經打開的screen會話
screen -ls
恢復某screen會話
screen -r [SESSION
echo命令
u功能:顯示字符
語法:echo [-neE][字符串]
說明:echo會將輸入的字符串送往標準輸出。輸出的字符串間以空白字符隔開, 並在最後加上換行號
選項:
-E (默認)不支持 \ 解釋功能
-n 不自動換行-e 啓用 \ 字符的解釋功能
顯示變量
echo "$VAR_NAME」 變量會替換,弱引用
echo '$VAR_NAME’ 變量不會替換,強引用
命令行擴展:$( ) 或 ``
把一個命令的輸出打印給另外一個命令的參數
括號擴展:{ }
打印重複字符串的簡化形式
命令補全
內部命令:
外部命令:bash根據PATH環境變量定義的路徑,自左而右在每一個路徑搜尋以給定命令名命名的文件,第一次找到的命令即爲要執行的命令
用戶給定的字符串只有一條唯一對應的命令,直接補全
不然,再次Tab會給出列表
路徑補全
把用戶給出的字符串當作路徑開頭,並在其指定上級目錄下搜索以指定的字符串開頭的文件名
若是唯一:則直接補全
不然:再次Tab給出列表
登陸shell時,會讀取命令歷史文件中記錄下的命令~/.bash_history
登陸進shell後新執行的命令只會記錄在緩存中;這些命令會用戶退出時「追加」至命令歷史文件中
命令history
history [-c] [-d offset] [n]
uhistory -anrw [filename]
uhistory -ps arg [arg...]
-c: 清空命令歷史
-d offset: 刪除歷史中指定的第offset個命令
n: 顯示最近的n條歷史
-a: 追加本次會話新執行的命令歷史列表至歷史文件
-r: 讀歷史文件附加到歷史列表
-w: 保存歷史列表到指定的歷史文件
-n: 讀歷史文件中未讀過的行到歷史列表
-p: 展開歷史參數成多行,但不存在歷史列表中
-s: 展開歷史參數成一行,附加在歷史列表後
命令歷史相關環境變量
HISTSIZE:命令歷史記錄的條數
uHISTFILE:指定歷史文件,默認爲~/.bash_history
uHISTFILESIZE:命令歷史文件記錄歷史的條數
uHISTTIMEFORMAT=「%F %T 「 顯示時間
uHISTIGNORE=「str1:str2*:… 「 忽略str1命令,str2開頭的歷史
u控制命令歷史的記錄方式:
環境變量:HISTCONTROL
ignoredups 默認,忽略重複的命令,連續且相同爲「重複」
ignorespace 忽略全部以空白開頭的命令
ignoreboth 至關於ignoredups, ignorespace的組合
erasedups 刪除重複命令
uexport 變量名="值「
u存放在 /etc/profile 或 ~/.bash_profile
Whatis
顯示命令的簡短描述
u使用數據庫
u剛安裝後不可當即使用-----makewhatis | mandb製做數據庫
命令幫助
內部命令-----Help cd ,pwd,type
外部命令
--help或-h 選項
顯示用法總結和參數列表
使用的大多數,但並不是全部的
示例:
date --help
Usage: date [OPTION]... [+FORMAT] or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
[]表示可選項
CAPS或 <> 表示變化的數據
... 表示一個列表
x |y| z 的意思是「 x 或 y 或 z 「
-abc的 意思是-a -b –c
{ } 表示分組
man命令
提供命令幫助的文件
手冊頁存放在/usr/share/man
幾乎每一個命令都有man的「頁面」
man頁面分組爲不一樣的「章節」統稱爲Linux手冊
man命令的配置文件:/etc/man.config | man_db.conf
man 章節
uman 1 man
p1:用戶命令
p2:系統調用
p3:C庫調用
p4:設備文件及特殊文件
p5:配置文件格式
p6:遊戲
p7:雜項
p8:管理類的命令
p9:Linux 內核API
man 幫助段落說明
u幫助手冊中的段落說明:
NAME 名稱及簡要說明
SYNOPSIS 用法格式說明
•[] 可選內容
•<> 必選內容
•a|b 二選一
•{ } 分組
•... 同一內容可出現屢次
ØDESCRIPTION 詳細說明
ØOPTIONS 選項說明
ØEXAMPLES 示例
ØFILES 相關文件
ØAUTHOR 做者
ØCOPYRIGHT 版本信息
ØREPORTING BUGS bug信息
ØSEE ALSO 其它幫助參考
文件管理
文件系統
文件系統從根目錄下開始,用「/」表示
根文件系統(rootfs):root filesystem
文件名稱區分大小寫
以.開頭的文件爲隱藏文件
路徑分隔的 /
文件有兩類數據:
元數據:metadata
數據:data
文件名規則
文件名最長255個字節
包括路徑在內文件名稱最長4095個字節
藍色-->目錄 綠色-->可執行文件 紅色-->壓縮文件 淺藍色-->連接文件 灰色-->其餘文件
文件系統結構介紹
/boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器(bootloader, grub)都存放於此目錄
/bin:全部用戶使用的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序
/sbin:管理類的基本命令;不能關聯至獨立分區,OS啓動即會用到的程序
/lib:啓動時程序依賴的基本共享庫文件以及內核模塊文件(/lib/modules)
/lib64:專用於x86_64系統上的輔助共享庫文件存放位置
/etc:配置文件目錄
/home/USERNAME:普通用戶家目錄
/root:管理員的家目錄
/media:便攜式移動設備掛載點
/mnt:臨時文件系統掛載點
/dev:設備文件及特殊文件存儲位置
b: block device,隨機訪問
c: character device,線性訪問
/opt:第三方應用程序的安裝位置
/srv:系統上運行的服務用到的數據
/tmp:臨時文件存儲位置
---------------------------------------
/usr: universal shared, read-only data
bin: 保證系統擁有完整功能而提供的應用程序
sbin:
lib:32位使用
lib64:只存在64位系統
include: C程序的頭文件(header files)
share:結構化獨立的數據,例如doc, man等
local:第三方應用程序的安裝位置
bin, sbin, lib, lib64, etc, share
----------------------------------------
/var: variable data files
cache: 應用程序緩存數據目錄
lib: 應用程序狀態信息數據
local:專用於爲/usr/local下的應用程序存儲可變數據
lock: 鎖文件
log: 日誌目錄及文件
opt: 專用於爲/opt下的應用程序存儲可變數據
run: 運行中的進程相關數據,一般用於存儲進程pid文件
spool: 應用程序數據池
tmp: 保存系統兩次重啓之間產生的臨時數據
/proc: 用於輸出內核與進程信息相關的虛擬文件系統
/sys:用於輸出當前系統上硬件設備相關信息虛擬文件系統
/selinux: security enhanced Linux,selinux相關的安全策略等信息的存儲
Linux上的應用程序的組成部分
二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
庫文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
Linux下的文件類型
- 普通文件
d 目錄文件
b 塊設備
c 字符設備
l 符號連接文件
p 管道文件pipe
s 套接字文件socket
CentOS 7和6目錄變化區別
/bin 和 /usr/bin
/sbin 和 /usr/sbin
/lib 和/usr/lib
/lib64 和 /usr/lib64
顯示當前工做目錄
顯示當前shell CWD的絕對路徑
pwd: printing working directory
-P 顯示真實物理路徑
-L 顯示連接路徑(默認)
絕對和相對路徑
---絕對路徑
以正斜槓開始
完整的文件的位置路徑
可用於任何想指定一個文件名的時候
---相對路徑名
不以斜線開始
指定相對於當前工做目錄或某目錄的位置
能夠做爲一個簡短的形式指定一個文件名
基名:basename
目錄名:dirname
更改目錄
cd 改變目錄
使用絕對或相對路徑:
cd /home/wei/
cd home/wei
切換至父目錄 cd..
切換至當前用戶主目錄:cd
切換至之前的工做目錄: cd -
列出目錄內容
列出當前目錄的內容或指定目錄
用法:ls [options] [files_or_dirs]
示例
ls -a 包含隱藏文件
ls -l 顯示額外的信息
ls -R 目錄遞歸
ls -ld 目錄和符號連接信息
ls -1 文件分行顯示
ls –S 按從大到小排序
ls –t 按mtime排序
ls –u 配合-t選項,顯示並按atime重新到舊排序
ls –U 按目錄存放順序顯示
ls –X 按文件後綴排序
查看文件狀態
stat
文件:metadata, data
三個時間戳:
access time 訪問時間,atime,讀取文件內容
modify time 修改時間, mtime,改變文件內容(數據)
change time 改變時間, ctime,元數據發生改變
文件通配符
* 匹配零個或多個字符
? 匹配任何單個字符
~ 當前用戶家目錄
~mage 用戶mage家目錄
~+ 當前工做目錄
~- 前一個工做目錄
[0-9] 匹配數字範圍
[a-z]:字母
[A-Z]:字母
[wang] 匹配列表中的任何的一個字符
[^wang] 匹配列表中的全部字符之外的字符
建立空文件
touch命令
格式:touch [OPTION]... FILE...
複製文件和目錄cp
cp經常使用選項
-i 覆蓋前提示
-n 不覆蓋,注意二者順序
-r, -R 遞歸複製目錄及內部的全部內容
-a 歸檔,至關於-dR --preserv=all
-d --no-dereference --preserv=links 不復制原文件,只複製連接名
--preserv[=ATTR_LIST]
mode: 權限
ownership: 屬主屬組
timestamp:
links
xattr
context
al
-p 等同--preserv=mode,ownership,timestamp
-v --verbose
-f --force
-u --update 只複製源比目標更新文件或目標不存在的文件
-b 目標存在,覆蓋前先備份,形式爲 filename~
--backup=numbered 目標存在,覆蓋前先備份加數字後綴
移動文件
mv [OPTION]... [-T] SOURCE DEST
umv [OPTION]... SOURCE... DIRECTORY
umv [OPTION]... -t DIRECTORY SOURCE...
經常使用選項:
-i 交互式
-f 強制
-b 目標存在,覆蓋前先備份
刪除
rm [OPTION]... FILE...
u經常使用選項:
-i 交互式
-f 強制刪除
-r 遞歸
--no-preserve-root 刪除/
示例:
rm -rf /*
目錄操做
tree 顯示目錄樹
-d: 只顯示目錄
-L level:指定顯示的層級數目
-P pattern: 只顯示由指定pattern匹配到的路徑
mkdir 建立目錄
-p: 存在於不報錯,且可自動建立所需的各目錄
-v: 顯示詳細信息
-m MODE: 建立目錄時直接指定權限
rmdir 刪除空目錄
-p: 遞歸刪除父空目錄
-v: 顯示詳細信息
rm -r 遞歸刪除目錄樹
索引節點
inode(index node)表中包含文件系統全部文件列表
一個節點 (索引節點)是在一個表項,包含有關文件的信息( 元數據 ),包括:
文件類型,權限,UID,GID
連接數(指向這個文件名路徑名稱個數)
該文件的大小和不一樣的時間戳
指向磁盤上文件的數據塊指針
有關文件的其餘數據
inode表結構
目錄
文件引用一個是 inode號
人是經過文件名來引用一個文件
一個目錄是目錄下的文件名和文件inode號之間的映射
rm和inode
rm 命令:
連接數遞減,從而釋放的inode號能夠被重用
把數據塊放在空閒列表中
刪除目錄項
數據實際上不會立刻被刪除,但當另外一個文件使用數據塊時將被覆蓋
cp和inode
在 CP的 命令:
分配一個空閒的inode號,在inode表中生成新條目
在目錄中建立一個目錄項,將名稱與inode編號關聯
拷貝數據生成新的文件
mv和inode
若是mv命令的目標和源在相同的文件系統,做爲mv 命令
用新的文件名建立對應新的目錄項
刪除舊目錄條目對應的舊的文件名
不影響inode表(除時間戳)或磁盤上的數據位置:沒有數據被移動!
若是目標和源在一個不一樣的文件系統, mv至關於cp和rm
硬連接
建立硬連接會增長額外的記錄項以引用文件
對應於同一文件系統上一個物理文件
每一個目錄引用相同的inode號
建立時連接數遞增
刪除文件時:
rm命令遞減計數的連接
文件要存在,至少有一個連接數
當連接數爲零時,該文件被刪除
不能跨越驅動器或分區
符號連接或者軟連接
一個符號連接指向另外一個文件
ls - l的 顯示連接的名稱和引用的文件
一個符號連接的內容是它引用文件的名稱
能夠對目錄進行
能夠跨分區
指向的是另外一個文件的路徑;其大小爲指向的路徑字符串的長度;不增長或減小目標文件inode的引用計數
文本編輯工具vim
vim介紹
vi: Visual Interface,文本編輯器
文本:ASCII, Unicode
文本編輯種類:
行編輯器: sed
全屏編輯器:nano, vi
三種主要模式:
命令(Normal)模式:默認模式,移動光標,剪切/粘貼文本
插入(Insert)或編輯模式:修改文本
擴展命令(extended command )模式:保存,退出等
Esc鍵 退出當前模式
Esc鍵 Esc鍵 老是返回到命令模式
模式轉換
命令模式 --> 插入模式
i insert, 在光標所在處輸入
I 在當前光標所在行的行首輸入
a append, 在光標所在處後面輸入
A 在當前光標所在行的行尾輸入
o 在當前光標所在行的下方打開一個新行
O 在當前光標所在行的上方打開一個新行
關閉文件
擴展命令模式:
:q 退出
:q! 強制退出,丟棄作出的修改
:wq 保存退出
:x 保存退出
u命令模式
ZZ 保存退出
ZQ 不保存退出
擴展命令模式
按「:」進入Ex模式
建立一個命令提示符: 處於底部的屏幕左側
常見命令
w 寫(存)磁盤文件
wq 寫入並退出
x 寫入並退出
q 退出
q! 不存盤退出,即便更改都將丟失
命令模式光標跳轉
----字符間跳轉:
h: 左 l: 右 j: 下 k: 上
----單詞間跳轉:
w:下一個單詞的詞首
e:當前或下一單詞的詞尾
b:當前或前一個單詞的詞首
----當前頁跳轉:
H:頁首 M:頁中間行 L:頁底
zt:將光標所在當前行移到屏幕頂端
zz:將光標所在當前行移到屏幕中間
zb:將光標所在當前行移到屏幕底端
行首行尾跳轉:
^ 跳轉至行首的第一個非空白字符
0 跳轉至行首
$ 跳轉至行尾
行間移動:
#G 或者擴展命令模式下:# 跳轉至由第#行
G 最後一行
1G, gg 第一行
u句間移動:
) 下一句 ( 上一句
u段落間移動:
} 下一段 { 上一段
刪除命令:
d 刪除命令,可結合光標跳轉字符,實現範圍刪除
d$ 刪除到行尾
d^ 刪除到非空行首
d0 刪除到行首
dw
de
db
#COMMAND
udd:刪除光標所在的行
#dd 多行刪除
D:從當前光標位置一直刪除到行尾,等同於d$
複製命令(y, yank):
y 複製,行爲類似於d命令
y$
y0
y^
ye
yw
yb
#COMMAND
yy:複製行
#yy 複製多行
Y:複製整行
粘貼命令(p, paste):P
擴展命令模式:地址定界
地址定界
:start_pos,end_pos
# 具體第#行,例如2表示第2行
#,# 從左側#表示起始行,到右側#表示結尾行
#,+# 從左側#表示的起始行,加上右側#表示的行數
示例:2,+3 表示2到5行
. 當前行
$ 最後一行
.,$-1 當前行到倒數第二行
% 全文, 至關於1,$
/pattern/ 匹配pattern的行
u/pat1/,/pat2/
從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
#,/pat/
/pat/,$
命令模式:查找並替換
擴展命令模式:查找並替換
在擴展命令模式下完成查找替換操做
格式:s/要查找的內容/替換爲的內容/修飾符
要查找的內容:可以使用模式
替換爲的內容:不能使用模式,但可使用\1, \2, ...等後向引用符號;還可使用「&」引用前面查找時查找到的整個內容
修飾符:
i 忽略大小寫
g 全局替換,默認狀況下,每一行只替換第一次出現
gc 全局替換,每次替換前詢問
查找替換中的分隔符/可替換爲其它字符
s@/etc@/var@g
s#/boot#/#
定製vim的工做特性
配置文件:永久有效
全局:/etc/vimrc
我的:~/.vimrc
擴展命令模式:當前vim進程有效
---行號
顯示:set number,簡寫 set nu
取消顯示:set nonumber, 簡寫 set nonu
---自動縮進
啓用:set autoindent,簡寫 set ai
禁用:set noai
標準I/O和管道
標準輸入和輸出
程序:指令+數據
讀入數據:Input
輸出數據:Output
u打開的文件都有一個fd: file descriptor (文件描述符)
uLinux給程序提供三種 I/O 設備
標準輸入(STDIN)-0 默認接受來自鍵盤的輸入
標準輸出(STDOUT)-1 默認輸出到終端窗口
標準錯誤(STDERR)-2 默認輸出到終端窗口
uI/O重定向:改變默認位置
把輸出和錯誤從新定向到文件
STDOUT和STDERR能夠被重定向到文件
命令 操做符號 文件名
支持的操做符號包括:
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把全部輸出重定向到文件
> 文件內容會被覆蓋
set -C 禁止將內容覆蓋已有文件,但可追加
>| file 強制覆蓋
set +C 容許覆蓋
>> 原有內容基礎上,追加內容
tr命令
轉換和刪除字符
選項:
-c –C --complement:取字符集的補集
-d --delete:刪除全部屬於第一字符集的字符
-s --squeeze-repeats:把連續重複的字符以單獨一個字符表示
-t --truncate-set1:將第一個字符集對應字符轉化爲第二字符集對應的字符
[:alnum:]:字母和數字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符
[:digit:]:數字 [:graph:]:圖形字符 [:lower:]:小寫字母 [:print:]:可打印字符
[:punct:]:標點符號 [:space:]:空白字符 [:upper:]:大寫字母
[:xdigit:]:十六進制字符
管道
管道(使用符號「|」表示)用來鏈接命令
命令1 | 命令2 | 命令3 | …
將命令1的STDOUT發送給命令2的STDIN,命令2的STDOUT發送到命令3的STDIN
STDERR默認不能經過管道轉發,可利用2>&1 或 |& 實現
最後一個命令會在當前shell進程的子shell進程中執行
組合多種工具的功能
ls | tr ‘a-z’ ‘A-Z’
如:將/etc/issue⽂件中的內容轉換爲⼤寫後保存⾄/tmp/issue.bak⽂件中
將當前系統用戶信息轉換爲大寫保存在/tmp/who.bak裏
將PATH變量每一個⽬錄顯⽰在獨⽴的⼀⾏
用戶管理
管理員:root, 0
u普通用戶:1-60000 自動分配
系統用戶:1-499, 1-999 (CentOS7)
對守護進程獲取資源進行權限分配
登陸用戶:500+, 1000+(CentOS7)
交互式登陸
組group
管理員組:root, 0
u普通組:
系統組:1-499, 1-999(CENTOS7)
普通組:500+, 1000+(CENTOS7)
Linux組的類別
用戶的主要組(primary group)
用戶必須屬於一個且只有一個主組
組名同用戶名,且僅包含一個用戶,私有組
用戶的附加組(supplementary group)
一個用戶能夠屬於零個或多個輔助組
用戶和組的配置文件
Linux用戶和組的主要配置文件:
/etc/passwd:用戶及其屬性信息(名稱、UID、主組ID等)
/etc/group:組及其屬性信息
/etc/shadow:用戶密碼及其相關屬性
/etc/gshadow:組密碼及其相關屬性
passwd文件格式
login name:登陸用名 wei
passwd:密碼 (x)
UID:用戶身份編號 (1000)
GID:登陸默認所在組編號 (1000)
GECOS:用戶全名或註釋
home directory:用戶主目錄 (/home/wang)
shell:用戶默認使用shell (/bin/bash)
shadow文件格式
登陸用名
用戶密碼:通常用sha512加密
從1970年1月1日起到密碼最近一次被更改的時間
密碼再過幾天能夠被變動(0表示隨時可被變動)
密碼再過幾天必須被變動(99999表示永不過時)
密碼過時前幾天系統提醒用戶(默認爲一週)
密碼過時幾天後賬號會被鎖定
從1970年1月1日算起,多少天后賬號失效
密碼的複雜性策略
足夠長
使用數字、大寫字母、小寫字母及特殊字符中至少3種
使用隨機密碼
按期更換,不要使用最近曾經使用過的密碼
group文件格式
羣組名稱:就是羣組名稱
羣組密碼:一般不須要設定,密碼是被記錄在 /etc/gshadow
GID:就是羣組的 ID
以當前組爲附加組的用戶列表(分隔符爲逗號)
gshadow文件格式
羣組名稱:就是羣的名稱
組密碼:
組管理員列表:組管理員的列表,更改組密碼和成員
以當前組爲附加組的用戶列表:多個用戶間用逗號分隔
用戶和組管理命令
用戶管理命令
useradd
usermod
userdel
u組賬號維護命令
groupadd
groupmod
groupdel
用戶建立:useradd
-u UID
-o 配合-u 選項,不檢查UID的惟一性
-g GID 指明用戶所屬基本組,可爲組名,也能夠GID
-c "COMMENT「 用戶的註釋信息
-d HOME_DIR 以指定的路徑(不存在)爲家目錄
-s SHELL 指明用戶的默認shell程序,可用列表在/etc/shells文件中
-G GROUP1[,GROUP2,...] 爲用戶指明附加組,組須事先存在
-N 不建立私用組作主組,使用users組作主組
-r 建立系統用戶 CentOS 6: ID<500,CentOS 7: ID<1000
-m 建立家目錄,用於系統用戶
-M 不建立家目錄,用於非系統用戶
新建用戶的相關文件和命令
/etc/default/useradd
/etc/skel/*
/etc/login.defs
unewusers passwd格式文件 批量建立用戶
uchpasswd 批量修改用戶口令
用戶屬性修改
usermod [OPTION] login
-u UID: 新UID
-g GID: 新主組
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加組,原來的附加組將會被覆蓋;若保留原有,則要同時使用-a選項
-s SHELL:新的默認SHELL
-c 'COMMENT':新的註釋信息
-d HOME: 新家目錄不會自動建立;若要建立新家目錄並移動原家數據
刪除用戶
Userdel
查看用戶相關的ID信息
id [OPTION]... [USER]
-u: 顯示UID
-g: 顯示GID
-G: 顯示用戶所屬的組的ID
-n: 顯示名稱,需配合ugG使用
切換用戶或以其餘用戶身份執行命令
su [options...] [-] [user [args...]]
切換用戶的方式:
su UserName:非登陸式切換,即不會讀取目標用戶的配置文件,不改變當前工做目錄
su - UserName:登陸式切換,會讀取目標用戶的配置文件,切換至家目錄,徹底切換
root su至其餘用戶無須密碼;非root用戶切換時須要密碼
設置密碼
passwd [OPTIONS] UserName: 修改指定用戶的密碼
經常使用選項:
-d:刪除指定用戶密碼
-l:鎖定指定用戶
-u:解鎖指定用戶
-e:強制用戶下次登陸修改密碼
-f:強制操做
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提早多少天開始警告
-i inactivedays:非活動期限
--stdin:從標準輸入接收用戶密碼
建立組
groupadd [OPTION]... group_name
-g GID 指明GID號;[GID_MIN, GID_MAX]
-r 建立系統組
組刪除:groupdel
更改組密碼
組密碼:gpasswd
gpasswd [OPTION] GROUP
-a user 將user添加至指定組中
-d user 從指定組中移除用戶user
更改和查看組成員
groupmems [options] [action]
options:
-g, --group groupname 更改成指定組 (只有root)
actions:
-a, --add username 指定用戶加入組
-d, --delete username 從組中刪除用戶
-p, --purge 從組中清除全部成員
-l, --list 顯示組成員列表
groups [OPTION].[USERNAME]... 查看用戶所屬組列表
修改文件的屬主和屬組
修改文件的屬主:chown
chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法說明:
OWNER
OWNER:GROUP
:GROUP,冒號也可用 . 替換
-R: 遞歸
chown [OPTION]... --reference=RFILE FILE...
修改文件的屬組:chgrp
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 遞歸
文件權限
文件的權限主要針對三類對象進行定義
owner 屬主, u
group 屬組, g
other 其餘, o
u每一個文件針對每類訪問者都定義了三種權限
r Readable
w Writable
x eXcutable
文件:
r 可以使用文件查看類工具獲取其內容
w 可修改其內容
x 能夠把此文件提請內核啓動爲一個進程
目錄:
r 可使用ls查看此目錄中文件列表
w 可在此目錄中建立文件,也可刪除此目錄中的文件
x 可使用ls -l查看此目錄中文件元數據(須配合r),能夠cd進入此目錄
X 只給目錄x權限,不給文件x權限
修改文件權限
chmod [OPTION]... OCTAL-MODE FILE...
-R: 遞歸修改權限
uchmod [OPTION]... MODE[,MODE]... FILE...
MODE:
修改一類用戶的全部權限
u= g= o= ug= a= u=,g=
修改一類用戶某位或某些位權限
u+ u- g+ g- o+ o- a+ a- + -
遞歸給所屬組的子目錄加上讀寫執行權限
新建文件和目錄的默認權限
umask值 能夠用來保留在建立文件權限
新建文件的默認權限: 666-umask,若是所得結果某位存在執行(奇數)權限,則將其權限+1
新建目錄的默認權限: 777-umask
非特權用戶umask是 002
root的umask 是 022
umask: 查看
umask # 設定
示例:umask 002
umask u=rw,g=r,o=
全局設置: /etc/bashrc 用戶設置:~/.bashrc
Linux文件系統上的特殊權限
SUID, SGID, Sticky
三種經常使用權限:r, w, x user, group, other
可執行文件上SUID權限
任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有執行權限
啓動爲進程以後,其進程的屬主爲原程序文件的屬主
SUID只對二進制可執行程序有效
SUID設置在目錄上無心義
權限設定:
chmod u+s FILE...
chmod u-s FILE...
可執行文件上SGID權限
任何一個可執行程序文件能不能啓動爲進程:取決發起者對程序文件是否擁有執行權限
啓動爲進程以後,其進程的屬組爲原程序文件的屬組
權限設定:
chmod g+s FILE...
chmod g-s FILE...
目錄上的SGID權限
默認狀況下,用戶建立文件時,其屬組爲此用戶所屬的主組
一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中建立的文件所屬的組爲此目錄的屬組
一般用於建立一個協做目錄
權限設定:
chmod g+s DIR...
chmod g-s DIR
.
Sticky 位
具備寫權限的目錄一般用戶能夠刪除該目錄中的任何文件,不管該文件的權限或擁有權
在目錄設置Sticky 位,只有文件的全部者或root能夠刪除該文件
sticky 設置在文件上無心義
權限設定:
chmod o+t DIR...
chmod o-t DIR
權限位映射
SUID: user,佔據屬主的執行權限位
s:屬主擁有x權限
S:屬主沒有x權限
SGID: group,佔據屬組的執行權限位
s: group擁有x權限
S:group沒有x權限
Sticky: other,佔據other的執行權限位
t:other擁有x權限
T:other沒有x權限
設定文件特定屬性
chattr +i 不能刪除,更名,更改
chattr +a 只能追加內容
lsattr 顯示特定屬性
取消特定屬性
訪問控制列表
ACL:Access Control List,實現靈活的權限管理
除了文件的全部者,所屬組和其它人,能夠對更多的用戶設置權限
CentOS7 默認建立的xfs和ext4文件系統具備ACL功能
CentOS7 以前版本,默認手工建立的ext4文件系統無ACL功能,需手動增長
ACL生效順序:全部者,自定義用戶,自定義組,其餘人
ACL文件上的group權限是mask 值(自定義用戶,自定義組,擁有組的最大權限),而非傳統的組權限
getfacl 可看到特殊權限:flags
經過ACL賦予目錄默認x權限,目錄內文件也不會繼承x權限
base ACL 不能刪除
setfacl -k dir 刪除默認ACL權限
setfacl –b file1清除全部ACL權限
ugetfacl file1 | setfacl --set-file=- file2 複製file1的acl權限給file2
mask隻影響除全部者和other的以外的人和組的最大權限
Mask須要與用戶的權限進行邏輯與運算後,才能變成有限的權限
用戶或組的設置必須存在於mask權限設定範圍內纔會生效
顯示文本前或後行內容
head [OPTION]... [FILE]...
-c # 指定獲取前#字節
-n # 指定獲取前#行
-# 指定行數
utail [OPTION]... [FILE]...
-c # 指定獲取後#字節
-n # 指定獲取後#行
-# 同上
-f 跟蹤顯示文件fd新追加的內容,經常使用日誌監控
至關於 --follow=descriptor
-F 跟蹤文件名,至關於--follow=name --retry
按列抽取文本cut和合並文件paste
cut [OPTION]... [FILE]...
-d DELIMITER: 指明分隔符,默認tab
cut和paste
顯示文件或STDIN數據的指定列
paste 合併兩個文件同行號的列到一行
paste [OPTION]... [FILE]...
-d 分隔符:指定分隔符,默認用TAB
-s : 全部行合成一行顯示
示例:
paste f1 f2
paste -s f1 f2
文本數據統計:wc
整理文本:sort
比較文件:diff和patch
收集文本統計數據wc
計數單詞總數、行總數、字節總數和字符總數
經常使用選項
-l 只計數行數
-w 只計數單詞總數
-c 只計數字節總數
-m 只計數字符總數
-L 顯示文件中最長行的長度
文本排序sort
把整理過的文本顯示在STDOUT,不改變原始文件
sort [options] file(s)
經常使用選項
-r 執行反方向(由上至下)整理
-R 隨機排序
-n 執行按數字大小整理
-f 選項忽略(fold)字符串中的字符大小寫
-u 選項(獨特,unique)刪除輸出中的重複行
-t c 選項使用c作爲字段界定符
-k X 選項按照使用c字符分隔的X列來整理可以使用屢次
uniq
uniq命令:從輸入中刪除先後相接的重複的行
uniq [OPTION]... [FILE]...
-c: 顯示每行重複出現的次數
-d: 僅顯示重複過的行
-u: 僅顯示未曾重複的行
找出ifconfig 「網卡名」 命令結果中本機的IPv4地址
查出分區空間使用率的最大百分比值
文本處理三劍客
Grep ; 文本過濾(模式:pattern)工具
做用;文本搜索工具,用戶指定的模式對目標文本諑行進行匹配檢查;打印匹配到的行
-v 不匹配的行 排除 -o 僅顯示匹配到的字符串
-i 忽略大小寫 -q 不輸出任何信息
-n 顯示行 -e 實現多個選項間的邏輯or關係
-c 統計匹配的行數 -w 匹配整個單詞
-E 使用ERE -F 至關於fgrep ,不支持正則表達式
-f 根據模式文件處理
-A 顯示包括先後幾行 -B 前幾行 -C 中間先後幾行
正則表達式
Regexp 由一類特殊字符及文本字符所編寫的模式
分兩類;基本正則表達式 BRE
擴展正則表達式 ERE
正則表達式引擎:
採用不一樣算法,檢查處理正則表達式的軟件模塊
元字符分類;字符匹配,匹配次數,位置錨定,分組
字符匹配; . 匹配任意單個字符
匹配次數; *匹配前面的字符任意次,包括0次
\?匹配其前面的字符0或1次
\+ 匹配其前面的字符至少1次
\{n\}匹配前面的字符n次
\{m,n\}匹配前面的字符至少m次,至多n次
\{,n\}匹配前面的字符至多n次
\{n,\}匹配前面的字符至少n次
基本正則表達式元字符
字符匹配:
. 匹配任意單個字符
[] 匹配指定範圍內的任意單個字符,示例:[wang] [0-9] [a-z] [a-zA-Z]
[^] 匹配指定範圍外的任意單個字符
[:alnum:] 字母和數字
[:alpha:] 表明任何英文大小寫字符,亦即 A-Z, a-z
[:lower:] 小寫字母 [:upper:] 大寫字母
[:blank:] 空白字符(空格和製表符)
[:space:] 水平和垂直的空白字符
位置錨定:定位出現的位置
^ 行首錨定,用於模式的最左側
$ 行尾錨定,用於模式的最右側
^PATTERN$ 用於模式匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\< 或 \b 詞首錨定,用於單詞模式的左側
\> 或 \b 詞尾錨定,用於單詞模式的右側
\<PATTERN\> 匹配整個單詞
顯示/proc/meminfo文件中以大小s開頭的行
找出/etc/passwd中的兩位或三位數
顯示CentOS7的/etc/grub2.cfg文件中,至少以一個空白字符開頭的且後面有非空白字符的行
找出「netstat -tan」命令結果中以LISTEN後跟任意多個空白字符結尾的行
利用df和grep,取出磁盤各分區利用率,並從大到小排序
egrep及擴展的正則表達式
egrep = grep -E
egrep [OPTIONS] PATTERN [FILE...]
擴展正則表達式的元字符:
字符匹配:
. 任意單個字符
[] 指定範圍的字符
[^] 不在指定範圍的字符
次數匹配:
* 匹配前面字符任意次
? 0或1次
+ 1次或屢次
{m} 匹配m次
{m,n} 至少m,至多n次
位置錨定:
^ 行首
$ 行尾
\<, \b 語首
\>, \b 語尾
分組:
()
後向引用:\1, \2, ...
或者:
a|b a或b
C|cat C或cat
(C|c)at Cat或cat
找出/etc/rc.d/init.d/functions文件中行首爲某單詞(包括下劃線)後面跟一個小括號的行
使用egrep取出/etc/rc.d/init.d/functions中其基名
使用egrep取出上面路徑的目錄名