linux教程
寫在前面
云平臺(tái)開(kāi)發(fā)經(jīng)常會(huì)中用到 shell 腳本和 linux操作,比如 nohup 后臺(tái)運(yùn)行 job,chown 修改主屬性,dd 快速創(chuàng)建大文件,vim 快捷鍵, cron定時(shí)任務(wù),logrotate 日志轉(zhuǎn)儲(chǔ)等等。
上一次學(xué)習(xí) linux 是看鳥叔的linux 私房菜,算是入門了,但是沒(méi)有深入下去。時(shí)隔四年也忘的差不多了,有必要再系統(tǒng)學(xué)習(xí)一下。
看 b 站狂神說(shuō)的教學(xué)視頻,很不錯(cuò)。初級(jí)入門可以看一下。
但是上面說(shuō)的 dd,cron,logrotate ,shell是沒(méi)有提及的,需要自己再去找資料學(xué)。
入門概述
linux 簡(jiǎn)介
Linux 是一套免費(fèi)使用和自由傳播的類 Unix 操作系統(tǒng),是一個(gè)基于 POSIX(可移植操作系統(tǒng)接口) 和 UNIX 的多用戶、多任務(wù)、支持多線程和多 CPU 的操作系統(tǒng)。
Linux 能運(yùn)行主要的 UNIX 工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持 32 位和 64 位硬件。Linux 繼承了 Unix 以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
Linux 發(fā)行版
Linux 的發(fā)行版說(shuō)簡(jiǎn)單點(diǎn)就是將 Linux 內(nèi)核與應(yīng)用軟件做一個(gè)打包。
Kali linux 安全滲透測(cè)試用
Linux 應(yīng)用領(lǐng)域
今天各種場(chǎng)合都有使用各種 Linux 發(fā)行版,從嵌入式設(shè)備到超級(jí)計(jì)算機(jī),并且在服務(wù)器領(lǐng)域確定了地位,通常服務(wù)器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)組合。
環(huán)境搭建
云服務(wù)器
注意云服務(wù)器要要配置安全組入方向規(guī)則,開(kāi)放22(ssh),21(ftp),443(https),80(http),8080(tomcat),3306(mysql),6379(redis)端口。
關(guān)于域名
如果自己的網(wǎng)站想要上線,就一定要購(gòu)買一個(gè)域名然后進(jìn)行備案;
備案的話需要一些認(rèn)證和時(shí)間,備完完畢后,就可以解析到自己的網(wǎng)站了,這個(gè)時(shí)候就可以使用域名來(lái)進(jìn)行服務(wù)器的訪問(wèn)!
linux 系統(tǒng)目錄結(jié)構(gòu)
開(kāi)關(guān)機(jī)
sync #將數(shù)據(jù)同步到磁盤,一般 shutdown 之前都會(huì) sync 一下 shutdown # 關(guān)機(jī)指令,你可以man shutdown 來(lái)看一下幫助文檔。例如你可以運(yùn)行如下命令關(guān)機(jī): shutdown –h 10 # 這個(gè)命令告訴大家,計(jì)算機(jī)將在10分鐘后關(guān)機(jī) shutdown –h now # 立馬關(guān)機(jī) shutdown –h 20:25 # 系統(tǒng)會(huì)在今天20:25關(guān)機(jī) shutdown –h +10 # 十分鐘后關(guān)機(jī) shutdown –r now # 系統(tǒng)立馬重啟 shutdown –r +10 # 系統(tǒng)十分鐘后重啟 reboot # 就是重啟,等同于 shutdown –r now halt # 關(guān)閉系統(tǒng),等同于shutdown –h now 和 poweroffopenJDK 卸載掉,用 OracleJDK
系統(tǒng)目錄結(jié)構(gòu)
樹(shù)狀目錄結(jié)構(gòu):(Linux的一切資源都掛載在這個(gè) / 根節(jié)點(diǎn)下)
以下是對(duì)這些目錄的解釋:
- /bin:bin是Binary的縮寫, 這個(gè)目錄存放著最經(jīng)常使用的命令。
- /boot: 這里存放的是啟動(dòng)Linux時(shí)使用的一些核心文件,包括一些連接文件以及鏡像文件。
- /dev : dev是Device(設(shè)備)的縮寫, 存放的是Linux的外部設(shè)備,在Linux中訪問(wèn)設(shè)備的方式和訪問(wèn)文件的方式是相同的。
- /etc: 這個(gè)目錄用來(lái)存放所有的系統(tǒng)管理所需要的配置文件和子目錄。
- /home:用戶的主目錄,在Linux中,每個(gè)用戶都有一個(gè)自己的目錄,一般該目錄名是以用戶的賬號(hào)命名的。
- /lib:這個(gè)目錄里存放著系統(tǒng)最基本的動(dòng)態(tài)連接共享庫(kù),其作用類似于Windows里的DLL文件。
- /lost+found:這個(gè)目錄一般情況下是空的,當(dāng)系統(tǒng)非法關(guān)機(jī)后,這里就存放了一些文件。
- /media:linux系統(tǒng)會(huì)自動(dòng)識(shí)別一些設(shè)備,例如U盤、光驅(qū)等等,當(dāng)識(shí)別后,linux會(huì)把識(shí)別的設(shè)備掛載到這個(gè)目錄下。
- /mnt:系統(tǒng)提供該目錄是為了讓用戶臨時(shí)掛載別的文件系統(tǒng)的,我們可以將光驅(qū)掛載在/mnt/上,然后進(jìn)入該目錄就可以查看光驅(qū)里的內(nèi)容了。
- /opt:這是給主機(jī)額外安裝軟件所擺放的目錄。比如你安裝一個(gè)ORACLE數(shù)據(jù)庫(kù)則就可以放到這個(gè)目錄下。默認(rèn)是空的。
- /proc:這個(gè)目錄是一個(gè)虛擬的目錄,它是系統(tǒng)內(nèi)存的映射,我們可以通過(guò)直接訪問(wèn)這個(gè)目錄來(lái)獲取系統(tǒng)信息。
- /root:該目錄為系統(tǒng)管理員,也稱作超級(jí)權(quán)限者的用戶主目錄。
- /sbin:s就是Super User的意思,這里存放的是系統(tǒng)管理員使用的系統(tǒng)管理程序。
- /srv:該目錄存放一些服務(wù)啟動(dòng)之后需要提取的數(shù)據(jù)。
- /sys:這是linux2.6內(nèi)核的一個(gè)很大的變化。該目錄下安裝了2.6內(nèi)核中新出現(xiàn)的一個(gè)文件系統(tǒng) sysfs 。
- /tmp:這個(gè)目錄是用來(lái)存放一些臨時(shí)文件的。
- /usr:這是一個(gè)非常重要的目錄,用戶的很多應(yīng)用程序和文件都放在這個(gè)目錄下,類似于windows下的program files目錄。
- /usr/bin: 系統(tǒng)用戶使用的應(yīng)用程序。
- /usr/sbin: 超級(jí)用戶使用的比較高級(jí)的管理程序和系統(tǒng)守護(hù)程序。
- /usr/src: 內(nèi)核源代碼默認(rèn)的放置目錄。
- /var:這個(gè)目錄中存放著在不斷擴(kuò)充著的東西,我們習(xí)慣將那些經(jīng)常被修改的目錄放在這個(gè)目錄下。包括各種日志文件。
- /run:是一個(gè)臨時(shí)文件系統(tǒng),存儲(chǔ)系統(tǒng)啟動(dòng)以來(lái)的信息。當(dāng)系統(tǒng)重啟時(shí),這個(gè)目錄下的文件應(yīng)該被刪掉或清除。
linux 基本命令
目錄管理
pwd ( 顯示目前所在的目錄 )
pwd 是 Print Working Directory 的縮寫,也就是顯示目前所在目錄的命令。
[root@kuangshen kuangstudy]#pwd [-P]選項(xiàng)與參數(shù):-P :顯示出確實(shí)的路徑,而非使用連接(link) 路徑。
mkdir (創(chuàng)建新目錄)
如果想要?jiǎng)?chuàng)建新的目錄的話,那么就使用mkdir (make directory)吧。
mkdir [-mp] 目錄名稱選項(xiàng)與參數(shù):
- -m :配置文件的權(quán)限喔!直接配置,不需要看默認(rèn)權(quán)限 (umask) 的臉色~
- -p :幫助你直接將所需要的目錄(包含上一級(jí)目錄)遞歸創(chuàng)建起來(lái)!
測(cè)試:
# 進(jìn)入我們用戶目錄下 [root@kuangshen /]# cd /home# 創(chuàng)建一個(gè) test 文件夾 [root@kuangshen home]# mkdir test# 創(chuàng)建多層級(jí)目錄 [root@kuangshen home]# mkdir test1/test2/test3/test4 mkdir: cannot create directory ‘test1/test2/test3/test4’: No such file or directory # <== 沒(méi)辦法直接創(chuàng)建此目錄啊!# 加了這個(gè) -p 的選項(xiàng),可以自行幫你創(chuàng)建多層目錄! [root@kuangshen home]# mkdir -p test1/test2/test3/test4# 創(chuàng)建權(quán)限為 rwx--x--x 的目錄。 [root@kuangshen home]# mkdir -m 711 test2 [root@kuangshen home]# ls -l drwxr-xr-x 2 root root 4096 Mar 12 21:55 test drwxr-xr-x 3 root root 4096 Mar 12 21:56 test1 drwx--x--x 2 root root 4096 Mar 12 21:58 test2rmdir ( 刪除空的目錄 )
語(yǔ)法:
rmdir [-p] 目錄名稱選項(xiàng)與參數(shù):**-p :**連同上一級(jí)『空的』目錄也一起刪除
cp ( 復(fù)制文件或目錄 )
語(yǔ)法:
[root@www ~]# cp [-adfilprsu] 來(lái)源檔(source) 目標(biāo)檔(destination) [root@www ~]# cp [options] source1 source2 source3 .... directory選項(xiàng)與參數(shù):
- **-a:**相當(dāng)於 -pdr 的意思,至於 pdr 請(qǐng)參考下列說(shuō)明;(常用)
- **-p:**連同文件的屬性一起復(fù)制過(guò)去,而非使用默認(rèn)屬性(備份常用);
- **-d:**若來(lái)源檔為連結(jié)檔的屬性(link file),則復(fù)制連結(jié)檔屬性而非文件本身;
- **-r:**遞歸持續(xù)復(fù)制,用於目錄的復(fù)制行為;(常用)
- **-f:**為強(qiáng)制(force)的意思,若目標(biāo)文件已經(jīng)存在且無(wú)法開(kāi)啟,則移除后再嘗試一次;
- **-i:**若目標(biāo)檔(destination)已經(jīng)存在時(shí),在覆蓋時(shí)會(huì)先詢問(wèn)動(dòng)作的進(jìn)行(常用)
- **-l:**進(jìn)行硬式連結(jié)(hard link)的連結(jié)檔創(chuàng)建,而非復(fù)制文件本身。
- **-s:**復(fù)制成為符號(hào)連結(jié)檔 (symbolic link),亦即『捷徑』文件;
- **-u:**若 destination 比 source 舊才升級(jí) destination !
基本屬性
看懂文件屬性
Linux系統(tǒng)是一種典型的多用戶系統(tǒng),不同的用戶處于不同的地位,擁有不同的權(quán)限。為了保護(hù)系統(tǒng)的安全性,Linux系統(tǒng)對(duì)不同的用戶訪問(wèn)同一文件(包括目錄文件)的權(quán)限做了不同的規(guī)定。
在Linux中我們可以使用ll或者ls –l命令來(lái)顯示一個(gè)文件的屬性以及文件所屬的用戶和組,如:
在Linux中第一個(gè)字符代表這個(gè)文件是目錄、文件或鏈接文件等等:
- 當(dāng)為[ d ]則是目錄
- 當(dāng)為[ - ]則是文件;
- 若是[ l ]則表示為鏈接文檔 ( link file );
- 若是[ b ]則表示為裝置文件里面的可供儲(chǔ)存的接口設(shè)備 ( 可隨機(jī)存取裝置 );
- 若是[ c ]則表示為裝置文件里面的串行端口設(shè)備,例如鍵盤、鼠標(biāo) ( 一次性讀取裝置 )。
接下來(lái)的字符中,以三個(gè)為一組,且均為『rwx』 的三個(gè)參數(shù)的組合。
其中,[ r ]代表可讀(read)、[ w ]代表可寫(write)、[ x ]代表可執(zhí)行(execute)。
要注意的是,這三個(gè)權(quán)限的位置不會(huì)改變,如果沒(méi)有權(quán)限,就會(huì)出現(xiàn)減號(hào)[ - ]而已。
每個(gè)文件的屬性由左邊第一部分的10個(gè)字符來(lái)確定(如下圖):
從左至右用0-9這些數(shù)字來(lái)表示。
第0位確定文件類型,第1-3位確定屬主(該文件的所有者)擁有該文件的權(quán)限。第4-6位確定屬組(所有者的同組用戶)擁有該文件的權(quán)限,第7-9位確定其他用戶擁有該文件的權(quán)限。
其中:
第1、4、7位表示讀權(quán)限,如果用"r"字符表示,則有讀權(quán)限,如果用"-"字符表示,則沒(méi)有讀權(quán)限;
第2、5、8位表示寫權(quán)限,如果用"w"字符表示,則有寫權(quán)限,如果用"-"字符表示沒(méi)有寫權(quán)限;
第3、6、9位表示可執(zhí)行權(quán)限,如果用"x"字符表示,則有執(zhí)行權(quán)限,如果用"-"字符表示,則沒(méi)有執(zhí)行權(quán)限。
對(duì)于文件來(lái)說(shuō),它都有一個(gè)特定的所有者,也就是對(duì)該文件具有所有權(quán)的用戶。
同時(shí),在Linux系統(tǒng)中,用戶是按組分類的,一個(gè)用戶屬于一個(gè)或多個(gè)組。
文件所有者以外的用戶又可以分為文件所有者的同組用戶和其他用戶。
因此,Linux系統(tǒng)按文件所有者、文件所有者同組用戶和其他用戶來(lái)規(guī)定了不同的文件訪問(wèn)權(quán)限。
在以上實(shí)例中,boot 文件是一個(gè)目錄文件,屬主和屬組都為 root。
修改文件屬性
1、chgrp:更改文件屬組
chgrp [-R] 屬組名 文件名-R:遞歸更改文件屬組,就是在更改某個(gè)目錄文件的屬組時(shí),如果加上-R的參數(shù),那么該目錄下的所有文件的屬組都會(huì)更改。
2、chown:更改文件屬主,也可以同時(shí)更改文件屬組
chown [–R] 屬主名 文件名 chown [-R] 屬主名:屬組名 文件名3、chmod:更改文件9個(gè)屬性
chmod [-R] xyz 文件或目錄Linux文件屬性有兩種設(shè)置方法,一種是數(shù)字,一種是符號(hào)。
Linux文件的基本權(quán)限就有九個(gè),分別是owner/group/others三種身份各有自己的read/write/execute權(quán)限。
文件內(nèi)容查看
概述
Linux系統(tǒng)中使用以下命令來(lái)查看文件的內(nèi)容:
- cat 由第一行開(kāi)始顯示文件內(nèi)容
- tac 從最后一行開(kāi)始顯示,可以看出 tac 是 cat 的倒著寫!
- nl 顯示的時(shí)候,順道輸出行號(hào)!
- more 一頁(yè)一頁(yè)的顯示文件內(nèi)容
- less 與 more 類似,但是比 more 更好的是,他可以往前翻頁(yè)!
- head 只看頭幾行
- tail 只看尾巴幾行
你可以使用 *man [命令]*來(lái)查看各個(gè)命令的使用文檔,如 :man cp。
cat 由第一行開(kāi)始顯示文件內(nèi)容
語(yǔ)法:
cat [-AbEnTv]選項(xiàng)與參數(shù):
- -A :相當(dāng)於 -vET 的整合選項(xiàng),可列出一些特殊字符而不是空白而已;
- -b :列出行號(hào),僅針對(duì)非空白行做行號(hào)顯示,空白行不標(biāo)行號(hào)!
- -E :將結(jié)尾的斷行字節(jié) $ 顯示出來(lái);
- -n :列印出行號(hào),連同空白行也會(huì)有行號(hào),與 -b 的選項(xiàng)不同;
- -T :將 [tab] 按鍵以 ^I 顯示出來(lái);
- -v :列出一些看不出來(lái)的特殊字符
測(cè)試:
# 查看網(wǎng)絡(luò)配置: 文件地址 /etc/sysconfig/network-scripts/ [root@kuangshen ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yestac
tac與cat命令剛好相反,文件內(nèi)容從最后一行開(kāi)始顯示,可以看出 tac 是 cat 的倒著寫!如:
[root@kuangshen ~]# tac /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes BOOTPROTO=dhcp DEVICE=eth0nl 顯示行號(hào)
語(yǔ)法:
nl [-bnw] 文件選項(xiàng)與參數(shù):
- -b :指定行號(hào)指定的方式,主要有兩種:-b a :表示不論是否為空行,也同樣列出行號(hào)(類似 cat -n);-b t :如果有空行,空的那一行不要列出行號(hào)(默認(rèn)值);
- -n :列出行號(hào)表示的方法,主要有三種:-n ln :行號(hào)在熒幕的最左方顯示;-n rn :行號(hào)在自己欄位的最右方顯示,且不加 0 ;-n rz :行號(hào)在自己欄位的最右方顯示,且加 0 ;
- -w :行號(hào)欄位的占用的位數(shù)。
測(cè)試:
[root@kuangshen ~]# nl /etc/sysconfig/network-scripts/ifcfg-eth0 1DEVICE=eth0 2BOOTPROTO=dhcp 3ONBOOT=yesmore 一頁(yè)一頁(yè)翻動(dòng)
在 more 這個(gè)程序的運(yùn)行過(guò)程中,你有幾個(gè)按鍵可以按的:
- 空白鍵 (space):代表向下翻一頁(yè);
- Enter :代表向下翻『一行』;
- /字串 :代表在這個(gè)顯示的內(nèi)容當(dāng)中,向下搜尋『字串』這個(gè)關(guān)鍵字;
- :f :立刻顯示出檔名以及目前顯示的行數(shù);
- q :代表立刻離開(kāi) more ,不再顯示該文件內(nèi)容。
- b 或 [ctrl]-b :代表往回翻頁(yè),不過(guò)這動(dòng)作只對(duì)文件有用,對(duì)管線無(wú)用。
less 一頁(yè)一頁(yè)翻動(dòng),以下實(shí)例輸出/etc/man.config文件的內(nèi)容:
less運(yùn)行時(shí)可以輸入的命令有:
- 空白鍵 :向下翻動(dòng)一頁(yè);
- [pagedown]:向下翻動(dòng)一頁(yè);
- [pageup] :向上翻動(dòng)一頁(yè);
- /字串 :向下搜尋『字串』的功能;
- ?字串 :向上搜尋『字串』的功能;
- n :重復(fù)前一個(gè)搜尋 (與 / 或 ? 有關(guān)!)
- N :反向的重復(fù)前一個(gè)搜尋 (與 / 或 ? 有關(guān)!)
- q :離開(kāi) less 這個(gè)程序;
head 取出文件前面幾行
語(yǔ)法:
head [-n number] 文件選項(xiàng)與參數(shù):-n 后面接數(shù)字,代表顯示幾行的意思!
默認(rèn)的情況中,顯示前面 10 行!若要顯示前 20 行,就得要這樣:
[root@kuangshen etc]# head -n 20 /etc/csh.logintail 取出文件后面幾行
語(yǔ)法:
tail [-n number] 文件選項(xiàng)與參數(shù):
- -n :后面接數(shù)字,代表顯示幾行的意思
默認(rèn)的情況中,顯示最后 10 行!若要顯示最后 20 行,就得要這樣:
[root@kuangshen etc]# tail -n 20 /etc/csh.login拓展:Linux 鏈接概念
Linux 鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號(hào)鏈接(Symbolic Link)。
情況下,ln 命令產(chǎn)生硬鏈接。
硬連接
硬連接指通過(guò)索引節(jié)點(diǎn)來(lái)進(jìn)行連接。在 Linux 的文件系統(tǒng)中,保存在磁盤分區(qū)中的文件不管是什么類型都給它分配一個(gè)編號(hào),稱為索引節(jié)點(diǎn)號(hào)(Inode Index)。在 Linux 中,多個(gè)文件名指向同一索引節(jié)點(diǎn)是存在的。比如:A 是 B 的硬鏈接(A 和 B 都是文件名),則 A 的目錄項(xiàng)中的 inode 節(jié)點(diǎn)號(hào)與 B 的目錄項(xiàng)中的 inode 節(jié)點(diǎn)號(hào)相同,即一個(gè) inode 節(jié)點(diǎn)對(duì)應(yīng)兩個(gè)不同的文件名,兩個(gè)文件名指向同一個(gè)文件,A 和 B 對(duì)文件系統(tǒng)來(lái)說(shuō)是完全平等的。刪除其中任何一個(gè)都不會(huì)影響另外一個(gè)的訪問(wèn)。
硬連接的作用是允許一個(gè)文件擁有多個(gè)有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。其原因如上所述,因?yàn)閷?duì)應(yīng)該目錄的索引節(jié)點(diǎn)有一個(gè)以上的連接。只刪除一個(gè)連接并不影響索引節(jié)點(diǎn)本身和其它的連接,只有當(dāng)最后一個(gè)連接被刪除后,文件的數(shù)據(jù)塊及目錄的連接才會(huì)被釋放。也就是說(shuō),文件真正刪除的條件是與之相關(guān)的所有硬連接文件均被刪除。
軟連接
另外一種連接稱之為符號(hào)連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似于 Windows 的快捷方式。它實(shí)際上是一個(gè)特殊的文件。在符號(hào)連接中,文件實(shí)際上是一個(gè)文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的軟鏈接(A 和 B 都是文件名),A 的目錄項(xiàng)中的 inode 節(jié)點(diǎn)號(hào)與 B 的目錄項(xiàng)中的 inode 節(jié)點(diǎn)號(hào)不相同,A 和 B 指向的是兩個(gè)不同的 inode,繼而指向兩塊不同的數(shù)據(jù)塊。但是 A 的數(shù)據(jù)塊中存放的只是 B 的路徑名(可以根據(jù)這個(gè)找到 B 的目錄項(xiàng))。A 和 B 之間是“主從”關(guān)系,如果 B 被刪除了,A 仍然存在(因?yàn)閮蓚€(gè)是不同的文件),但指向的是一個(gè)無(wú)效的鏈接。
測(cè)試:
[root@kuangshen /]# cd /home [root@kuangshen home]# touch f1 # 創(chuàng)建一個(gè)測(cè)試文件f1 [root@kuangshen home]# ls f1 [root@kuangshen home]# ln f1 f2 # 創(chuàng)建f1的一個(gè)硬連接文件f2 [root@kuangshen home]# ln -s f1 f3 # 創(chuàng)建f1的一個(gè)符號(hào)連接文件f3 [root@kuangshen home]# ls -li # -i參數(shù)顯示文件的inode節(jié)點(diǎn)信息 397247 -rw-r--r-- 2 root root 0 Mar 13 00:50 f1 397247 -rw-r--r-- 2 root root 0 Mar 13 00:50 f2 397248 lrwxrwxrwx 1 root root 2 Mar 13 00:50 f3 -> f1從上面的結(jié)果中可以看出,硬連接文件 f2 與原文件 f1 的 inode 節(jié)點(diǎn)相同,均為 397247,然而符號(hào)連接文件的 inode 節(jié)點(diǎn)不同。
# echo 字符串輸出 >> f1 輸出到 f1文件 [root@kuangshen home]# echo "I am f1 file" >>f1 [root@kuangshen home]# cat f1 I am f1 file [root@kuangshen home]# cat f2 I am f1 file [root@kuangshen home]# cat f3 I am f1 file [root@kuangshen home]# rm -f f1 [root@kuangshen home]# cat f2 I am f1 file [root@kuangshen home]# cat f3 cat: f3: No such file or directory通過(guò)上面的測(cè)試可以看出:當(dāng)刪除原始文件 f1 后,硬連接 f2 不受影響,但是符號(hào)連接 f1 文件無(wú)效;
依此您可以做一些相關(guān)的測(cè)試,可以得到以下全部結(jié)論:
- 刪除符號(hào)連接f3,對(duì)f1,f2無(wú)影響;
- 刪除硬連接f2,對(duì)f1,f3也無(wú)影響;
- 刪除原文件f1,對(duì)硬連接f2沒(méi)有影響,導(dǎo)致符號(hào)連接f3失效;
- 同時(shí)刪除原文件f1,硬連接f2,整個(gè)文件會(huì)真正的被刪除。
Vim編輯器
Vim是從 vi 發(fā)展出來(lái)的一個(gè)文本編輯器。代碼補(bǔ)完、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。
簡(jiǎn)單的來(lái)說(shuō), vi 是老式的字處理器,不過(guò)功能已經(jīng)很齊全了,但是還是有可以進(jìn)步的地方。
vim 則可以說(shuō)是程序開(kāi)發(fā)者的一項(xiàng)很好用的工具。
所有的 Unix Like 系統(tǒng)都會(huì)內(nèi)建 vi 文書編輯器,其他的文書編輯器則不一定會(huì)存在。
連 vim 的官方網(wǎng)站 (http://www.vim.org) 自己也說(shuō) vim 是一個(gè)程序開(kāi)發(fā)工具而不是文字處理軟件。
vim 鍵盤圖:
三種使用模式
基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。這三種模式的作用分別是:
命令模式:
用戶剛剛啟動(dòng) vi/vim,便進(jìn)入了命令模式。
此狀態(tài)下敲擊鍵盤動(dòng)作會(huì)被Vim識(shí)別為命令,而非輸入字符。比如我們此時(shí)按下i,并不會(huì)輸入一個(gè)字符,i被當(dāng)作了一個(gè)命令。
以下是常用的幾個(gè)命令:
- i 切換到輸入模式,以輸入字符。
- x 刪除當(dāng)前光標(biāo)所在處的字符。
- : 切換到底線命令模式,以在最底一行輸入命令。
若想要編輯文本:啟動(dòng)Vim,進(jìn)入了命令模式,按下i,切換到輸入模式。
命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。
輸入模式:
在命令模式下按下i就進(jìn)入了輸入模式。
在輸入模式中,可以使用以下按鍵:
- 字符按鍵以及Shift組合,輸入字符
- ENTER,回車鍵,換行
- BACK SPACE,退格鍵,刪除光標(biāo)前一個(gè)字符
- DEL,刪除鍵,刪除光標(biāo)后一個(gè)字符
- 方向鍵,在文本中移動(dòng)光標(biāo)
- HOME/END,移動(dòng)光標(biāo)到行首/行尾
- Page Up/Page Down,上/下翻頁(yè)
- Insert,切換光標(biāo)為輸入/替換模式,光標(biāo)將變成豎線/下劃線
- ESC,退出輸入模式,切換到命令模式
底線命令模式
在命令模式下按下:(英文冒號(hào))就進(jìn)入了底線命令模式。
底線命令模式可以輸入單個(gè)或多個(gè)字符的命令,可用的命令非常多。
在底線命令模式中,基本的命令有(已經(jīng)省略了冒號(hào)):
- q 退出程序
- w 保存文件
按ESC鍵可隨時(shí)退出底線命令模式。
Vim 按鍵說(shuō)明
除了上面簡(jiǎn)易范例的 i, Esc, :wq 之外,其實(shí) vim 還有非常多的按鍵可以使用。
第一部分:一般模式可用的光標(biāo)移動(dòng)、復(fù)制粘貼、搜索替換等
| h 或 向左箭頭鍵(←) | 光標(biāo)向左移動(dòng)一個(gè)字符 |
| j 或 向下箭頭鍵(↓) | 光標(biāo)向下移動(dòng)一個(gè)字符 |
| k 或 向上箭頭鍵(↑) | 光標(biāo)向上移動(dòng)一個(gè)字符 |
| l 或 向右箭頭鍵(→) | 光標(biāo)向右移動(dòng)一個(gè)字符 |
| [Ctrl] + [f] | 屏幕『向下』移動(dòng)一頁(yè),相當(dāng)于 [Page Down]按鍵 (常用) |
| [Ctrl] + [b] | 屏幕『向上』移動(dòng)一頁(yè),相當(dāng)于 [Page Up] 按鍵 (常用) |
| [Ctrl] + [d] | 屏幕『向下』移動(dòng)半頁(yè) |
| [Ctrl] + [u] | 屏幕『向上』移動(dòng)半頁(yè) |
| + | 光標(biāo)移動(dòng)到非空格符的下一行 |
| - | 光標(biāo)移動(dòng)到非空格符的上一行 |
| n< space> | 那個(gè) n 表示『數(shù)字』,例如 20 。按下數(shù)字后再按空格鍵,光標(biāo)會(huì)向右移動(dòng)這一行的 n 個(gè)字符。 |
| 0 或功能鍵[Home] | 這是數(shù)字『 0 』:移動(dòng)到這一行的最前面字符處 (常用) |
| $ 或功能鍵[End] | 移動(dòng)到這一行的最后面字符處(常用) |
| H | 光標(biāo)移動(dòng)到這個(gè)屏幕的最上方那一行的第一個(gè)字符 |
| M | 光標(biāo)移動(dòng)到這個(gè)屏幕的中央那一行的第一個(gè)字符 |
| L | 光標(biāo)移動(dòng)到這個(gè)屏幕的最下方那一行的第一個(gè)字符 |
| G | 移動(dòng)到這個(gè)檔案的最后一行(常用) |
| nG | n 為數(shù)字。移動(dòng)到這個(gè)檔案的第 n 行。例如 20G 則會(huì)移動(dòng)到這個(gè)檔案的第 20 行(可配合 :set nu) |
| gg | 移動(dòng)到這個(gè)檔案的第一行,相當(dāng)于 1G 啊!(常用) |
| n< Enter> | n 為數(shù)字。光標(biāo)向下移動(dòng) n 行(常用) |
| /word | 向光標(biāo)之下尋找一個(gè)名稱為 word 的字符串。例如要在檔案內(nèi)搜尋 vbird 這個(gè)字符串,就輸入 /vbird 即可!(常用) |
| ?word | 向光標(biāo)之上尋找一個(gè)字符串名稱為 word 的字符串。 |
| n | 這個(gè) n 是英文按鍵。代表重復(fù)前一個(gè)搜尋的動(dòng)作。舉例來(lái)說(shuō), 如果剛剛我們執(zhí)行 /vbird 去向下搜尋 vbird 這個(gè)字符串,則按下 n 后,會(huì)向下繼續(xù)搜尋下一個(gè)名稱為 vbird 的字符串。如果是執(zhí)行 ?vbird 的話,那么按下 n 則會(huì)向上繼續(xù)搜尋名稱為 vbird 的字符串! |
| N | 這個(gè) N 是英文按鍵。與 n 剛好相反,為『反向』進(jìn)行前一個(gè)搜尋動(dòng)作。例如 /vbird 后,按下 N 則表示『向上』搜尋 vbird 。 |
| x, X | 在一行字當(dāng)中,x 為向后刪除一個(gè)字符 (相當(dāng)于 [del] 按鍵), X 為向前刪除一個(gè)字符(相當(dāng)于 [backspace] 亦即是退格鍵) (常用) |
| nx | n 為數(shù)字,連續(xù)向后刪除 n 個(gè)字符。舉例來(lái)說(shuō),我要連續(xù)刪除 10 個(gè)字符, 『10x』。 |
| dd | 刪除游標(biāo)所在的那一整行(常用) |
| ndd | n 為數(shù)字。刪除光標(biāo)所在的向下 n 行,例如 20dd 則是刪除 20 行 (常用) |
| d1G | 刪除光標(biāo)所在到第一行的所有數(shù)據(jù) |
| dG | 刪除光標(biāo)所在到最后一行的所有數(shù)據(jù) |
| d$ | 刪除游標(biāo)所在處,到該行的最后一個(gè)字符 |
| d0 | 那個(gè)是數(shù)字的 0 ,刪除游標(biāo)所在處,到該行的最前面一個(gè)字符 |
| yy | 復(fù)制游標(biāo)所在的那一行(常用) |
| nyy | n 為數(shù)字。復(fù)制光標(biāo)所在的向下 n 行,例如 20yy 則是復(fù)制 20 行(常用) |
| y1G | 復(fù)制游標(biāo)所在行到第一行的所有數(shù)據(jù) |
| yG | 復(fù)制游標(biāo)所在行到最后一行的所有數(shù)據(jù) |
| y0 | 復(fù)制光標(biāo)所在的那個(gè)字符到該行行首的所有數(shù)據(jù) |
| y$ | 復(fù)制光標(biāo)所在的那個(gè)字符到該行行尾的所有數(shù)據(jù) |
| p, P | p 為將已復(fù)制的數(shù)據(jù)在光標(biāo)下一行貼上,P 則為貼在游標(biāo)上一行!舉例來(lái)說(shuō),我目前光標(biāo)在第 20 行,且已經(jīng)復(fù)制了 10 行數(shù)據(jù)。則按下 p 后, 那 10 行數(shù)據(jù)會(huì)貼在原本的 20 行之后,亦即由 21 行開(kāi)始貼。但如果是按下 P 呢?那么原本的第 20 行會(huì)被推到變成 30 行。(常用) |
| J | 將光標(biāo)所在行與下一行的數(shù)據(jù)結(jié)合成同一行 |
| c | 重復(fù)刪除多個(gè)數(shù)據(jù),例如向下刪除 10 行,[ 10cj ] |
| u | 復(fù)原前一個(gè)動(dòng)作。(常用) |
| [Ctrl]+r | 重做上一個(gè)動(dòng)作。(常用) |
第二部分:一般模式切換到編輯模式的可用的按鈕說(shuō)明
| i, I | 進(jìn)入輸入模式(Insert mode):i 為『從目前光標(biāo)所在處輸入』, I 為『在目前所在行的第一個(gè)非空格符處開(kāi)始輸入』。(常用) |
| a, A | 進(jìn)入輸入模式(Insert mode):a 為『從目前光標(biāo)所在的下一個(gè)字符處開(kāi)始輸入』, A 為『從光標(biāo)所在行的最后一個(gè)字符處開(kāi)始輸入』。(常用) |
| o, O | 進(jìn)入輸入模式(Insert mode):這是英文字母 o 的大小寫。o 為『在目前光標(biāo)所在的下一行處輸入新的一行』;O 為在目前光標(biāo)所在處的上一行輸入新的一行!(常用) |
| r, R | 進(jìn)入取代模式(Replace mode):r 只會(huì)取代光標(biāo)所在的那一個(gè)字符一次;R會(huì)一直取代光標(biāo)所在的文字,直到按下 ESC 為止;(常用) |
| [Esc] | 退出編輯模式,回到一般模式中(常用) |
第三部分:一般模式切換到指令行模式的可用的按鈕說(shuō)明
| :w | 將編輯的數(shù)據(jù)寫入硬盤檔案中(常用) |
| :w! | 若文件屬性為『只讀』時(shí),強(qiáng)制寫入該檔案。不過(guò),到底能不能寫入, 還是跟你對(duì)該檔案的檔案權(quán)限有關(guān)啊! |
| :q | 離開(kāi) vi (常用) |
| :q! | 若曾修改過(guò)檔案,又不想儲(chǔ)存,使用 ! 為強(qiáng)制離開(kāi)不儲(chǔ)存檔案。 |
| 注意一下啊,那個(gè)驚嘆號(hào) (!) 在 vi 當(dāng)中,常常具有『強(qiáng)制』的意思~ | |
| :wq | 儲(chǔ)存后離開(kāi),若為 :wq! 則為強(qiáng)制儲(chǔ)存后離開(kāi) (常用) |
| ZZ | 這是大寫的 Z 喔!若檔案沒(méi)有更動(dòng),則不儲(chǔ)存離開(kāi),若檔案已經(jīng)被更動(dòng)過(guò),則儲(chǔ)存后離開(kāi)! |
| :w [filename] | 將編輯的數(shù)據(jù)儲(chǔ)存成另一個(gè)檔案(類似另存新檔) |
| :r [filename] | 在編輯的數(shù)據(jù)中,讀入另一個(gè)檔案的數(shù)據(jù)。亦即將 『filename』 這個(gè)檔案內(nèi)容加到游標(biāo)所在行后面 |
| :n1,n2 w [filename] | 將 n1 到 n2 的內(nèi)容儲(chǔ)存成 filename 這個(gè)檔案。 |
| :! command | 暫時(shí)離開(kāi) vi 到指令行模式下執(zhí)行 command 的顯示結(jié)果!例如 『:! ls /home』即可在 vi 當(dāng)中看 /home 底下以 ls 輸出的檔案信息! |
| :set nu | 顯示行號(hào),設(shè)定之后,會(huì)在每一行的前綴顯示該行的行號(hào) |
| :set nonu | 與 set nu 相反,為取消行號(hào)! |
賬號(hào)管理
簡(jiǎn)介
Linux系統(tǒng)是一個(gè)多用戶多任務(wù)的分時(shí)操作系統(tǒng),任何一個(gè)要使用系統(tǒng)資源的用戶,都必須首先向系統(tǒng)管理員申請(qǐng)一個(gè)賬號(hào),然后以這個(gè)賬號(hào)的身份進(jìn)入系統(tǒng)。
用戶的賬號(hào)一方面可以幫助系統(tǒng)管理員對(duì)使用系統(tǒng)的用戶進(jìn)行跟蹤,并控制他們對(duì)系統(tǒng)資源的訪問(wèn);另一方面也可以幫助用戶組織文件,并為用戶提供安全性保護(hù)。
每個(gè)用戶賬號(hào)都擁有一個(gè)唯一的用戶名和各自的口令。
用戶在登錄時(shí)鍵入正確的用戶名和口令后,就能夠進(jìn)入系統(tǒng)和自己的主目錄。
實(shí)現(xiàn)用戶賬號(hào)的管理,要完成的工作主要有如下幾個(gè)方面:
- 用戶賬號(hào)的添加、刪除與修改。
- 用戶口令的管理。
- 用戶組的管理。
用戶賬號(hào)的管理
用戶賬號(hào)的管理工作主要涉及到用戶賬號(hào)的添加、修改和刪除。
添加用戶賬號(hào)就是在系統(tǒng)中創(chuàng)建一個(gè)新賬號(hào),然后為新賬號(hào)分配用戶號(hào)、用戶組、主目錄和登錄Shell等資源。
添加賬號(hào) useradd
useradd 選項(xiàng) 用戶名參數(shù)說(shuō)明:
-
選項(xiàng) :
-
- -c comment 指定一段注釋性描述。
- -d 目錄 指定用戶主目錄,如果此目錄不存在,則同時(shí)使用-m選項(xiàng),可以創(chuàng)建主目錄。
- -g 用戶組 指定用戶所屬的用戶組。
- -G 用戶組,用戶組 指定用戶所屬的附加組。
- -m 使用者目錄如不存在則自動(dòng)建立。
- -s Shell文件 指定用戶的登錄Shell。
- -u 用戶號(hào) 指定用戶的用戶號(hào),如果同時(shí)有-o選項(xiàng),則可以重復(fù)使用其他用戶的標(biāo)識(shí)號(hào)。
-
用戶名 :
-
- 指定新賬號(hào)的登錄名。
測(cè)試:
# 此命令創(chuàng)建了一個(gè)用戶kuangshen,其中-m選項(xiàng)用來(lái)為登錄名kuangshen產(chǎn)生一個(gè)主目錄 /home/kuangshen [root@kuangshen home]# useradd -m kuangshen增加用戶賬號(hào)就是在/etc/passwd文件中為新用戶增加一條記錄,同時(shí)更新其他系統(tǒng)文件如/etc/shadow, /etc/group等。
Linux下如何切換用戶
1.切換用戶的命令為:su username 【username是你的用戶名哦】
2.從普通用戶切換到root用戶,還可以使用命令:sudo su
3.在終端輸入exit或logout或使用快捷方式ctrl+d,可以退回到原來(lái)用戶,其實(shí)ctrl+d也是執(zhí)行的exit命令
4.在切換用戶時(shí),如果想在切換用戶之后使用新用戶的工作環(huán)境,可以在su和username之間加-,例如:【su - root】
$表示普通用戶
#表示超級(jí)用戶,也就是root用戶
刪除帳號(hào)
如果一個(gè)用戶的賬號(hào)不再使用,可以從系統(tǒng)中刪除。
刪除用戶賬號(hào)就是要將/etc/passwd等系統(tǒng)文件中的該用戶記錄刪除,必要時(shí)還刪除用戶的主目錄。
刪除一個(gè)已有的用戶賬號(hào)使用userdel命令,其格式如下:
userdel 選項(xiàng) 用戶名常用的選項(xiàng)是 -r,它的作用是把用戶的主目錄一起刪除。
[root@kuangshen home]# userdel -r kuangshen此命令刪除用戶kuangshen在系統(tǒng)文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的記錄,同時(shí)刪除用戶的主目錄。
修改帳號(hào)
修改用戶賬號(hào)就是根據(jù)實(shí)際情況更改用戶的有關(guān)屬性,如用戶號(hào)、主目錄、用戶組、登錄Shell等。
修改已有用戶的信息使用usermod命令,其格式如下:
usermod 選項(xiàng) 用戶名常用的選項(xiàng)包括-c, -d, -m, -g, -G, -s, -u以及-o等,這些選項(xiàng)的意義與useradd命令中的選項(xiàng)一樣,可以為用戶指定新的資源值。
例如:
# usermod -s /bin/ksh -d /home/z –g developer kuangshen此命令將用戶kuangshen的登錄Shell修改為ksh,主目錄改為/home/z,用戶組改為developer。
用戶口令的管理
用戶管理的一項(xiàng)重要內(nèi)容是用戶口令的管理。用戶賬號(hào)剛創(chuàng)建時(shí)沒(méi)有口令,但是被系統(tǒng)鎖定,無(wú)法使用,必須為其指定口令后才可以使用,即使是指定空口令。
指定和修改用戶口令的Shell命令是passwd。超級(jí)用戶可以為自己和其他用戶指定口令,普通用戶只能用它修改自己的口令。
命令的格式為:
passwd 選項(xiàng) 用戶名可使用的選項(xiàng):
- -l 鎖定口令,即禁用賬號(hào)。
- -u 口令解鎖。
- -d 使賬號(hào)無(wú)口令。
- -f 強(qiáng)迫用戶下次登錄時(shí)修改口令。
如果默認(rèn)用戶名,則修改當(dāng)前用戶的口令。
例如,假設(shè)當(dāng)前用戶是kuangshen,則下面的命令修改該用戶自己的口令:
$ passwd Old password:****** New password:******* Re-enter new password:*******如果是超級(jí)用戶,可以用下列形式指定任何用戶的口令:
# passwd kuangshen New password:******* Re-enter new password:*******普通用戶修改自己的口令時(shí),passwd命令會(huì)先詢問(wèn)原口令,驗(yàn)證后再要求用戶輸入兩遍新口令,如果兩次輸入的口令一致,則將這個(gè)口令指定給用戶;而超級(jí)用戶為用戶指定口令時(shí),就不需要知道原口令。
為了系統(tǒng)安全起見(jiàn),用戶應(yīng)該選擇比較復(fù)雜的口令,例如最好使用8位長(zhǎng)的口令,口令中包含有大寫、小寫字母和數(shù)字,并且應(yīng)該與姓名、生日等不相同。
為用戶指定空口令時(shí),執(zhí)行下列形式的命令:
# passwd -d kuangshen此命令將用戶 kuangshen的口令刪除,這樣用戶 kuangshen下一次登錄時(shí),系統(tǒng)就不再允許該用戶登錄了。
passwd 命令還可以用 -l(lock) 選項(xiàng)鎖定某一用戶,使其不能登錄,例如:
# passwd -l kuangshen用戶組管理
每個(gè)用戶都有一個(gè)用戶組,系統(tǒng)可以對(duì)一個(gè)用戶組中的所有用戶進(jìn)行集中管理。不同Linux 系統(tǒng)對(duì)用戶組的規(guī)定有所不同,如Linux下的用戶屬于與它同名的用戶組,這個(gè)用戶組在創(chuàng)建用戶時(shí)同時(shí)創(chuàng)建。
用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實(shí)際上就是對(duì)/etc/group文件的更新。
增加一個(gè)新的用戶組使用groupadd命令
groupadd 選項(xiàng) 用戶組可以使用的選項(xiàng)有:
- -g GID 指定新用戶組的組標(biāo)識(shí)號(hào)(GID)。
- -o 一般與-g選項(xiàng)同時(shí)使用,表示新用戶組的GID可以與系統(tǒng)已有用戶組的GID相同。
實(shí)例1:
# groupadd group1此命令向系統(tǒng)中增加了一個(gè)新組group1,新組的組標(biāo)識(shí)號(hào)是在當(dāng)前已有的最大組標(biāo)識(shí)號(hào)的基礎(chǔ)上加1。
實(shí)例2:
# groupadd -g 101 group2此命令向系統(tǒng)中增加了一個(gè)新組group2,同時(shí)指定新組的組標(biāo)識(shí)號(hào)是101。
如果要?jiǎng)h除一個(gè)已有的用戶組,使用groupdel命令
groupdel 用戶組例如:
# groupdel group1此命令從系統(tǒng)中刪除組group1。
修改用戶組的屬性使用groupmod命令
groupmod 選項(xiàng) 用戶組常用的選項(xiàng)有:
- -g GID 為用戶組指定新的組標(biāo)識(shí)號(hào)。
- -o 與-g選項(xiàng)同時(shí)使用,用戶組的新GID可以與系統(tǒng)已有用戶組的GID相同。
- -n新用戶組 將用戶組的名字改為新名字
切換組
如果一個(gè)用戶同時(shí)屬于多個(gè)用戶組,那么用戶可以在用戶組之間切換,以便具有其他用戶組的權(quán)限。
用戶可以在登錄后,使用命令newgrp切換到其他用戶組,這個(gè)命令的參數(shù)就是目的用戶組。例如:
$ newgrp root這條命令將當(dāng)前用戶切換到root用戶組,前提條件是root用戶組確實(shí)是該用戶的主組或附加組。
/etc/passwd
完成用戶管理的工作有許多種方法,但是每一種方法實(shí)際上都是對(duì)有關(guān)的系統(tǒng)文件進(jìn)行修改。
與用戶和用戶組相關(guān)的信息都存放在一些系統(tǒng)文件中,這些文件包括/etc/passwd, /etc/shadow, /etc/group等。
下面分別介紹這些文件的內(nèi)容。
/etc/passwd文件是用戶管理工作涉及的最重要的一個(gè)文件。
Linux系統(tǒng)中的每個(gè)用戶都在/etc/passwd文件中有一個(gè)對(duì)應(yīng)的記錄行,它記錄了這個(gè)用戶的一些基本屬性。
這個(gè)文件對(duì)所有用戶都是可讀的。它的內(nèi)容類似下面的例子:
# cat /etc/passwdroot:x:0:0:Superuser:/: daemon:x:1:1:System daemons:/etc: bin:x:2:2:Owner of system commands:/bin: sys:x:3:3:Owner of system files:/usr/sys: adm:x:4:4:System accounting:/usr/adm: uucp:x:5:5:UUCP administrator:/usr/lib/uucp: auth:x:7:21:Authentication administrator:/tcb/files/auth: cron:x:9:16:Cron daemon:/usr/spool/cron: listen:x:37:4:Network daemon:/usr/net/nls: lp:x:71:18:Printer administrator:/usr/spool/lp:從上面的例子我們可以看到,/etc/passwd中一行記錄對(duì)應(yīng)著一個(gè)用戶,每行記錄又被冒號(hào)(:)分隔為7個(gè)字段,其格式和具體含義如下:
用戶名:口令:用戶標(biāo)識(shí)號(hào):組標(biāo)識(shí)號(hào):注釋性描述:主目錄:登錄Shell1)"用戶名"是代表用戶賬號(hào)的字符串。
通常長(zhǎng)度不超過(guò)8個(gè)字符,并且由大小寫字母和/或數(shù)字組成。登錄名中不能有冒號(hào)(😃,因?yàn)槊疤?hào)在這里是分隔符。
為了兼容起見(jiàn),登錄名中最好不要包含點(diǎn)字符(.),并且不使用連字符(-)和加號(hào)(+)打頭。
2)“口令”一些系統(tǒng)中,存放著加密后的用戶口令字。
雖然這個(gè)字段存放的只是用戶口令的加密串,不是明文,但是由于/etc/passwd文件對(duì)所有用戶都可讀,所以這仍是一個(gè)安全隱患。因此,現(xiàn)在許多Linux 系統(tǒng)(如SVR4)都使用了shadow技術(shù),把真正的加密后的用戶口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個(gè)特殊的字符,例如“x”或者“*”。
3)“用戶標(biāo)識(shí)號(hào)”是一個(gè)整數(shù),系統(tǒng)內(nèi)部用它來(lái)標(biāo)識(shí)用戶。
一般情況下它與用戶名是一一對(duì)應(yīng)的。如果幾個(gè)用戶名對(duì)應(yīng)的用戶標(biāo)識(shí)號(hào)是一樣的,系統(tǒng)內(nèi)部將把它們視為同一個(gè)用戶,但是它們可以有不同的口令、不同的主目錄以及不同的登錄Shell等。
通常用戶標(biāo)識(shí)號(hào)的取值范圍是0~65 535。0是超級(jí)用戶root的標(biāo)識(shí)號(hào),1~99由系統(tǒng)保留,作為管理賬號(hào),普通用戶的標(biāo)識(shí)號(hào)從100開(kāi)始。在Linux系統(tǒng)中,這個(gè)界限是500。
4)“組標(biāo)識(shí)號(hào)”字段記錄的是用戶所屬的用戶組。
它對(duì)應(yīng)著/etc/group文件中的一條記錄。
5)“注釋性描述”字段記錄著用戶的一些個(gè)人情況。
例如用戶的真實(shí)姓名、電話、地址等,這個(gè)字段并沒(méi)有什么實(shí)際的用途。在不同的Linux 系統(tǒng)中,這個(gè)字段的格式并沒(méi)有統(tǒng)一。在許多Linux系統(tǒng)中,這個(gè)字段存放的是一段任意的注釋性描述文字,用作finger命令的輸出。
6)“主目錄”,也就是用戶的起始工作目錄。
它是用戶在登錄到系統(tǒng)之后所處的目錄。在大多數(shù)系統(tǒng)中,各用戶的主目錄都被組織在同一個(gè)特定的目錄下,而用戶主目錄的名稱就是該用戶的登錄名。各用戶對(duì)自己的主目錄有讀、寫、執(zhí)行(搜索)權(quán)限,其他用戶對(duì)此目錄的訪問(wèn)權(quán)限則根據(jù)具體情況設(shè)置。
7)用戶登錄后,要啟動(dòng)一個(gè)進(jìn)程,負(fù)責(zé)將用戶的操作傳給內(nèi)核,這個(gè)進(jìn)程是用戶登錄到系統(tǒng)后運(yùn)行的命令解釋器或某個(gè)特定的程序,即Shell。
Shell是用戶與Linux系統(tǒng)之間的接口。Linux的Shell有許多種,每種都有不同的特點(diǎn)。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。
系統(tǒng)管理員可以根據(jù)系統(tǒng)情況和用戶習(xí)慣為用戶指定某個(gè)Shell。如果不指定Shell,那么系統(tǒng)使用sh為默認(rèn)的登錄Shell,即這個(gè)字段的值為/bin/sh。
用戶的登錄Shell也可以指定為某個(gè)特定的程序(此程序不是一個(gè)命令解釋器)。
利用這一特點(diǎn),我們可以限制用戶只能運(yùn)行指定的應(yīng)用程序,在該應(yīng)用程序運(yùn)行結(jié)束后,用戶就自動(dòng)退出了系統(tǒng)。有些Linux 系統(tǒng)要求只有那些在系統(tǒng)中登記了的程序才能出現(xiàn)在這個(gè)字段中。
8)系統(tǒng)中有一類用戶稱為偽用戶(pseudo users)。
這些用戶在/etc/passwd文件中也占有一條記錄,但是不能登錄,因?yàn)樗鼈兊牡卿汼hell為空。它們的存在主要是方便系統(tǒng)管理,滿足相應(yīng)的系統(tǒng)進(jìn)程對(duì)文件屬主的要求。
常見(jiàn)的偽用戶如下所示:
偽 用 戶 含 義 bin 擁有可執(zhí)行的用戶命令文件 sys 擁有系統(tǒng)文件 adm 擁有帳戶文件 uucp UUCP使用 lp lp或lpd子系統(tǒng)使用 nobody NFS使用/etc/shadow
1、除了上面列出的偽用戶外,還有許多標(biāo)準(zhǔn)的偽用戶,例如:audit, cron, mail, usenet等,它們也都各自為相關(guān)的進(jìn)程和文件所需要。
由于/etc/passwd文件是所有用戶都可讀的,如果用戶的密碼太簡(jiǎn)單或規(guī)律比較明顯的話,一臺(tái)普通的計(jì)算機(jī)就能夠很容易地將它破解,因此對(duì)安全性要求較高的Linux系統(tǒng)都把加密后的口令字分離出來(lái),單獨(dú)存放在一個(gè)文件中,這個(gè)文件是/etc/shadow文件。有超級(jí)用戶才擁有該文件讀權(quán)限,這就保證了用戶密碼的安全性。
2、/etc/shadow中的記錄行與/etc/passwd中的一一對(duì)應(yīng),它由pwconv命令根據(jù)/etc/passwd中的數(shù)據(jù)自動(dòng)產(chǎn)生
它的文件格式與/etc/passwd類似,由若干個(gè)字段組成,字段之間用":"隔開(kāi)。這些字段是:
登錄名:加密口令:最后一次修改時(shí)間:最小時(shí)間間隔:最大時(shí)間間隔:警告時(shí)間:不活動(dòng)時(shí)間:失效時(shí)間:標(biāo)志/etc/group
用戶組的所有信息都存放在/etc/group文件中。
將用戶分組是Linux 系統(tǒng)中對(duì)用戶進(jìn)行管理及控制訪問(wèn)權(quán)限的一種手段。
每個(gè)用戶都屬于某個(gè)用戶組;一個(gè)組中可以有多個(gè)用戶,一個(gè)用戶也可以屬于不同的組。
當(dāng)一個(gè)用戶同時(shí)是多個(gè)組中的成員時(shí),在/etc/passwd文件中記錄的是用戶所屬的主組,也就是登錄時(shí)所屬的默認(rèn)組,而其他組稱為附加組。
用戶要訪問(wèn)屬于附加組的文件時(shí),必須首先使用newgrp命令使自己成為所要訪問(wèn)的組中的成員。
用戶組的所有信息都存放在/etc/group文件中。此文件的格式也類似于/etc/passwd文件,由冒號(hào)(:)隔開(kāi)若干個(gè)字段,這些字段有:
組名:口令:組標(biāo)識(shí)號(hào):組內(nèi)用戶列表磁盤管理
概述
Linux磁盤管理好壞直接關(guān)系到整個(gè)系統(tǒng)的性能問(wèn)題。
Linux磁盤管理常用命令為 df、du。
- df :列出文件系統(tǒng)的整體磁盤使用量
- du:檢查磁盤空間使用量
df
df命令參數(shù)功能:檢查文件系統(tǒng)的磁盤空間占用情況。可以利用該命令來(lái)獲取硬盤被占用了多少空間,目前還剩下多少空間等信息。
語(yǔ)法:
df [-ahikHTm] [目錄或文件名]選項(xiàng)與參數(shù):
- -a :列出所有的文件系統(tǒng),包括系統(tǒng)特有的 /proc 等文件系統(tǒng);
- -k :以 KBytes 的容量顯示各文件系統(tǒng);
- -m :以 MBytes 的容量顯示各文件系統(tǒng);
- -h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
- -H :以 M=1000K 取代 M=1024K 的進(jìn)位方式;
- -T :顯示文件系統(tǒng)類型, 連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
- -i :不用硬盤容量,而以 inode 的數(shù)量來(lái)顯示
測(cè)試:
# 將系統(tǒng)內(nèi)所有的文件系統(tǒng)列出來(lái)! # 在 Linux 底下如果 df 沒(méi)有加任何選項(xiàng) # 那么默認(rèn)會(huì)將系統(tǒng)內(nèi)所有的 (不含特殊內(nèi)存內(nèi)的文件系統(tǒng)與 swap) 都以 1 Kbytes 的容量來(lái)列出來(lái)! [root@kuangshen /]# df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 889100 0 889100 0% /dev tmpfs 899460 704 898756 1% /dev/shm tmpfs 899460 496 898964 1% /run tmpfs 899460 0 899460 0% /sys/fs/cgroup /dev/vda1 41152812 6586736 32662368 17% / tmpfs 179896 0 179896 0% /run/user/0 # 將容量結(jié)果以易讀的容量格式顯示出來(lái) [root@kuangshen /]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 869M 0 869M 0% /dev tmpfs 879M 708K 878M 1% /dev/shm tmpfs 879M 496K 878M 1% /run tmpfs 879M 0 879M 0% /sys/fs/cgroup /dev/vda1 40G 6.3G 32G 17% / tmpfs 176M 0 176M 0% /run/user/0 # 將系統(tǒng)內(nèi)的所有特殊文件格式及名稱都列出來(lái) [root@kuangshen /]# df -aT Filesystem Type 1K-blocks Used Available Use% Mounted on sysfs sysfs 0 0 0 - /sys proc proc 0 0 0 - /proc devtmpfs devtmpfs 889100 0 889100 0% /dev securityfs securityfs 0 0 0 - /sys/kernel/security tmpfs tmpfs 899460 708 898752 1% /dev/shm devpts devpts 0 0 0 - /dev/pts tmpfs tmpfs 899460 496 898964 1% /run tmpfs tmpfs 899460 0 899460 0% /sys/fs/cgroup cgroup cgroup 0 0 0 - /sys/fs/cgroup/systemd pstore pstore 0 0 0 - /sys/fs/pstore cgroup cgroup 0 0 0 - /sys/fs/cgroup/freezer cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpuset cgroup cgroup 0 0 0 - /sys/fs/cgroup/hugetlb cgroup cgroup 0 0 0 - /sys/fs/cgroup/blkio cgroup cgroup 0 0 0 - /sys/fs/cgroup/net_cls,net_prio cgroup cgroup 0 0 0 - /sys/fs/cgroup/memory cgroup cgroup 0 0 0 - /sys/fs/cgroup/pids cgroup cgroup 0 0 0 - /sys/fs/cgroup/cpu,cpuacct cgroup cgroup 0 0 0 - /sys/fs/cgroup/devices cgroup cgroup 0 0 0 - /sys/fs/cgroup/perf_event configfs configfs 0 0 0 - /sys/kernel/config /dev/vda1 ext4 41152812 6586748 32662356 17% / systemd-1 - - - - - /proc/sys/fs/binfmt_misc mqueue mqueue 0 0 0 - /dev/mqueue debugfs debugfs 0 0 0 - /sys/kernel/debug hugetlbfs hugetlbfs 0 0 0 - /dev/hugepages tmpfs tmpfs 179896 0 179896 0% /run/user/0 binfmt_misc binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc # 將 /etc 底下的可用的磁盤容量以易讀的容量格式顯示[root@kuangshen /]# df -h /etc Filesystem Size Used Avail Use% Mounted on /dev/vda1 40G 6.3G 32G 17% /du
Linux du命令也是查看使用空間的,但是與df命令不同的是Linux du命令是對(duì)文件和目錄磁盤使用的空間的查看,還是和df命令有一些區(qū)別的,這里介紹Linux du命令。
語(yǔ)法:
du [-ahskm] 文件或目錄名稱選項(xiàng)與參數(shù):
- -a :列出所有的文件與目錄容量,因?yàn)槟J(rèn)僅統(tǒng)計(jì)目錄底下的文件量而已。
- -h :以人們較易讀的容量格式 (G/M) 顯示;
- -s :列出總量而已,而不列出每個(gè)各別的目錄占用容量;
- -S :不包括子目錄下的總計(jì),與 -s 有點(diǎn)差別。
- -k :以 KBytes 列出容量顯示;
- -m :以 MBytes 列出容量顯示;
測(cè)試:
# 只列出當(dāng)前目錄下的所有文件夾容量(包括隱藏文件夾): # 直接輸入 du 沒(méi)有加任何選項(xiàng)時(shí),則 du 會(huì)分析當(dāng)前所在目錄的文件與目錄所占用的硬盤空間。 [root@kuangshen home]# du 16./redis 8./www/.oracle_jre_usage # 包括隱藏文件的目錄 24./www 48. # 這個(gè)目錄(.)所占用的總量 # 將文件的容量也列出來(lái) [root@kuangshen home]# du -a 4./redis/.bash_profile 4./redis/.bash_logout ....中間省略.... 4./kuangstudy.txt # 有文件的列表了 48. # 檢查根目錄底下每個(gè)目錄所占用的容量 [root@kuangshen home]# du -sm /* 0/bin 146/boot .....中間省略.... 0/proc .....中間省略.... 1/tmp 3026/usr # 系統(tǒng)初期最大就是他了啦! 513/var 2666/www通配符 * 來(lái)代表每個(gè)目錄。
與 df 不一樣的是,du 這個(gè)命令其實(shí)會(huì)直接到文件系統(tǒng)內(nèi)去搜尋所有的文件數(shù)據(jù)。
磁盤掛載與卸除
根文件系統(tǒng)之外的其他文件要想能夠被訪問(wèn),都必須通過(guò)“關(guān)聯(lián)”至根文件系統(tǒng)上的某個(gè)目錄來(lái)實(shí)現(xiàn),此關(guān)聯(lián)操作即為“掛載”,此目錄即為“掛載點(diǎn)”,解除此關(guān)聯(lián)關(guān)系的過(guò)程稱之為“卸載”
Linux 的磁盤掛載使用mount命令,卸載使用umount命令。
磁盤掛載語(yǔ)法:
mount [-t 文件系統(tǒng)] [-L Label名] [-o 額外選項(xiàng)] [-n] 裝置文件名 掛載點(diǎn)測(cè)試:
# 將 /dev/hdc6 掛載到 /mnt/hdc6 上面! [root@www ~]# mkdir /mnt/hdc6 [root@www ~]# mount /dev/hdc6 /mnt/hdc6 [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6磁盤卸載命令 umount 語(yǔ)法:
umount [-fn] 裝置文件名或掛載點(diǎn)選項(xiàng)與參數(shù):
- -f :強(qiáng)制卸除!可用在類似網(wǎng)絡(luò)文件系統(tǒng) (NFS) 無(wú)法讀取到的情況下;
- -n :不升級(jí) /etc/mtab 情況下卸除。
卸載/dev/hdc6
[root@www ~]# umount /dev/hdc6進(jìn)程管理
每個(gè)程序都有自己的一個(gè)進(jìn)程,每個(gè)進(jìn)程都有一個(gè) id 號(hào)
每個(gè)進(jìn)程都有一個(gè)父進(jìn)程
進(jìn)程可以有兩種存在方式:前臺(tái)!后臺(tái)運(yùn)行!
命令
ps -aux # -a 顯示當(dāng)前終端運(yùn)行的所有進(jìn)程信息 # -u 以用戶的信息顯示進(jìn)程 # -x 顯示后臺(tái)運(yùn)行進(jìn)程的參數(shù)ps -ef #可以查看到父進(jìn)程的信息pstree #看父進(jìn)程可以通過(guò)目錄樹(shù)來(lái)查看 這個(gè)命令好像需要安裝。。環(huán)境安裝
安裝軟件三種方式
jdk安裝(rpm安裝)
1、rpm下載地址http://www.oracle.com/technetwork/java/javase/downloads/index.html
2、如果有安裝openjdk 則卸載
[root@kuangshen ~]# java -version java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) # 檢查 [root@kuangshen ~]# rpm -qa|grep jdk jdk1.8.0_121-1.8.0_121-fcs.x86_64 # 卸載 -e --nodeps 強(qiáng)制刪除 [root@kuangshen ~]# rpm -e --nodeps jdk1.8.0_121-1.8.0_121-fcs.x86_64 [root@kuangshen ~]# java -version -bash: /usr/bin/java: No such file or directory # OK3、安裝JDK
# 安裝java rpm [root@kuangshen kuangshen]# rpm -ivh jdk-8u221-linux-x64.rpm# 安裝完成后配置環(huán)境變量 文件:/etc/profile JAVA_HOME=/usr/java/jdk1.8.0_221-amd64 CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export PATH CLASSPATH JAVA_HOME # 保存退出# 讓新增的環(huán)境變量生效! source /etc/profile# 測(cè)試 java -version [root@kuangshen java]# java -version java version "1.8.0_221" Java(TM) SE Runtime Environment (build 1.8.0_221-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)發(fā)布一個(gè)項(xiàng)目試試
要開(kāi)啟防火墻端口訪問(wèn)(和云平臺(tái)的安全組不是同一個(gè)東西,安全組入方向端口權(quán)限也要開(kāi))
java -jar xxx.jar springboot 項(xiàng)目是 jar 包,內(nèi)置 tomcat【也可以用 nohup 后臺(tái)執(zhí)行】
公網(wǎng) IP 進(jìn)行訪問(wèn)
Tomcat安裝(解壓縮安裝)
安裝tomcat 針對(duì) ssm項(xiàng)目,web 項(xiàng)目
1、安裝好了Java環(huán)境后我們可以測(cè)試下Tomcat!準(zhǔn)備好Tomcat的安裝包!
2、將文件移動(dòng)到/usr/tomcat/下,并解壓!
[root@kuangshen kuangshen]# mv apache-tomcat-9.0.22.tar.gz /usr [root@kuangshen kuangshen]# cd /usr [root@kuangshen usr]# ls apache-tomcat-9.0.22.tar.gz [root@kuangshen usr]# tar -zxvf apache-tomcat-9.0.22.tar.gz # 解壓3、運(yùn)行Tomcat,進(jìn)入bin目錄,和我們以前在Windows下看的都是一樣的
# 執(zhí)行:startup.sh -->啟動(dòng)tomcat # 執(zhí)行:shutdown.sh -->關(guān)閉tomcat ./startup.sh ./shutdown.sh4、確保Linux的防火墻端口是開(kāi)啟的,如果是阿里云,需要保證阿里云的安全組策略是開(kāi)放的!
# 查看firewall服務(wù)狀態(tài) systemctl status firewalld# 開(kāi)啟、重啟、關(guān)閉、firewalld.service服務(wù) # 開(kāi)啟 service firewalld start # 重啟 service firewalld restart # 關(guān)閉 service firewalld stop# 查看防火墻規(guī)則 firewall-cmd --list-all # 查看全部信息 firewall-cmd --list-ports # 只看端口信息# 開(kāi)啟端口 開(kāi)端口命令:firewall-cmd --zone=public --add-port=80/tcp --permanent 重啟防火墻:systemctl restart firewalld.service命令含義: --zone #作用域 --add-port=80/tcp #添加端口,格式為:端口/通訊協(xié)議 --permanent #永久生效,沒(méi)有此參數(shù)重啟后失效開(kāi)啟防火墻端口后,直接通過(guò)公網(wǎng) ip 訪問(wèn),即可看到 tomcat 主頁(yè)。
上傳完畢的項(xiàng)目,直接購(gòu)買自己的域名,備案解析過(guò)去即可。
域名解析后,如果端口事80 http 或者443 https 可以直接訪問(wèn);
如果是9000,8080,就需要通過(guò) Apache 或者 nginx 做一下反向代理,配置文件即可。???
最后一句沒(méi)理解
安裝Docker(yum安裝)
基于 CentOS 7 安裝
官網(wǎng)安裝參考手冊(cè):https://docs.docker.com/install/linux/docker-ce/centos/
確定你是CentOS7及以上版本
[root@192 Desktop]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)yum安裝gcc相關(guān)(需要確保 虛擬機(jī)可以上外網(wǎng) )
yum -y install gcc yum -y install gcc-c++卸載舊版本
yum -y remove docker docker-common docker-selinux docker-engine # 官網(wǎng)版本 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine安裝需要的軟件包
yum install -y yum-utils device-mapper-persistent-data lvm2設(shè)置stable鏡像倉(cāng)庫(kù)
# 錯(cuò)誤 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ## 報(bào)錯(cuò) [Errno 14] curl#35 - TCP connection reset by peer [Errno 12] curl#35 - Timeout# 正確推薦使用國(guó)內(nèi)的 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo更新yum軟件包索引
yum makecache fast安裝Docker CE
yum -y install docker-ce docker-ce-cli containerd.io啟動(dòng)docker
systemctl start docker測(cè)試
docker versiondocker run hello-worlddocker images寶塔面板安裝
https://www.bilibili.com/video/av91821322
總結(jié)
- 上一篇: 微信统一下单prepay_id为空php
- 下一篇: linux环境编程apue和unp,《A