




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
項目9
使用gcc和make調(diào)試程序《Linux網(wǎng)絡(luò)操作系統(tǒng)項目教程(歐拉/麒麟)(微課版)(第5版)》“十四五”職業(yè)教育國家規(guī)劃教材能力要求CAPACITY理解程序調(diào)試。0103掌握利用gcc進(jìn)行調(diào)試的方法。02掌握使用make編譯的方法。思政導(dǎo)入IDEOLOGY2020年,在全球浮點運算性能最強的500臺超級計算機(jī)中,中國部署的超級計算機(jī)數(shù)量繼續(xù)位列全球第一。這是中國的自豪,也是中國崛起的重要見證。思政目標(biāo)IDEOLOGY
“三更燈火五更雞,正是男兒讀書時。黑發(fā)不知勤學(xué)早,白首方悔讀書遲。”祖國的發(fā)展日新月異,我們拿什么報效祖國?唯有勤奮學(xué)習(xí),惜時如金,才無愧盛世年華。思政內(nèi)容IDEOLOGY
你知道全球超級計算機(jī)500強榜單嗎?你知道中國目前的水平嗎?由國際組織“TOP500”編制的新一期全球超級計算機(jī)500強榜單于2020年6月23日揭曉。榜單顯示,在全球浮點運算性能最強的500臺超級計算機(jī)中,中國部署的超級計算機(jī)數(shù)量繼續(xù)位列全球第一,達(dá)到226臺,占總體份額超過45%;“神威太湖之光”和“天河二號”分列榜單第四、第五位。中國廠商聯(lián)想、曙光、浪潮是全球前三的“超算”供應(yīng)商,總交付數(shù)量達(dá)到312臺,所占份額超過62%。全球超級計算機(jī)500強榜單始于1993年,每半年發(fā)布一次,是給全球已安裝的超級計算機(jī)排名的知名榜單。項目知識準(zhǔn)備項目設(shè)計與準(zhǔn)備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS一、項目知識準(zhǔn)備編譯時錯誤程序中的錯誤被稱作臭蟲(Bug),而找到這些Bug并加以糾正的過程就叫做調(diào)試(Debug)。編譯器只能翻譯語法正確的程序,否則將導(dǎo)致編譯失敗,無法生成可執(zhí)行文件。一、項目知識準(zhǔn)備運行時錯誤編譯器檢查不出錯誤,仍然可以生成可執(zhí)行文件,但在運行時會出錯而導(dǎo)致程序崩潰。注意區(qū)分編譯時和運行時(Run-time)這兩個概念,不僅在調(diào)試時需要區(qū)分這兩個概念,在學(xué)習(xí)C語言的很多語法時都需要區(qū)分這兩個概念,有些事情在編譯時做,有些事情則在運行時做。一、項目知識準(zhǔn)備邏輯錯誤和語義錯誤第三類錯誤是邏輯錯誤和語義錯誤。如果程序里有邏輯錯誤,編譯和運行都會很順利,看上去也不產(chǎn)生任何錯誤信息,但是程序沒有干它該干的事情,而是干了別的事情。當(dāng)然不管怎么樣,計算機(jī)只會按你寫的程序去做,問題在于你寫的程序不是你真正想要的。這意味著程序的意思(即語義)是錯的。找到邏輯錯誤在哪兒需要十分清醒的頭腦,要通過觀察程序的輸出回過頭來判斷它到底在做什么。項目知識準(zhǔn)備項目設(shè)計與準(zhǔn)備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS二、項目設(shè)計與準(zhǔn)備項目設(shè)計與準(zhǔn)備本項目要用到Server01,完成的任務(wù)如下。(1)利用gcc進(jìn)行程序調(diào)試(2)使用make編譯程序其中Server01的IP地址為/24,計算機(jī)的網(wǎng)絡(luò)連接方式都是僅主機(jī)模式(VMnet1)。項目知識準(zhǔn)備項目設(shè)計與準(zhǔn)備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS三、項目實施任務(wù)9-1安裝gcc1.認(rèn)識gccgcc(GNUCompilerCollection,GNU編譯器集合)是一套由GNU開發(fā)的編程語言編譯器。gcc原名為GNUC語言編譯器(GNUCCompiler),因為它原本只能處理C語言。但gcc后來得到擴(kuò)展,變得既可以處理C++,又可以處理Fortran、Pascal、Objective-C、Java,以及Ada與其他語言。三、項目實施任務(wù)9-1安裝gcc2.安裝gcc(1)檢查是否安裝gcc。[root@Server01~]#rpm-qa|grepgccgcc-10.3.1-10.oe2203.x86_64libgcc-10.3.1-10.oe2203.x86_64上述結(jié)果表示openEuler系統(tǒng)已經(jīng)默認(rèn)安裝gcc。三、項目實施任務(wù)9-2單一程序:打印HelloWorld1.編輯程序代碼即源碼[root@Server01~]#vimhello.c<==用C語言寫的程序擴(kuò)展名建議用.c#include<stdio.h>intmain(void){printf("HelloWorld\n");}第一行的那個“#”并不是注解。三、項目實施任務(wù)9-2單一程序:打印HelloWorld2.開始編譯與測試運行[root@Server01~]#gcchello.c[root@Server01~]#llhello.ca.out-rwxr-xr-x.1rootroot16K6月823:27a.out <==此時會生成這個文件名-rw-r--r--.1rootroot726月823:27hello.c[root@Server01~]#./a.outHelloWorld <==運行結(jié)果如果直接以gcc編譯源碼,并且沒有加上任何參數(shù),則執(zhí)行文件的文件名會被自動設(shè)置為a.out這個文件名,就能夠直接執(zhí)行./a.out這個執(zhí)行文件。即:hello.c就是源碼,而gcc就是編譯器,至于a.out就是編譯成功的可執(zhí)行文件。三、項目實施任務(wù)9-2單一程序:打印HelloWorld如果想要生成目標(biāo)文件(objectfile)來進(jìn)行其他的操作,而且執(zhí)行文件的文件名也不要用默認(rèn)的a.out,那該如何做呢?修改編譯與測試:[root@Server01~]#gcc-chello.c[root@Server01~]#llhello*-rw-r--r--.1rootroot72Jul1521:17hello.c-rw-r--r--.1rootroot1496Jul1521:20hello.o<==這就是生成的目標(biāo)文件[root@Server01~]#gcc-ohellohello.o <==小寫字母o![root@Server01~]#llhello*-rwxr-xr-x.1rootroot8512Jul1521:20hello<==這就是可執(zhí)行文件(-o的結(jié)果)-rw-r--r--.1rootroot72Jul1521:17hello.c-rw-r--r--.1rootroot1496Jul1521:20hello.o[root@Server01~]#./helloHelloWorld通過這個操作,可以得到hello及hello.o兩個文件,真正可以執(zhí)行的是hello這個二進(jìn)制文件(binaryprogram)。三、項目實施任務(wù)9-3主程序、子程序鏈接、子程序的編譯例子,以thanks.c這個主程序去調(diào)用thanks_2.c這個子程序:1.撰寫所需要的主程序、子程序[root@Server01~]#vimthanks.c#include<stdio.h>intmain(void){printf("HelloWorld\n");thanks_2();}上面的thanks_2()就是調(diào)用子程序![root@Server01~]#vimthanks_2.c#include<stdio.h>voidthanks_2(void){printf("Thankyou!\n");}三、項目實施任務(wù)9-3主程序、子程序鏈接、子程序的編譯例子,以thanks.c這個主程序去調(diào)用thanks_2.c這個子程序:2.進(jìn)行程序的編譯與鏈接(Link)(1)開始將源碼編譯成為可執(zhí)行的binaryfile(警告信息可忽略)。[root@Server01~]#gcc-cthanks.cthanks_2.c[root@Server01~]#llthanks*-rw-r--r--.1rootroot76Jul1521:27thanks_2.c-rw-r--r--.1rootroot1504Jul1521:27thanks_2.o<==編譯生成的目標(biāo)文件!-rw-r--r--.1rootroot91Jul1521:25thanks.c-rw-r--r--.1rootroot1560Jul1521:27thanks.o <==編譯生成的目標(biāo)文件![root@Server01~]#gcc-othanksthanks.othanks_2.o <==小寫字母o![root@Server01~]#llthanks*-rwxr-xr-x.1rootroot8584Jul1521:28thanks<==最終結(jié)果會生成可執(zhí)行文件(2)執(zhí)行可執(zhí)行文件。[root@Server01~]#./thanksHelloWorldThankyou!三、項目實施任務(wù)9-4調(diào)用外部函數(shù)庫:加入鏈接的函數(shù)庫例如,我們想要計算出三角函數(shù)里面的sin90°,代碼如下:[root@Server01~]#vimsin.c#include<stdio.h>#include<math.h>intmain(void){floatvalue;value=sin(3.14/2);printf("%f\n",value);}[root@Server01~]#gccsin.c-lm-L/lib-L/usr/lib<==重點在-lm1.000000[root@Server01~]#./a.out <==嘗試執(zhí)行新文件三、項目實施任務(wù)9-4調(diào)用外部函數(shù)庫:加入鏈接的函數(shù)庫特別注意,使用gcc編譯時所加入的那個-lm是有意義的,可以拆成兩部分來分析。-l:是加入某個函數(shù)庫(library)的意思。-m:是libm.so函數(shù)庫,其中,lib與擴(kuò)展名(.a或.so)不需要寫。所以-lm表示使用libm.so(或libm.a)這個函數(shù)庫的意思。那-L后面接的路徑呢?這表示程序需要的函數(shù)庫libm.so請到/lib或/usr/lib里面尋找。三、項目實施任務(wù)9-5gcc的簡易用法(編譯、參數(shù)與鏈接)(1)僅將原始碼編譯成為目標(biāo)文件,并不制作鏈接等功能。[root@Server01~]#gcc-chello.c上述程序會自動生成hello.o文件,但是并不會生成二進(jìn)制可執(zhí)行文件。(2)在編譯的時候,依據(jù)作業(yè)環(huán)境給予執(zhí)行速度優(yōu)化。[root@Server01~]#gcc-Ohello.c-c上述程序會自動生成hello.o文件,并且進(jìn)行優(yōu)化。三、項目實施任務(wù)9-5gcc的簡易用法(編譯、參數(shù)與鏈接)(3)在進(jìn)行二進(jìn)制可執(zhí)行文件制作時,將鏈接的函數(shù)庫與相關(guān)的路徑填入。[root@Server01~]#gccsin.c-lm-L/usr/lib-I/usr/include在最終鏈接成二進(jìn)制可執(zhí)行文件的時候,這個命令較常執(zhí)行。-lm指的是libm.so或libm.a函數(shù)庫文件。-L后面接的路徑是剛剛上面那個函數(shù)庫的搜索目錄。-I后面接的是源碼內(nèi)的include文件所在的目錄。三、項目實施任務(wù)9-5gcc的簡易用法(編譯、參數(shù)與鏈接)(4)將編譯的結(jié)果生成某個特定文件。[root@Server01~]#gcc-ohellohello.c程序中,-o后面接的是要輸出的二進(jìn)制可執(zhí)行文件名。(5)在編譯的時候,輸出較多的信息說明。[root@Server01~]#gcc-ohellohello.c-Wall加入-Wall之后,程序的編譯會變得較為嚴(yán)謹(jǐn)一點,所以警告信息也會顯示出來。三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯1.為什么要用make先來想象一個案例,假設(shè)執(zhí)行文件里面包含了4個源碼文件,分別是main.c、haha.c、sin_value.c和cos_value.c,這4個文件的功能如下。main.c:主要目的是讓用戶輸入角度數(shù)據(jù)與調(diào)用其他3個子程序。haha.c:輸出一堆信息。sin_value.c:計算用戶輸入的角度(360)正弦數(shù)值。cos_value.c:計算用戶輸入的角度(360)余弦數(shù)值。三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯main.c:主要目的是讓用戶輸入角度數(shù)據(jù)與調(diào)用其他3個子程序。[root@Server01~]#mkdir/c[root@Server01~]#cd/c[root@Server01c]#vimmain.c#include<stdio.h>#definepi3.14159charname[15];floatangle;intmain(void){ printf("\n\nPleaseinputyourname:"); scanf("%s",&name); printf("\nPleaseenterthedegreeangle(ex>90):"); scanf("%f",&angle); haha(name); sin_value(angle); cos_value(angle);}三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯haha.c:輸出一堆信息。[root@Server01c]#vimhaha.c#include<stdio.h>inthaha(charname[15]){ printf("\n\nHi,Dear%s,nicetomeetyou.",name);}三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯sin_value.c:計算用戶輸入的角度(360)正弦數(shù)值[root@Server01c]#vimsin_value.c#include<stdio.h>#include<math.h>#definepi3.14159floatangle;voidsin_value(void){ floatvalue; value=sin(angle/180.*pi); printf("\nTheSinis:%5.2f\n",value);}三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯cos_value.c:計算用戶輸入的角度(360)余弦數(shù)值[root@Server01c]#vimcos_value.c#include<stdio.h>#include<math.h>#definepi3.14159floatangle;voidcos_value(void){ floatvalue; value=cos(angle/180.*pi); printf("TheCosis:%5.2f\n",value);}三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯由于這4個文件包含了相關(guān)性,并且還用到數(shù)學(xué)函數(shù)式,所以如果想要讓這個程序可以運行,那么就需要進(jìn)行編譯。①先進(jìn)行目標(biāo)文件的編譯,最終會有4個*.o的文件名出現(xiàn)。[root@Server01c]#gcc-cmain.c[root@Server01c]#gcc-chaha.c[root@Server01c]#gcc-csin_value.c[root@Server01c]#gcc-ccos_value.c三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯②再鏈接形成可執(zhí)行文件main,并加入libm的數(shù)學(xué)函數(shù)(\是命令換行符,按回車鍵后在下行繼續(xù)輸入未輸入完成的命令即可)。[root@Server01c]#gcc-omainmain.ohaha.osin_value.ocos_value.o\-lm-L/usr/lib-L/lib③本程序的運行結(jié)果,必須輸入姓名、360度角的角度值來完成計算。[root@Server01c]#./mainPleaseinputyourname:Bobby<==這里先輸入名字Pleaseenterthedegreeangle(ex>90):30<==輸入以360度為主的角度Hi,DearBobby,nicetomeetyou.<==這三行為輸出的結(jié)果TheSinis:0.50TheCosis:0.87三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯利用make這個工具,一個步驟就全部完成上面所有的操作①先編輯makefile這個規(guī)則文件,內(nèi)容是制作出main這個可執(zhí)行文件[root@Server01c]#vimmakefilemain:main.ohaha.osin_value.ocos_value.o gcc-omainmain.ohaha.osin_value.ocos_value.o-lm特別注意:第二行的gcc之前是按“Tab”鍵產(chǎn)生的空格,不是真正空格,否則會出錯!三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯利用make這個工具,一個步驟就全部完成上面所有的操作②使用makefile制訂的規(guī)則進(jìn)行編譯[root@Server01c]#rm-fmain*.o<==先將之前的目標(biāo)文件刪除[root@Server01c]#makecc-c-omain.omain.ccc-c-ohaha.ohaha.ccc-c-osin_value.osin_value.ccc-c-ocos_value.ocos_value.cgcc-omainmain.ohaha.osin_value.ocos_value.o-lm③在不刪除任何文件的情況下,重新運行一次編譯的動作[root@Server01c]#makemake:“main”已是最新。[root@Server01c]#./mainPleaseinputyourname:yyPleaseenterthedegreeangle(ex>90):60Hi,Dearyy,nicetomeetyou.TheSinis:0.87TheCosis:0.50三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯2.了解makefile的基本語法與變量make的語法相當(dāng)多且復(fù)雜,這里僅列出一些基本的守則,基本的makefile守則如下:目標(biāo)(target):目標(biāo)文件1目標(biāo)文件2<tab>gcc-o欲創(chuàng)建的可執(zhí)行文件目標(biāo)文件1目標(biāo)文件2目標(biāo)(target)就是我們想要創(chuàng)建的信息,而目標(biāo)文件就是具有相關(guān)性的objectfiles。語法規(guī)則如下:在makefile當(dāng)中的#代表注解。需要在命令行(例如gcc這個編譯器命令)的第一個字節(jié)按“Tab”鍵。目標(biāo)(target)與相關(guān)文件(就是目標(biāo)文件)之間需以“:”隔開。三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯上一個小節(jié)的范例做進(jìn)一步說明,如果想要有兩個以上的執(zhí)行操作,例如執(zhí)行一個命令就直接清除掉所有的目標(biāo)文件與可執(zhí)行文件,那該如何制作makefile文件呢?(1)先編輯makefile來建立新的規(guī)則,此規(guī)則的目標(biāo)名稱為clean。[root@Server01c]#vimmakefilemain:main.ohaha.osin_value.ocos_value.ogcc-omainmain.ohaha.osin_value.ocos_value.o-lmclean: rm-fmainmain.ohaha.osin_value.ocos_value.o特別注意:第2行和第4行開頭是按“Tab”鍵產(chǎn)生的空格,不是真正空格,否則會出錯!三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯而如果想要先清除目標(biāo)文件再編譯main這個程序,就可以這樣輸入:“makecleanmain”,如下所示:[root@Server01c]#makecleanmainrm-rfmainmain.ohaha.osin_value.ocos_value.occ-c-omain.omain.ccc-c-ohaha.ohaha.ccc-c-osin_value.osin_value.ccc-c-ocos_value.ocos_value.cgcc-omainmain.ohaha.osin_value.ocos_value.o-lm三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯makefile里面重復(fù)的數(shù)據(jù)還是有點多。我們可以再通過shellscript的“變量”來簡化makefile:[root@Server01c]#vimmakefileLIBS=-lmOBJS=main.ohaha.osin_value.ocos_value.omain:${OBJS} gcc-omain${OBJS}${LIBS}clean: rm-fmain${OBJS}特別注意:第4行和第6行開頭是按“Tab”鍵產(chǎn)生的空格,不是真正空格,否則會出錯!三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯變量的基本語法如下:變量與變量內(nèi)容以“=”隔開,同時兩邊可以有空格。變量左邊不可以按“Tab”鍵,例如上面范例的第一行LIBS左邊不可以按“Tab”鍵。變量與變量內(nèi)容在“=”兩邊不能具有“:”。習(xí)慣上,變量最好是以“大寫字母”為主。運用變量時,使用${變量}或$(變量)。該shell的環(huán)境變量是可以被套用的,例如提到的CFLAGS這個變量。在命令行模式也可以定義變量。三、項目實施任務(wù)9-6使用make進(jìn)行宏編譯由于gcc在進(jìn)行編譯的行為時,會主動地去讀取CFLAGS這個環(huán)境變量,所以,可以直接在shell定義這個環(huán)境變量,也可以在makefile文件里面去定義,或者在命令行當(dāng)中定義。例如:[root@Server01c]#CFLAGS="-Wall"makecleanmain#這個操作在make上進(jìn)行編譯時,會取用CFLAGS的變量內(nèi)容項目10
配置與管理samba服務(wù)器《Linux網(wǎng)絡(luò)操作系統(tǒng)項目教程(歐拉/麒麟)(微課版)(第5版)》“十四五”職業(yè)教育國家規(guī)劃教材能力要求CAPACITY掌握samba的工作原理。0103掌握主配置文件samba.conf的配置方法。02掌握samba服務(wù)密碼文件的配置方法。04掌握samba服務(wù)密碼文件的配置方法。思政導(dǎo)入IDEOLOGY“龍芯”讓中國人自豪!請記住“龍芯”,記住“863”“973”“核高基”等國家重大項目。為中華之崛起而讀書,從來都不僅限于紙上。思政目標(biāo)IDEOLOGY如果人生是一場奔赴,青春最好的“模樣”是昂首篤行、步履鏗鏘。“人無剛骨,安身不牢。”骨氣是人的脊梁,是前行的支柱。新時代的弄潮兒要有“富貴不能淫,貧賤不能移,威武不能屈”的氣節(jié),要有“自信人生二百年,會當(dāng)水擊三千里”的勇氣,還要有“我將無我,不負(fù)人民”的擔(dān)當(dāng)。思政內(nèi)容IDEOLOGY
你知道“龍芯”嗎?你知道“龍芯”的應(yīng)用水平嗎?通用處理器是信息產(chǎn)業(yè)的基礎(chǔ)部件,是電子設(shè)備的核心器件。通用處理器是關(guān)系到國家命運的戰(zhàn)略產(chǎn)業(yè)之一,其發(fā)展直接關(guān)系到國家技術(shù)創(chuàng)新能力,關(guān)系到國家安全,是國家的核心利益所在。“龍芯”是我國最早研制的高性能通用處理器系列,于2001年在中國科學(xué)院計算所開始研發(fā),得到了“863”“973”“核高基”等項目的大力支持,完成了10年的核心技術(shù)積累。2010年,中國科學(xué)院和北京市政府共同牽頭出資,龍芯中科技術(shù)有限公司正式成立,開始市場化運作,旨在將龍芯處理器的研發(fā)成果產(chǎn)業(yè)化。思政內(nèi)容IDEOLOGY目前龍芯處理器產(chǎn)品在各領(lǐng)域取得了廣泛應(yīng)用。在安全領(lǐng)域,龍芯處理器已經(jīng)通過了嚴(yán)格的可靠性實驗,作為核心元器件應(yīng)用在幾十種型號和系統(tǒng)中,2015年,龍芯處理器成功應(yīng)用于北斗二代導(dǎo)航衛(wèi)星。在通用領(lǐng)域,龍芯處理器已經(jīng)應(yīng)用在個人計算機(jī)、服務(wù)器及高性能計算機(jī)、行業(yè)計算機(jī)終端,以及云計算終端等方面。在嵌入式領(lǐng)域,基于龍芯CPU的防火墻等網(wǎng)安系列產(chǎn)品已達(dá)到規(guī)模銷售;應(yīng)用于國產(chǎn)高端數(shù)控機(jī)床等系列工控產(chǎn)品顯著提升了我國工控領(lǐng)域的自主化程度和產(chǎn)業(yè)化水平;龍芯提供了IP設(shè)計服務(wù),在國產(chǎn)數(shù)字電視領(lǐng)域也與國內(nèi)多家知名廠家展開合作,其IP地址授權(quán)量已達(dá)百萬片以上。項目知識準(zhǔn)備項目設(shè)計與準(zhǔn)備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS一、項目知識準(zhǔn)備了解samba應(yīng)用環(huán)境文件和打印機(jī)共享:文件和打印機(jī)共享是samba的主要功能,通過SMB進(jìn)程實現(xiàn)資源共享,將文件和打印機(jī)發(fā)布到網(wǎng)絡(luò)之中,以供用戶訪問。身份驗證和權(quán)限設(shè)置:smbd服務(wù)支持usermode和domainmode等身份驗證和權(quán)限設(shè)置模式,通過加密方式可以保護(hù)共享的文件和打印機(jī)。名稱解析:samba通過nmbd服務(wù)可以搭建NBNS(NetBIOSNameService)服務(wù)器,提供名稱解析,將計算機(jī)的NetBIOS名解析為IP地址。瀏覽服務(wù):局域網(wǎng)中,samba服務(wù)器可以成為本地主瀏覽服務(wù)器(LMB),保存可用資源列表,當(dāng)使用客戶端訪問Windows網(wǎng)上鄰居時,會提供瀏覽列表,顯示共享目錄、打印機(jī)等資源。一、項目知識準(zhǔn)備了解SMB協(xié)議SMB(ServerMessageBlock)通信協(xié)議可以看作是局域網(wǎng)上共享文件和打印機(jī)的一種協(xié)議。samba則是將SMB協(xié)議搬到UNIX系統(tǒng)上來使用,通過“NetBIOSoverTCP/IP”,使用samba不但能與局域網(wǎng)絡(luò)主機(jī)共享資源,而且能與全世界的計算機(jī)共享資源。項目知識準(zhǔn)備項目設(shè)計與準(zhǔn)備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS二、項目設(shè)計與準(zhǔn)備了解samba服務(wù)器配置的工作流程1.基本的samba服務(wù)器的搭建流程主要分為5個步驟。(1)編輯主配置文件smb.conf,指定需要共享的目錄,并為共享目錄設(shè)置共享權(quán)限。(2)在smb.conf文件中指定日志文件名稱和存放路徑。(3)設(shè)置共享目錄的本地系統(tǒng)權(quán)限。(4)重新加載配置文件或重新啟動SMB服務(wù),使配置生效。(5)關(guān)閉防火墻,同時設(shè)置SELinux為允許。二、項目設(shè)計與準(zhǔn)備了解samba服務(wù)器配置的工作流程2.samba的工作流程如圖所示。(1)客戶端請求訪問samba服務(wù)器上的共享目錄。(2)samba服務(wù)器接收到請求后,會查詢主配置文件smb.conf,看是否共享了目錄,如果共享了目錄則查看客戶端是否有權(quán)限訪問。(3)samba服務(wù)器會將本次訪問信息記錄在日志文件之中,日志文件的名稱和路徑都需要我們設(shè)置。(4)如果客戶端滿足訪問權(quán)限設(shè)置,則允許客戶端進(jìn)行訪問。二、項目設(shè)計與準(zhǔn)備設(shè)備準(zhǔn)備本項目要用到Server01、Client3和Client1,設(shè)備情況如表所示:主
機(jī)
名操作系統(tǒng)IP地址網(wǎng)絡(luò)連接方式samba共享服務(wù)器:Server01EulerOS22.03LTS/24VMnet1(僅主機(jī)模式)Windows客戶端:Client3Windows100/24VMnet1(僅主機(jī)模式)Linux客戶端:Client1EulerOS22.03LTS1/24VMnet1(僅主機(jī)模式)項目知識準(zhǔn)備項目設(shè)計與準(zhǔn)備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS三、項目實施任務(wù)10-1安裝并啟動samba服務(wù)使用rpm-qa|grepsamba命令檢測系統(tǒng)是否安裝了samba相關(guān)性軟件包:[root@Server01~]#rpm-qa|grepsamba(1)掛載ISO安裝映像。
[root@Server01~]#mount/dev/cdrom/media(2)制作yum源文件/etc/yum.repos.d/dvd.repo(略)。(3)使用dnf命令查看samba軟件包的信息。[root@Server01~]#dnfinfosamba(4)使用yum命令安裝samba服務(wù)。[root@Server01~]#dnfcleanall //安裝前先清除緩存[root@Server01~]#dnfinstallsamba-y三、項目實施任務(wù)10-1安裝并啟動samba服務(wù)(5)所有軟件包安裝完畢,可以使用rpm命令再一次進(jìn)行查詢:[root@Server01~]#rpm-qa|grepsamba(6)啟動smb服務(wù),設(shè)置開機(jī)啟動該服務(wù),重啟服務(wù)。[root@Server01~]#systemctlstartsmb;systemctlenablesmb注意:在服務(wù)器配置中,更改了配置文件后,一定要記得重啟服務(wù),讓服務(wù)重新加載配置文件,這樣新配置才生效。重啟的命令是:systemctlrestartsmb或systemctlreloadsmb三、項目實施任務(wù)10-2主要配置文件smb.conf1.samba服務(wù)程序中的參數(shù)以及作用samba的配置文件一般就放在/etc/samba目錄中,主配置文件名為smb.conf。RHEL8的smb.conf配置文件已經(jīng)簡化,只有37行左右。為了方便配置,建議先備份smb.conf,一旦發(fā)現(xiàn)錯誤可以隨時從備份文件中恢復(fù)主配置文件。操作如下:[root@Server01~]#cd/etc/samba[root@Server01samba]#ls[root@Server01samba]#cpsmb.confsmb.conf.bak[root@Server01samba]#cd三、項目實施任務(wù)10-2主要配置文件smb.conf2.ShareDefinitions共享服務(wù)的定義ShareDefinitions設(shè)置對象為共享目錄和打印機(jī),如果想發(fā)布共享資源,需要對ShareDefinitions部分進(jìn)行配置。(1)設(shè)置共享名。共享名的設(shè)置非常簡單,格式為:[共享名](2)共享資源描述。格式:comment=備注信息(3)共享路徑。格式:path=絕對地址路徑三、項目實施任務(wù)10-2主要配置文件smb.conf(4)設(shè)置匿名訪問。設(shè)置是否允許對共享資源進(jìn)行匿名訪問,可以更改public字段。格式:public=yes#允許匿名訪問public=no#禁止匿名訪問三、項目實施任務(wù)10-2主要配置文件smb.conf【例10-1】samba服務(wù)器中有個目錄為/share,需要發(fā)布該目錄成為共享目錄,定義共享名為public,要求:允許瀏覽、允許只讀、允許匿名訪問。設(shè)置如下所示。[public] comment=public path=/share browseable=yes readonly=yes public=yes三、項目實施任務(wù)10-2主要配置文件smb.conf(5)設(shè)置訪問用戶。如果共享資源存在重要數(shù)據(jù)的話,需要對訪問用戶進(jìn)行審核,我們可以使用validusers字段進(jìn)行設(shè)置。格式:validusers=用戶名validusers=@組名【例10-2】samba服務(wù)器/share/tech目錄中存放了公司技術(shù)部數(shù)據(jù),只允許技術(shù)部員工和經(jīng)理訪問,技術(shù)部組為tech,經(jīng)理賬號為manager。[tech]comment=techpath=/share/techvalidusers=@tech,manager三、項目實施任務(wù)10-2主要配置文件smb.conf(6)設(shè)置目錄只讀。共享目錄如果需要限制用戶的讀寫操作,我們可以通過readonly實現(xiàn)。格式:readonly=yes#只讀readonly=no#讀寫(7)設(shè)置過濾主機(jī)。hostsallow=192.168.10.上述程序表示允許來自或的訪問者訪問samba服務(wù)器資源。hostsdeny=192.168.2.上述程序表示不允許來自網(wǎng)絡(luò)的主機(jī)訪問當(dāng)前samba服務(wù)器資源。三、項目實施任務(wù)10-2主要配置文件smb.conf【例10-3】samba服務(wù)器公共目錄/public存放大量共享數(shù)據(jù),為保證目錄安全,僅允許網(wǎng)絡(luò)的主機(jī)訪問,并且只允許讀取,禁止寫入。[public]comment=publicpath=/publicpublic=yesreadonly=yeshostsallow=192.168.10.三、項目實施任務(wù)10-2主要配置文件smb.conf(8)設(shè)置目錄可寫。如果共享目錄允許用戶寫操作,可以使用writable或writelist兩個字段進(jìn)行設(shè)置。writable格式:writable=yes#讀寫writable=no#只讀writelist格式:writelist=用戶名writelist=@組名三、項目實施任務(wù)10-3samba服務(wù)的日志文件和密碼文件日志文件對于samba非常重要,它存儲著客戶端訪問samba服務(wù)器的信息,以及samba服務(wù)的錯誤提示信息等,可以通過分析日志,幫助解決客戶端訪問和服務(wù)器維護(hù)等問題。在/etc/samba/smb.conf文件中,logfile為設(shè)置samba日志的字段。如下所示:logfile=/var/log/samba/log.%msamba服務(wù)的日志文件默認(rèn)存放在/var/log/samba/中,其中samba會為每個連接到samba服務(wù)器的計算機(jī)分別建立日志文件。使用ls-a/var/log/samba命令可以查看日志的所有文件。三、項目實施任務(wù)10-3samba服務(wù)的日志文件和密碼文件2.samba服務(wù)密碼文件samba服務(wù)器發(fā)布共享資源后,客戶端訪問samba服務(wù)器,需要提交用戶名和密碼進(jìn)行身份驗證,驗證合格后才可以登錄。samba服務(wù)為了實現(xiàn)客戶身份驗證功能,將用戶名和密碼信息存放在/etc/samba/smbpasswd中,在客戶端訪問時,將用戶提交的資料與smbpasswd中存放的信息進(jìn)行比對,如果相同,并且samba服務(wù)器其他安全設(shè)置允許,客戶端與samba服務(wù)器的連接才能建立成功。三、項目實施任務(wù)10-3samba服務(wù)的日志文件和密碼文件那如何建立samba賬號呢?首先,samba賬號并不能直接建立,需要先建立Linux同名的系統(tǒng)賬號。例如,如果要建立一個名為yy的samba賬號,那么Linux系統(tǒng)中必須提前存在一個同名的yy系統(tǒng)賬號。samba中添加賬號的命令為smbpasswd,格式為:smbpasswd-a用戶名三、項目實施任務(wù)10-3samba服務(wù)的日志文件和密碼文件【例10-4】在samba服務(wù)器中添加samba賬號reading。(1)建立Linux系統(tǒng)賬號reading。[root@Server01~]#useraddreading[root@Server01~]#passwdreading(2)添加reading用戶的samba賬號。[root@Server01~]#smbpasswd-areading三、項目實施任務(wù)10-4user服務(wù)器實例解析在openEuler中,samba服務(wù)程序默認(rèn)使用的是用戶口令認(rèn)證(user)模式。這種認(rèn)證模式可以確保僅讓有密碼且受信任的用戶訪問共享資源,而且驗證過程十分簡單。【例10-5】如果公司有多個部門,因工作需要,就必須分門別類地建立相應(yīng)部門的目錄。要求將銷售部的資料存放在samba服務(wù)器的/companydata/sales/目錄下集中管理,以便銷售人員瀏覽,并且該目錄只允許銷售部員工訪問。需求分析:在/companydata/sales/目錄中存放有銷售部的重要數(shù)據(jù),為了保證其他部門無法查看其內(nèi)容,我們需要將全局配置中security設(shè)置為user安全級別。這樣就啟用了samba服務(wù)器的身份驗證機(jī)制。然后在共享目錄/companydata/sales下設(shè)置validusers字段,配置只允許銷售部員工訪問這個共享目錄。三、項目實施任務(wù)10-4user服務(wù)器實例解析(1)建立共享目錄,并在其下建立測試文件。[root@Server01~]#mkdir/companydata[root@Server01~]#mkdir/companydata/sales[root@Server01~]#touch/companydata/sales/test_share.tar三、項目實施任務(wù)10-4user服務(wù)器實例解析(2)添加銷售部用戶和組并添加相應(yīng)的samba賬號。①使用groupadd命令添加sales組,然后執(zhí)行useradd命令和passwd命令,以添加銷售部員工的賬號及密碼。此處單獨增加一個test_user1賬號,不屬于sales組,供測試用。[root@Server01~]#groupaddsales #建立銷售組sales[root@Server01~]#useradd-gsalessale1 #建立用戶sale1,添加到sales組[root@Server01~]#useradd-gsalessale2 #建立用戶sale2,添加到sales組[root@Server01~]#useraddtest_user1 #供測試用[root@Server01~]#passwdsale1 #設(shè)置用戶sale1密碼[root@Server01~]#passwdsale2 #設(shè)置用戶sale2密碼[root@Server01~]#passwdtest_user1 #設(shè)置用戶test_user1密碼三、項目實施任務(wù)10-4user服務(wù)器實例解析②為銷售部成員添加相應(yīng)samba賬號。[root@Server01~]#smbpasswd-asale1[root@Server01~]#smbpasswd-asale2三、項目實施任務(wù)10-4user服務(wù)器實例解析(3)修改samba主配置文件:vim/etc/samba/smb.conf。直接在原文件未尾添加,但要注意將原文件的[global]刪除或用“#”注釋掉,文件中不能有兩個同名的[global]。當(dāng)然也可直接在原來的[global]上進(jìn)行修改。
39[global]40workgroup=Workgroup41serverstring=FileServer42security=user43#設(shè)置user安全級別模式,取默認(rèn)值
44passdbbackend=tdbsam45printing=cups46printcapname=cups47loadprinters=yes48cupsoptions=raw
49[sales]50#設(shè)置共享目錄的共享名為sales51comment=sales52path=/companydata/sales53#設(shè)置共享目錄的絕對路徑
54writable=yes55browseable=yes56validusers=@sales57#設(shè)置可以訪問的用戶為sales組三、項目實施任務(wù)10-4user服務(wù)器實例解析(4)設(shè)置共享目錄的本地系統(tǒng)權(quán)限和屬組。[root@Server01~]#chmod770/companydata/sales-R[root@Server01~]#chown:sales/companydata/sales-R-R參數(shù)是遞歸用的,一定要加上。三、項目實施任務(wù)10-4user服務(wù)器實例解析(5)更改共享目錄和用戶家目錄的context值,或者禁掉SELinux。[root@Server01~]#chcon-tsamba_share_t/companydata/sales-R[root@Server01~]#chcon-tsamba_share_t/home/sale1-R[root@Server01~]#chcon-tsamba_share_t/home/sale2-R或者:[root@Server01~]#getenforceEnforcing[root@Server01~]#setenforcePermissive或者:[root@Server01~]#setenforce0三、項目實施任務(wù)10-4user服務(wù)器實例解析(6)讓防火墻放行,這一步很重要。[root@Server01~]#firewall-cmd--permanent--add-service=samba[root@Server01~]#firewall-cmd--reload //重新加載防火墻[root@Server01~]#firewall-cmd--list-allpublic(active)………………services:sshdhcpv6-clientsamba //已經(jīng)加入防火墻的允許服務(wù)
ports:………………三、項目實施任務(wù)10-4user服務(wù)器實例解析(7)重新加載samba服務(wù)并設(shè)置開機(jī)時自動啟動。
[root@Server01~]#systemctlrestartsmb[root@Server01~]#systemctlenablesmb(8)測試。一是在Windows10中利用資源管理器進(jìn)行測試,二是利用Linux客戶端。三、項目實施任務(wù)10-4user服務(wù)器實例解析以下的操作在Client2上進(jìn)行。(1)使用UNC路徑直接進(jìn)行訪問依次選擇“開始”→“運行”命令,使用UNC路徑直接進(jìn)行訪問,例如\\192.168.10.1。打開“Windows安全”對話框,如圖所示。輸入sale1或sale2及其密碼,登錄后可以正常訪問。三、項目實施任務(wù)10-4user服務(wù)器實例解析(2)使用映射網(wǎng)絡(luò)驅(qū)動器訪問samba服務(wù)器共享目錄①Windows10默認(rèn)是不會在桌面雙擊“此電腦”圖標(biāo),再依次選擇“計算機(jī)”→“映射網(wǎng)絡(luò)驅(qū)動器”命令,如圖所示。②單擊“映射網(wǎng)絡(luò)驅(qū)動器”命令,在彈出的“映射網(wǎng)絡(luò)驅(qū)動器”對話框中選
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 系統(tǒng)架構(gòu)設(shè)計師實戰(zhàn)經(jīng)驗分享試題及答案
- 網(wǎng)絡(luò)規(guī)劃中的成本控制策略試題及答案
- 系統(tǒng)架構(gòu)設(shè)計師考試新手指南試題及答案
- 系統(tǒng)架構(gòu)設(shè)計師知識考點梳理試題及答案
- 自我提升西醫(yī)臨床考試試題及答案
- 績效管理體系構(gòu)建試題及答案
- 科研方法論在臨床的運用試題及答案
- 裝修工人面試題及答案
- 激光技術(shù)考試動向分析試題及答案
- 營養(yǎng)試題選擇題及答案
- 《木蘭詩》歷年中考古詩欣賞試題匯編(截至2020年)
- 特種設(shè)備(承壓類)生產(chǎn)單位安全風(fēng)險管控(日管控、周排查、月調(diào)度)清單
- 小升初語文:必考古詩詞專項練習(xí)
- DB32-T 4281-2022 江蘇省建筑工程施工現(xiàn)場專業(yè)人員配備標(biāo)準(zhǔn)
- 中小型病理技術(shù)團(tuán)隊崗位設(shè)置及績效分配現(xiàn)狀分析
- 防護(hù)棚驗收表
- 醫(yī)院藥學(xué)智慧裝備規(guī)劃建設(shè)構(gòu)想
- 2023年防腐防火涂裝、鋼結(jié)構(gòu)變形檢測試卷及答案
- 2023年全國電力生產(chǎn)人身傷亡事故統(tǒng)計
- 內(nèi)蒙古曹四夭鉬礦床原生暈特征及深部找礦預(yù)測
- 大學(xué)研究生招生體檢表
評論
0/150
提交評論