1.bash的基礎(chǔ)特性:
bash的基礎(chǔ)特性:命令的執(zhí)行狀態(tài)結(jié)果
命令執(zhí)行的狀態(tài)結(jié)果:
bash通過(guò)狀態(tài)返回值來(lái)輸出此結(jié)果:
成功:0
失敳η:1-255
命令執(zhí)行完成之后显晶,其狀態(tài)返回值保存于bash的特殊變量$?中;
命令正常執(zhí)行時(shí),有的還回有命令返回值:
根據(jù)命令及其功能不同拱雏,結(jié)果各不相同忆矛;
引用命令的執(zhí)行結(jié)果:
$(COMMAND)
或`COMMAND`
bash的基于特性:引用
強(qiáng)引用:''
弱引用:""
命令引用:``
bash基礎(chǔ)特性:快捷鍵
Ctrl+a:跳轉(zhuǎn)至命令行行首
Ctrl+e:跳轉(zhuǎn)至命令行行尾
Ctrl+u:刪除行首至光標(biāo)所在處之間的所有字符;
Ctrl+k:刪除光標(biāo)所在處至行尾的所有字符济锄;
Ctrl+l:清屏,相當(dāng)于clear
bash的基礎(chǔ)特性之:命令行展開
~:自動(dòng)展開為用戶的家目錄霍转,或指定的用戶的家目錄荐绝;
{}:可承載一個(gè)以逗號(hào)分隔的路徑列表,并能夠?qū)⑵湔归_為多個(gè)路徑避消;
例如:/tmp/{a,b} 相當(dāng)于 /tmp/a /tmp/b
globbing:文件名通配(整體文件名匹配低滩,而非部分)
匹配模式:元字符
*:匹配任意長(zhǎng)度的任意字符
pa*, *pa*, *pa, *p*a*
pa, paa, passwd
?:匹配任意單個(gè)字符
pa?, ??pa, p?a, p?a?
pa, paa, passwd
[]:匹配指定范圍內(nèi)的任意單個(gè)字符
有幾種特殊格式:
[a-z], [A-Z], [0-9], [a-z0-9]
[[:upper:]]:所有大寫字母
[[:lower:]]:所有小寫字母
[[:alpha:]]:所有字母
[[:digit:]]:所有數(shù)字
[[:alnum:]]:所有的字母和數(shù)字
[[:space:]]:所有空白字符
[[:punct:]]:所有標(biāo)點(diǎn)符號(hào)
pa[0-9][0-9], 2[0-9][0-9]
[^]:匹配指定范圍外的任意單個(gè)字符
[^[:upper:]]
[^0-9]
[^[:alnum:]]
2.IO重定向及管道
程序:指令+數(shù)據(jù)
程序:IO
可用于輸入的設(shè)備:文件
鍵盤設(shè)備、文件系統(tǒng)上的常規(guī)文件岩喷、網(wǎng)卡等恕沫;
可用于輸出的設(shè)備:文件
顯示器、文件系統(tǒng)上的常規(guī)文件纱意、網(wǎng)卡等婶溯;
程序的數(shù)據(jù)流有三種:
輸入的數(shù)據(jù)流;<-- 標(biāo)準(zhǔn)輸入(stdin)偷霉,鍵盤迄委;
輸出的數(shù)據(jù)流:--> 標(biāo)準(zhǔn)輸出(stdout),顯示器类少;
錯(cuò)誤輸出流: --> 錯(cuò)誤輸出(stderr)叙身,顯示器;
fd: file descriptor硫狞,文件描述符
標(biāo)準(zhǔn)輸入:0
標(biāo)準(zhǔn)輸出:1
錯(cuò)誤輸出:2
IO重定向:
輸出重定向:>
特性:覆蓋輸出
輸出重定向:>>
特性:追加輸出
# set -C
禁止覆蓋輸出重定向至已存在的文件信轿;
此時(shí)可使用強(qiáng)制覆蓋輸出:>|
# set +C
關(guān)閉上述特性
錯(cuò)誤輸出流重定向:2>, 2>>
合并正常輸出流和錯(cuò)誤輸出流:
(1) &>, &>>
(2) COMMAND > /path/to/somefile 2>&1
COMMAND >> /path/to/somefile 2>&1
特殊設(shè)備:/dev/null
輸入重定向:<
tr命令:
tr [OPTION]... SET1 [SET2]
把輸入的數(shù)據(jù)當(dāng)中的字符晃痴,凡是在SET1定義范圍內(nèi)出現(xiàn)的,通通對(duì)位轉(zhuǎn)換為SET2出現(xiàn)的字符
用法1:
tr SET1 SET2 < /PATH/FROM/SOMEFILE
用法2:
tr -d SET1 < /PATH/FROM/SOMEFILE
注意:不修改原文件
Here Document:<<
cat << EOF
cat > /PATH/TO/SOMEFILE << EOF
管道:連接程序虏两,實(shí)現(xiàn)將前一個(gè)命令的輸出直接定向后一個(gè)程序當(dāng)作輸入數(shù)據(jù)流
COMMAND1 | COMMAND2 | COMMAND3 | ...
tee命令:
COMMAND | tee /PATH/TO/SOMEFILE
練習(xí)1:把/etc/passwd文件的前6行的信息轉(zhuǎn)換為大寫字符后輸出愧旦;
head -n 6 /etc/passwd | tr 'a-z' 'A-Z'
命令總結(jié):tr, tee
3.目錄管理類的命令:mkdir, rmdir
mkdir, rmdir
mkdir:make directories
mkdir [OPTION]... DIRECTORY...
-p: 自動(dòng)按需創(chuàng)建父目錄;
-v: verbose定罢,顯示詳細(xì)過(guò)程笤虫;
-m MODE:直接給定權(quán)限;
注意:路徑基名方為命令的作用對(duì)象祖凫;基名之前的路徑必須得存在琼蚯;
rmdir:remove empty directories
rmdir [OPTION]... DIRECTORY...
-p:刪除某目錄后,如果其父目錄為空惠况,則一并刪除之遭庶;
-v: 顯示過(guò)程;
tree命令:
tree [options] [directory]
-L level:指定要顯示的層級(jí)稠屠;
Q:使用命令行展開功能峦睡,創(chuàng)建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目錄下創(chuàng)建目錄:x_y, x_z, q_y, q_z
image.png
image.png
image.png
image.png
4.文件查看類命令:cat, tac, head, tail, more, less, stat, touch
分屏查看命令:more和less
more命令:
more FILE
特點(diǎn):翻屏至文件尾部后自動(dòng)退出权埠;
less命令:
less FILE
head命令:
查看文件的前n行榨了;
head [options] FILE
-n #
-#
tail命令:
查看文件的后n行;
tail [options] FILE
-n #
-#
-f:查看文件尾部?jī)?nèi)容結(jié)束后不退出攘蔽,跟隨顯示新增的行龙屉;
stat命令:
stat - display file or file system status
stat FILE...
文件:兩類數(shù)據(jù)
元數(shù)據(jù):metadata
數(shù)據(jù): data
時(shí)間戳:
access time:2015-12-10 16:12:22.776423693 +0800
modify time:2015-12-10 16:12:22.776423693 +0800
change time:2015-12-10 16:12:22.776423693 +0800
touch命令:
touch - change file timestamps
touch [OPTION]... FILE...
-c: 指定的文件路徑不存在時(shí)不予創(chuàng)建;
-a: 僅修改access time满俗;
-m:僅修改modify time转捕;
-t STAMP
[[CC]YY]MMDDhhmm[.ss]
Q:在/tmp目錄下創(chuàng)建以tfile開頭,后跟當(dāng)前日期和時(shí)間的文件唆垃,文件名形如:tfile-2016-05-27-09-32-22
image.png
image.png
image.png
Q:文件的元數(shù)據(jù)信息有哪些五芝,分別表示什么含義,如何查看降盹?如何修改文件的時(shí)間戳信息?
- 文件的數(shù)據(jù)分為兩類:一類為數(shù)據(jù)与柑,即文件的實(shí)際內(nèi)容;另一類為元數(shù)據(jù)蓄坏,用來(lái)描述文件屬性的數(shù)據(jù)价捧。
- 元數(shù)據(jù)信息包含:
File:文件名
Size:文件大小(單位:B)
Blocks:文件所占?jí)K個(gè)數(shù)
IO Block:每個(gè)數(shù)據(jù)塊的大形写痢(單位:B)
regular file:普通文件(此處顯示文件的類型)
Inode:文件的Inode號(hào)结蟋,文件的索引節(jié)點(diǎn)號(hào)
Links:硬鏈接次數(shù)
Access:權(quán)限
Uid:(屬主id/屬主名)
Gid:(屬組id/屬組名)
Context:文件所在的環(huán)境
Access:最近訪問(wèn)時(shí)間access time (atime)
Modify:數(shù)據(jù)改動(dòng)時(shí)間modification time (mtime)
Change:元數(shù)據(jù)改動(dòng)時(shí)間status time (ctime)
Creat:文件創(chuàng)建時(shí)間
image.png
image.png
5.文件管理工具:cp, mv, rm
cp命令:copy
源文件;目標(biāo)文件渔彰;
單源復(fù)制:cp [OPTION]... [-T] SOURCE DEST
多源復(fù)制:cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
單源復(fù)制:cp [OPTION]... [-T] SOURCE DEST
如果DEST不存在:則事先創(chuàng)建此文件嵌屎,并復(fù)制源文件的數(shù)據(jù)流至DEST中推正;
如果DEST存在:
如果DEST是非目錄文件:則覆蓋目標(biāo)文件;
如果DEST是目錄文件:則先在DEST目錄下創(chuàng)建一個(gè)與源文件同名的文件宝惰,并復(fù)制其數(shù)據(jù)流植榕;
多源復(fù)制:cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
如果DEST不存在:錯(cuò)誤;
如果DEST存在:
如果DEST是非目錄文件:錯(cuò)誤尼夺;
如果DEST是目錄文件:分別復(fù)制每個(gè)文件至目標(biāo)目錄中尊残,并保持原名;
常用選項(xiàng):
-i:交互式復(fù)制淤堵,即覆蓋之前提醒用戶確認(rèn)寝衫;
-f:強(qiáng)制覆蓋目標(biāo)文件;
-r, -R:遞歸復(fù)制目錄拐邪;
-d:復(fù)制符號(hào)鏈接文件本身慰毅,而非其指向的源文件;
-a:-dR --preserve=all, archive扎阶,用于實(shí)現(xiàn)歸檔汹胃;
--preserv=
mode:權(quán)限
ownership:屬主和屬組
timestamps: 時(shí)間戳
context:安全標(biāo)簽
xattr:擴(kuò)展屬性
links:符號(hào)鏈接
all:上述所有屬性
mv命令:move
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE..
常用選項(xiàng):
-i:交互式;
-f:force
rm命令:remove
rm [OPTION]... FILE...
常用選項(xiàng):
-i:interactive
-f:force
-r: recursive
刪除目錄:rm -rf /PATH/TO/DIR
危險(xiǎn)操作:rm -rf /*
注意:所有不用的文件建議不要直接刪除东臀,而是移動(dòng)至某個(gè)專用目錄统台;(模擬回收站)
Q:復(fù)制/etc目錄下所有以p開頭,以非數(shù)字結(jié)尾的文件或目錄到/tmp/mytest1目錄中啡邑。
image.png
image.png
5.用戶、組和權(quán)限管理
Multi-tasks, Multi-Users
每個(gè)使用者:
用戶標(biāo)識(shí)井赌、密碼谤逼;
Authentication
Authorization
Audition
組:用戶組,用戶容器
用戶類別:
管理員
普通用戶
系統(tǒng)用戶
登錄用戶
用戶標(biāo)識(shí):UserID, UID
16bits二進(jìn)制數(shù)字:0-65535
管理員:0
普通用戶:1-65635
系統(tǒng)用戶:1-499(CentOS6), 1-999(CentOS7)
登錄用戶:500-60000(CentOS6), 1000-60000(CentOS7)
名稱解析:名稱轉(zhuǎn)換
Username <--> UID
根據(jù)名稱解析庫(kù)進(jìn)行:/etc/passwd
組:
組類別1:
管理員組
普通用戶組
系統(tǒng)組
登錄組
組標(biāo)識(shí):GroupID, GID
管理員組:0
普通用戶組:1-65635
系統(tǒng)用戶組:1-499(CentOS6), 1-999(CentOS7)
登錄用戶組:500-60000(CentOS6), 1000-60000(CentOS7)
名稱解析:groupname <--> gid
解析庫(kù):/etc/group
組類別2:
用戶的基本組
用戶的附加組
組類別3:
私有組:組名同用戶名仇穗,且只包含一個(gè)用戶流部;
公共組:組內(nèi)包含了多個(gè)用戶;
認(rèn)證信息:
通過(guò)比對(duì)事先存儲(chǔ)的纹坐,與登錄時(shí)提供的信息是否一致枝冀;
password:
/etc/shadow
/etc/gshadow
密碼的使用策略:
1、使用隨機(jī)密碼耘子;
2果漾、最短長(zhǎng)度不要低于8位;
3谷誓、應(yīng)該使用大寫字母绒障、小寫字母、數(shù)字和標(biāo)點(diǎn)符號(hào)四類字符中至少三類捍歪;
4户辱、定期更換鸵钝;
加密算法:
對(duì)稱加密:加密和解密使用同一個(gè)密碼;
非對(duì)稱加密:加密和解密使用的一對(duì)兒密鑰庐镐;
密鑰對(duì)兒:
公鑰:public key
私鑰: private key
單向加密:只能加密恩商,不能解密;提取數(shù)據(jù)特征碼必逆;
定長(zhǎng)輸出
雪崩效應(yīng)
算法:
md5: message digest, 128bits
sha:secure hash algorithm, 160bits
sha224
sha256
sha384
sha512
在計(jì)算之時(shí)加salt怠堪,添加的隨機(jī)數(shù);
/etc/passwd:用戶的信息庫(kù)
name:password:UID:GID:GECOS:directory:shell
name: 用戶名
password:可以是加密的密碼末患,也可是占位符x研叫;
UID:
GID:用戶所屬的主組的ID號(hào);
GECOS:注釋信息
directory:用戶的家目錄璧针;
shell:用戶的默認(rèn)shell嚷炉,登錄時(shí)默認(rèn)shell程序;
/etc/shadow:用戶密碼
用戶名:加密的密碼:最近一次修改密碼的時(shí)間:最短使用期限:最長(zhǎng)使用期限:警告期段:過(guò)期期限:保留字段
/etc/group:組的信息庫(kù)
group_name:password:GID:user_list
user_list:該組的用戶成員探橱;以此組為附加組的用戶的用戶列表申屹;
相關(guān)命令:useradd, userdel, usermod, passwd, groupadd, groupdel, groupmod, gpasswd, chage, chsh, id, su
用戶管理基礎(chǔ)概念:
用戶類別:
管理員、普通用戶(系統(tǒng)用戶和登錄用戶)
組類別:
管理員組隧膏、普通用戶組
基本組和附加組
私有組哗讥、公共組
數(shù)據(jù)庫(kù)文件:
/etc/passwd
login:password:uid:gid:comment:home:shell
/etc/shadow
login:encrpted_password:...
/etc/group
group:password:gid:user_list
密碼存儲(chǔ)格式:?jiǎn)蜗蚣用埽⒔柚趕alt完成
1: md5
sha1
sha224
sha256
sha384
6: sha512
Linux用戶和組管理
安裝上下文:
進(jìn)程以其發(fā)起者的身份運(yùn)行胞枕;
進(jìn)程對(duì)文件的訪問(wèn)權(quán)限杆煞,取決于發(fā)起此進(jìn)程的用戶的權(quán)限;
系統(tǒng)用戶:為了能夠讓那后臺(tái)進(jìn)程或服務(wù)類進(jìn)程以非管理員的身份運(yùn)行腐泻,通常需要為此創(chuàng)建多個(gè)普通用戶决乎;這類用戶從不用登錄系統(tǒng);
groupadd命令:添加組
groupadd [選項(xiàng)] group_name
-g GID:指定GID派桩;默認(rèn)是上一個(gè)組的GID+1构诚;
-r: 創(chuàng)建系統(tǒng)組;
groupmod命令:修改組屬性
groupmod [選項(xiàng)] GROUP
-g GID:修改GID铆惑;
-n new_name:修改組名范嘱;
groupdel命令:刪除組
groupdel [選項(xiàng)] GROUP
useradd命令:創(chuàng)建用戶
useradd [選項(xiàng)] 登錄名
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本組ID员魏,此組得事先存在丑蛤;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個(gè)組之間用逗號(hào)分隔逆趋;
-c, --comment COMMENT:指明注釋信息盏阶;
-d, --home HOME_DIR:以指定的路徑為用戶的家目錄;通過(guò)復(fù)制/etc/skel此目錄并重命名實(shí)現(xiàn)闻书;指定的家目錄路徑如果事先存在名斟,則不會(huì)為用戶復(fù)制環(huán)境配置文件脑慧;
-s, --shell SHELL:指定用戶的默認(rèn)shell,可用的所有shell列表存儲(chǔ)在/etc/shells文件中砰盐;
-r, --system:創(chuàng)建系統(tǒng)用戶闷袒;
注意:創(chuàng)建用戶時(shí)的諸多默認(rèn)設(shè)定配置文件為/etc/login.defs
useradd -D:顯示創(chuàng)建用戶的默認(rèn)配置;
useradd -D 選項(xiàng): 修改默認(rèn)選項(xiàng)的值岩梳;
修改的結(jié)果保存于/etc/default/useradd文件中囊骤;
usermod命令:修改用戶屬性
usermod [選項(xiàng)] 登錄
-u, --uid UID:修改用戶的ID為此處指定的新UID;
-g, --gid GROUP:修改用戶所屬的基本組冀值;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組也物;原來(lái)的附加組會(huì)被覆蓋;
-a, --append:與-G一同使用列疗,用于為用戶追加新的附加組滑蚯;
-c, --comment COMMENT:修改注釋信息;
-d, --home HOME_DIR:修改用戶的家目錄抵栈;用戶原有的文件不會(huì)被轉(zhuǎn)移至新位置告材;
-m, --move-home:只能與-d選項(xiàng)一同使用,用于將原來(lái)的家目錄移動(dòng)為新的家目錄古劲;
-l, --login NEW_LOGIN:修改用戶名斥赋;
-s, --shell SHELL:修改用戶的默認(rèn)shell;
-L, --lock:鎖定用戶密碼产艾;即在用戶原來(lái)的密碼字符串之前添加一個(gè)"!"疤剑;
-U, --unlock:解鎖用戶的密碼;
userdel命令:刪除用戶
userdel [選項(xiàng)] 登錄
-r:刪除用戶時(shí)一并刪除其家目錄闷堡;
練習(xí)1:創(chuàng)建用戶gentoo骚露,UID為4001,基本組為gentoo缚窿,附加組為distro(GID為5000)和peguin(GID為5001);
練習(xí)2:創(chuàng)建用戶fedora焰扳,其注釋信息為"Fedora Core"倦零,默認(rèn)shell為/bin/tcsh;
練習(xí)3:修改gentoo用戶的家目錄為/var/tmp/gentoo吨悍;要求其原有文件仍能被用戶訪問(wèn)扫茅;
練習(xí)4:為gentoo新增附加組netadmin;
passwd命令:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
(1) passwd:修改用戶自己的密碼育瓜;
(2) passwd USERNAME:修改指定用戶的密碼葫隙,但僅root有此權(quán)限;
-l, -u:鎖定和解鎖用戶躏仇;
-d:清除用戶密碼串恋脚;
-e DATE: 過(guò)期期限腺办,日期;
-i DAYS:非活動(dòng)期限糟描;
-n DAYS:密碼的最短使用期限怀喉;
-x DAYS:密碼的最長(zhǎng)使用期限;
-w DAYS:警告期限船响;
--stdin:
echo "PASSWORD" | passwd --stdin USERNAME
gpasswd命令:
組密碼文件:/etc/gshadow
gpasswd [選項(xiàng)] group
-a USERNAME:向組中添加用戶
-d USERNAME:從組中移除用戶
newgrp命令:臨時(shí)切換指定的組為基本組躬拢;
newgrp [-] [group]
-: 會(huì)模擬用戶重新登錄以實(shí)現(xiàn)重新初始化其工作環(huán)境;
chage命令:更改用戶密碼過(guò)期信息
chage [選項(xiàng)] 登錄名
-d
-E
-W
-m
-M
id命令:顯示用戶的真和有效ID;
id [OPTION]... [USER]
-u: 僅顯示有效的UID见间;
-g: 僅顯示用戶的基本組ID;
-G:僅顯示用戶所屬的所有組的ID聊闯;
-n: 顯示名字而非ID;
su命令:switch user
登錄式切換:會(huì)通過(guò)讀取目標(biāo)用戶的配置文件來(lái)重新初始化
su - USERNAME
su -l USERNAME
非登錄式切換:不會(huì)讀取目標(biāo)用戶的配置文件進(jìn)行初始化
su USERNAME
注意:管理員可無(wú)密碼切換至其它任何用戶米诉;
-c 'COMMAND':僅以指定用戶的身份運(yùn)行此處指定的命令菱蔬;
其它幾個(gè)命令:chsh, chfn, finger, whoami, pwck, grpck
命令總結(jié):groupadd, groupmod, groupdel, useradd, usermod, userdel, passwd, gpasswd, newgrp, id, su, chage
Q:創(chuàng)建用戶tom,指定UID為5001,指定家目錄為/tmp/tom, 指定shell為/bin/zsh, 指定基本組為tom荒辕,附加組為jack
image.png
image.png