版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目9
使用gcc和make調試程序《Linux網(wǎng)絡操作系統(tǒng)項目教程(歐拉/麒麟)(微課版)(第5版)》“十四五”職業(yè)教育國家規(guī)劃教材能力要求CAPACITY理解程序調試。0103掌握利用gcc進行調試的方法。02掌握使用make編譯的方法。思政導入IDEOLOGY2020年,在全球浮點運算性能最強的500臺超級計算機中,中國部署的超級計算機數(shù)量繼續(xù)位列全球第一。這是中國的自豪,也是中國崛起的重要見證。思政目標IDEOLOGY
“三更燈火五更雞,正是男兒讀書時。黑發(fā)不知勤學早,白首方悔讀書遲?!弊鎳陌l(fā)展日新月異,我們拿什么報效祖國?唯有勤奮學習,惜時如金,才無愧盛世年華。思政內容IDEOLOGY
你知道全球超級計算機500強榜單嗎?你知道中國目前的水平嗎?由國際組織“TOP500”編制的新一期全球超級計算機500強榜單于2020年6月23日揭曉。榜單顯示,在全球浮點運算性能最強的500臺超級計算機中,中國部署的超級計算機數(shù)量繼續(xù)位列全球第一,達到226臺,占總體份額超過45%;“神威太湖之光”和“天河二號”分列榜單第四、第五位。中國廠商聯(lián)想、曙光、浪潮是全球前三的“超算”供應商,總交付數(shù)量達到312臺,所占份額超過62%。全球超級計算機500強榜單始于1993年,每半年發(fā)布一次,是給全球已安裝的超級計算機排名的知名榜單。項目知識準備項目設計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內容導航CONTENTS一、項目知識準備編譯時錯誤程序中的錯誤被稱作臭蟲(Bug),而找到這些Bug并加以糾正的過程就叫做調試(Debug)。編譯器只能翻譯語法正確的程序,否則將導致編譯失敗,無法生成可執(zhí)行文件。一、項目知識準備運行時錯誤編譯器檢查不出錯誤,仍然可以生成可執(zhí)行文件,但在運行時會出錯而導致程序崩潰。注意區(qū)分編譯時和運行時(Run-time)這兩個概念,不僅在調試時需要區(qū)分這兩個概念,在學習C語言的很多語法時都需要區(qū)分這兩個概念,有些事情在編譯時做,有些事情則在運行時做。一、項目知識準備邏輯錯誤和語義錯誤第三類錯誤是邏輯錯誤和語義錯誤。如果程序里有邏輯錯誤,編譯和運行都會很順利,看上去也不產(chǎn)生任何錯誤信息,但是程序沒有干它該干的事情,而是干了別的事情。當然不管怎么樣,計算機只會按你寫的程序去做,問題在于你寫的程序不是你真正想要的。這意味著程序的意思(即語義)是錯的。找到邏輯錯誤在哪兒需要十分清醒的頭腦,要通過觀察程序的輸出回過頭來判斷它到底在做什么。項目知識準備項目設計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內容導航CONTENTS二、項目設計與準備項目設計與準備本項目要用到Server01,完成的任務如下。(1)利用gcc進行程序調試(2)使用make編譯程序其中Server01的IP地址為/24,計算機的網(wǎng)絡連接方式都是僅主機模式(VMnet1)。項目知識準備項目設計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內容導航CONTENTS三、項目實施任務9-1安裝gcc1.認識gccgcc(GNUCompilerCollection,GNU編譯器集合)是一套由GNU開發(fā)的編程語言編譯器。gcc原名為GNUC語言編譯器(GNUCCompiler),因為它原本只能處理C語言。但gcc后來得到擴展,變得既可以處理C++,又可以處理Fortran、Pascal、Objective-C、Java,以及Ada與其他語言。三、項目實施任務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上述結果表示openEuler系統(tǒng)已經(jīng)默認安裝gcc。三、項目實施任務9-2單一程序:打印HelloWorld1.編輯程序代碼即源碼[root@Server01~]#vimhello.c<==用C語言寫的程序擴展名建議用.c#include<stdio.h>intmain(void){printf("HelloWorld\n");}第一行的那個“#”并不是注解。三、項目實施任務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 <==運行結果如果直接以gcc編譯源碼,并且沒有加上任何參數(shù),則執(zhí)行文件的文件名會被自動設置為a.out這個文件名,就能夠直接執(zhí)行./a.out這個執(zhí)行文件。即:hello.c就是源碼,而gcc就是編譯器,至于a.out就是編譯成功的可執(zhí)行文件。三、項目實施任務9-2單一程序:打印HelloWorld如果想要生成目標文件(objectfile)來進行其他的操作,而且執(zhí)行文件的文件名也不要用默認的a.out,那該如何做呢?修改編譯與測試:[root@Server01~]#gcc-chello.c[root@Server01~]#llhello*-rw-r--r--.1rootroot72Jul1521:17hello.c-rw-r--r--.1rootroot1496Jul1521:20hello.o<==這就是生成的目標文件[root@Server01~]#gcc-ohellohello.o <==小寫字母o![root@Server01~]#llhello*-rwxr-xr-x.1rootroot8512Jul1521:20hello<==這就是可執(zhí)行文件(-o的結果)-rw-r--r--.1rootroot72Jul1521:17hello.c-rw-r--r--.1rootroot1496Jul1521:20hello.o[root@Server01~]#./helloHelloWorld通過這個操作,可以得到hello及hello.o兩個文件,真正可以執(zhí)行的是hello這個二進制文件(binaryprogram)。三、項目實施任務9-3主程序、子程序鏈接、子程序的編譯例子,以thanks.c這個主程序去調用thanks_2.c這個子程序:1.撰寫所需要的主程序、子程序[root@Server01~]#vimthanks.c#include<stdio.h>intmain(void){printf("HelloWorld\n");thanks_2();}上面的thanks_2()就是調用子程序![root@Server01~]#vimthanks_2.c#include<stdio.h>voidthanks_2(void){printf("Thankyou!\n");}三、項目實施任務9-3主程序、子程序鏈接、子程序的編譯例子,以thanks.c這個主程序去調用thanks_2.c這個子程序:2.進行程序的編譯與鏈接(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<==編譯生成的目標文件!-rw-r--r--.1rootroot91Jul1521:25thanks.c-rw-r--r--.1rootroot1560Jul1521:27thanks.o <==編譯生成的目標文件![root@Server01~]#gcc-othanksthanks.othanks_2.o <==小寫字母o![root@Server01~]#llthanks*-rwxr-xr-x.1rootroot8584Jul1521:28thanks<==最終結果會生成可執(zhí)行文件(2)執(zhí)行可執(zhí)行文件。[root@Server01~]#./thanksHelloWorldThankyou!三、項目實施任務9-4調用外部函數(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í)行新文件三、項目實施任務9-4調用外部函數(shù)庫:加入鏈接的函數(shù)庫特別注意,使用gcc編譯時所加入的那個-lm是有意義的,可以拆成兩部分來分析。-l:是加入某個函數(shù)庫(library)的意思。-m:是libm.so函數(shù)庫,其中,lib與擴展名(.a或.so)不需要寫。所以-lm表示使用libm.so(或libm.a)這個函數(shù)庫的意思。那-L后面接的路徑呢?這表示程序需要的函數(shù)庫libm.so請到/lib或/usr/lib里面尋找。三、項目實施任務9-5gcc的簡易用法(編譯、參數(shù)與鏈接)(1)僅將原始碼編譯成為目標文件,并不制作鏈接等功能。[root@Server01~]#gcc-chello.c上述程序會自動生成hello.o文件,但是并不會生成二進制可執(zhí)行文件。(2)在編譯的時候,依據(jù)作業(yè)環(huán)境給予執(zhí)行速度優(yōu)化。[root@Server01~]#gcc-Ohello.c-c上述程序會自動生成hello.o文件,并且進行優(yōu)化。三、項目實施任務9-5gcc的簡易用法(編譯、參數(shù)與鏈接)(3)在進行二進制可執(zhí)行文件制作時,將鏈接的函數(shù)庫與相關的路徑填入。[root@Server01~]#gccsin.c-lm-L/usr/lib-I/usr/include在最終鏈接成二進制可執(zhí)行文件的時候,這個命令較常執(zhí)行。-lm指的是libm.so或libm.a函數(shù)庫文件。-L后面接的路徑是剛剛上面那個函數(shù)庫的搜索目錄。-I后面接的是源碼內的include文件所在的目錄。三、項目實施任務9-5gcc的簡易用法(編譯、參數(shù)與鏈接)(4)將編譯的結果生成某個特定文件。[root@Server01~]#gcc-ohellohello.c程序中,-o后面接的是要輸出的二進制可執(zhí)行文件名。(5)在編譯的時候,輸出較多的信息說明。[root@Server01~]#gcc-ohellohello.c-Wall加入-Wall之后,程序的編譯會變得較為嚴謹一點,所以警告信息也會顯示出來。三、項目實施任務9-6使用make進行宏編譯1.為什么要用make先來想象一個案例,假設執(zhí)行文件里面包含了4個源碼文件,分別是main.c、haha.c、sin_value.c和cos_value.c,這4個文件的功能如下。main.c:主要目的是讓用戶輸入角度數(shù)據(jù)與調用其他3個子程序。haha.c:輸出一堆信息。sin_value.c:計算用戶輸入的角度(360)正弦數(shù)值。cos_value.c:計算用戶輸入的角度(360)余弦數(shù)值。三、項目實施任務9-6使用make進行宏編譯main.c:主要目的是讓用戶輸入角度數(shù)據(jù)與調用其他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);}三、項目實施任務9-6使用make進行宏編譯haha.c:輸出一堆信息。[root@Server01c]#vimhaha.c#include<stdio.h>inthaha(charname[15]){ printf("\n\nHi,Dear%s,nicetomeetyou.",name);}三、項目實施任務9-6使用make進行宏編譯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);}三、項目實施任務9-6使用make進行宏編譯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);}三、項目實施任務9-6使用make進行宏編譯由于這4個文件包含了相關性,并且還用到數(shù)學函數(shù)式,所以如果想要讓這個程序可以運行,那么就需要進行編譯。①先進行目標文件的編譯,最終會有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三、項目實施任務9-6使用make進行宏編譯②再鏈接形成可執(zhí)行文件main,并加入libm的數(shù)學函數(shù)(\是命令換行符,按回車鍵后在下行繼續(xù)輸入未輸入完成的命令即可)。[root@Server01c]#gcc-omainmain.ohaha.osin_value.ocos_value.o\-lm-L/usr/lib-L/lib③本程序的運行結果,必須輸入姓名、360度角的角度值來完成計算。[root@Server01c]#./mainPleaseinputyourname:Bobby<==這里先輸入名字Pleaseenterthedegreeangle(ex>90):30<==輸入以360度為主的角度Hi,DearBobby,nicetomeetyou.<==這三行為輸出的結果TheSinis:0.50TheCosis:0.87三、項目實施任務9-6使用make進行宏編譯利用make這個工具,一個步驟就全部完成上面所有的操作①先編輯makefile這個規(guī)則文件,內容是制作出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)生的空格,不是真正空格,否則會出錯!三、項目實施任務9-6使用make進行宏編譯利用make這個工具,一個步驟就全部完成上面所有的操作②使用makefile制訂的規(guī)則進行編譯[root@Server01c]#rm-fmain*.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三、項目實施任務9-6使用make進行宏編譯2.了解makefile的基本語法與變量make的語法相當多且復雜,這里僅列出一些基本的守則,基本的makefile守則如下:目標(target):目標文件1目標文件2<tab>gcc-o欲創(chuàng)建的可執(zhí)行文件目標文件1目標文件2目標(target)就是我們想要創(chuàng)建的信息,而目標文件就是具有相關性的objectfiles。語法規(guī)則如下:在makefile當中的#代表注解。需要在命令行(例如gcc這個編譯器命令)的第一個字節(jié)按“Tab”鍵。目標(target)與相關文件(就是目標文件)之間需以“:”隔開。三、項目實施任務9-6使用make進行宏編譯上一個小節(jié)的范例做進一步說明,如果想要有兩個以上的執(zhí)行操作,例如執(zhí)行一個命令就直接清除掉所有的目標文件與可執(zhí)行文件,那該如何制作makefile文件呢?(1)先編輯makefile來建立新的規(guī)則,此規(guī)則的目標名稱為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)生的空格,不是真正空格,否則會出錯!三、項目實施任務9-6使用make進行宏編譯而如果想要先清除目標文件再編譯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三、項目實施任務9-6使用make進行宏編譯makefile里面重復的數(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)生的空格,不是真正空格,否則會出錯!三、項目實施任務9-6使用make進行宏編譯變量的基本語法如下:變量與變量內容以“=”隔開,同時兩邊可以有空格。變量左邊不可以按“Tab”鍵,例如上面范例的第一行LIBS左邊不可以按“Tab”鍵。變量與變量內容在“=”兩邊不能具有“:”。習慣上,變量最好是以“大寫字母”為主。運用變量時,使用${變量}或$(變量)。該shell的環(huán)境變量是可以被套用的,例如提到的CFLAGS這個變量。在命令行模式也可以定義變量。三、項目實施任務9-6使用make進行宏編譯由于gcc在進行編譯的行為時,會主動地去讀取CFLAGS這個環(huán)境變量,所以,可以直接在shell定義這個環(huán)境變量,也可以在makefile文件里面去定義,或者在命令行當中定義。例如:[root@Server01c]#CFLAGS="-Wall"makecleanmain#這個操作在make上進行編譯時,會取用CFLAGS的變量內容項目10
配置與管理samba服務器《Linux網(wǎng)絡操作系統(tǒng)項目教程(歐拉/麒麟)(微課版)(第5版)》“十四五”職業(yè)教育國家規(guī)劃教材能力要求CAPACITY掌握samba的工作原理。0103掌握主配置文件samba.conf的配置方法。02掌握samba服務密碼文件的配置方法。04掌握samba服務密碼文件的配置方法。思政導入IDEOLOGY“龍芯”讓中國人自豪!請記住“龍芯”,記住“863”“973”“核高基”等國家重大項目。為中華之崛起而讀書,從來都不僅限于紙上。思政目標IDEOLOGY如果人生是一場奔赴,青春最好的“模樣”是昂首篤行、步履鏗鏘。“人無剛骨,安身不牢?!惫菤馐侨说募沽海乔靶械闹е?。新時代的弄潮兒要有“富貴不能淫,貧賤不能移,威武不能屈”的氣節(jié),要有“自信人生二百年,會當水擊三千里”的勇氣,還要有“我將無我,不負人民”的擔當。思政內容IDEOLOGY
你知道“龍芯”嗎?你知道“龍芯”的應用水平嗎?通用處理器是信息產(chǎn)業(yè)的基礎部件,是電子設備的核心器件。通用處理器是關系到國家命運的戰(zhàn)略產(chǎn)業(yè)之一,其發(fā)展直接關系到國家技術創(chuàng)新能力,關系到國家安全,是國家的核心利益所在?!褒埿尽笔俏覈钤缪兄频母咝阅芡ㄓ锰幚砥飨盗校?001年在中國科學院計算所開始研發(fā),得到了“863”“973”“核高基”等項目的大力支持,完成了10年的核心技術積累。2010年,中國科學院和北京市政府共同牽頭出資,龍芯中科技術有限公司正式成立,開始市場化運作,旨在將龍芯處理器的研發(fā)成果產(chǎn)業(yè)化。思政內容IDEOLOGY目前龍芯處理器產(chǎn)品在各領域取得了廣泛應用。在安全領域,龍芯處理器已經(jīng)通過了嚴格的可靠性實驗,作為核心元器件應用在幾十種型號和系統(tǒng)中,2015年,龍芯處理器成功應用于北斗二代導航衛(wèi)星。在通用領域,龍芯處理器已經(jīng)應用在個人計算機、服務器及高性能計算機、行業(yè)計算機終端,以及云計算終端等方面。在嵌入式領域,基于龍芯CPU的防火墻等網(wǎng)安系列產(chǎn)品已達到規(guī)模銷售;應用于國產(chǎn)高端數(shù)控機床等系列工控產(chǎn)品顯著提升了我國工控領域的自主化程度和產(chǎn)業(yè)化水平;龍芯提供了IP設計服務,在國產(chǎn)數(shù)字電視領域也與國內多家知名廠家展開合作,其IP地址授權量已達百萬片以上。項目知識準備項目設計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內容導航CONTENTS一、項目知識準備了解samba應用環(huán)境文件和打印機共享:文件和打印機共享是samba的主要功能,通過SMB進程實現(xiàn)資源共享,將文件和打印機發(fā)布到網(wǎng)絡之中,以供用戶訪問。身份驗證和權限設置:smbd服務支持usermode和domainmode等身份驗證和權限設置模式,通過加密方式可以保護共享的文件和打印機。名稱解析:samba通過nmbd服務可以搭建NBNS(NetBIOSNameService)服務器,提供名稱解析,將計算機的NetBIOS名解析為IP地址。瀏覽服務:局域網(wǎng)中,samba服務器可以成為本地主瀏覽服務器(LMB),保存可用資源列表,當使用客戶端訪問Windows網(wǎng)上鄰居時,會提供瀏覽列表,顯示共享目錄、打印機等資源。一、項目知識準備了解SMB協(xié)議SMB(ServerMessageBlock)通信協(xié)議可以看作是局域網(wǎng)上共享文件和打印機的一種協(xié)議。samba則是將SMB協(xié)議搬到UNIX系統(tǒng)上來使用,通過“NetBIOSoverTCP/IP”,使用samba不但能與局域網(wǎng)絡主機共享資源,而且能與全世界的計算機共享資源。項目知識準備項目設計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內容導航CONTENTS二、項目設計與準備了解samba服務器配置的工作流程1.基本的samba服務器的搭建流程主要分為5個步驟。(1)編輯主配置文件smb.conf,指定需要共享的目錄,并為共享目錄設置共享權限。(2)在smb.conf文件中指定日志文件名稱和存放路徑。(3)設置共享目錄的本地系統(tǒng)權限。(4)重新加載配置文件或重新啟動SMB服務,使配置生效。(5)關閉防火墻,同時設置SELinux為允許。二、項目設計與準備了解samba服務器配置的工作流程2.samba的工作流程如圖所示。(1)客戶端請求訪問samba服務器上的共享目錄。(2)samba服務器接收到請求后,會查詢主配置文件smb.conf,看是否共享了目錄,如果共享了目錄則查看客戶端是否有權限訪問。(3)samba服務器會將本次訪問信息記錄在日志文件之中,日志文件的名稱和路徑都需要我們設置。(4)如果客戶端滿足訪問權限設置,則允許客戶端進行訪問。二、項目設計與準備設備準備本項目要用到Server01、Client3和Client1,設備情況如表所示:主
機
名操作系統(tǒng)IP地址網(wǎng)絡連接方式samba共享服務器:Server01EulerOS22.03LTS/24VMnet1(僅主機模式)Windows客戶端:Client3Windows100/24VMnet1(僅主機模式)Linux客戶端:Client1EulerOS22.03LTS1/24VMnet1(僅主機模式)項目知識準備項目設計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內容導航CONTENTS三、項目實施任務10-1安裝并啟動samba服務使用rpm-qa|grepsamba命令檢測系統(tǒng)是否安裝了samba相關性軟件包:[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服務。[root@Server01~]#dnfcleanall //安裝前先清除緩存[root@Server01~]#dnfinstallsamba-y三、項目實施任務10-1安裝并啟動samba服務(5)所有軟件包安裝完畢,可以使用rpm命令再一次進行查詢:[root@Server01~]#rpm-qa|grepsamba(6)啟動smb服務,設置開機啟動該服務,重啟服務。[root@Server01~]#systemctlstartsmb;systemctlenablesmb注意:在服務器配置中,更改了配置文件后,一定要記得重啟服務,讓服務重新加載配置文件,這樣新配置才生效。重啟的命令是:systemctlrestartsmb或systemctlreloadsmb三、項目實施任務10-2主要配置文件smb.conf1.samba服務程序中的參數(shù)以及作用samba的配置文件一般就放在/etc/samba目錄中,主配置文件名為smb.conf。RHEL8的smb.conf配置文件已經(jīng)簡化,只有37行左右。為了方便配置,建議先備份smb.conf,一旦發(fā)現(xiàn)錯誤可以隨時從備份文件中恢復主配置文件。操作如下:[root@Server01~]#cd/etc/samba[root@Server01samba]#ls[root@Server01samba]#cpsmb.confsmb.conf.bak[root@Server01samba]#cd三、項目實施任務10-2主要配置文件smb.conf2.ShareDefinitions共享服務的定義ShareDefinitions設置對象為共享目錄和打印機,如果想發(fā)布共享資源,需要對ShareDefinitions部分進行配置。(1)設置共享名。共享名的設置非常簡單,格式為:[共享名](2)共享資源描述。格式:comment=備注信息(3)共享路徑。格式:path=絕對地址路徑三、項目實施任務10-2主要配置文件smb.conf(4)設置匿名訪問。設置是否允許對共享資源進行匿名訪問,可以更改public字段。格式:public=yes#允許匿名訪問public=no#禁止匿名訪問三、項目實施任務10-2主要配置文件smb.conf【例10-1】samba服務器中有個目錄為/share,需要發(fā)布該目錄成為共享目錄,定義共享名為public,要求:允許瀏覽、允許只讀、允許匿名訪問。設置如下所示。[public] comment=public path=/share browseable=yes readonly=yes public=yes三、項目實施任務10-2主要配置文件smb.conf(5)設置訪問用戶。如果共享資源存在重要數(shù)據(jù)的話,需要對訪問用戶進行審核,我們可以使用validusers字段進行設置。格式:validusers=用戶名validusers=@組名【例10-2】samba服務器/share/tech目錄中存放了公司技術部數(shù)據(jù),只允許技術部員工和經(jīng)理訪問,技術部組為tech,經(jīng)理賬號為manager。[tech]comment=techpath=/share/techvalidusers=@tech,manager三、項目實施任務10-2主要配置文件smb.conf(6)設置目錄只讀。共享目錄如果需要限制用戶的讀寫操作,我們可以通過readonly實現(xiàn)。格式:readonly=yes#只讀readonly=no#讀寫(7)設置過濾主機。hostsallow=192.168.10.上述程序表示允許來自或的訪問者訪問samba服務器資源。hostsdeny=192.168.2.上述程序表示不允許來自網(wǎng)絡的主機訪問當前samba服務器資源。三、項目實施任務10-2主要配置文件smb.conf【例10-3】samba服務器公共目錄/public存放大量共享數(shù)據(jù),為保證目錄安全,僅允許網(wǎng)絡的主機訪問,并且只允許讀取,禁止寫入。[public]comment=publicpath=/publicpublic=yesreadonly=yeshostsallow=192.168.10.三、項目實施任務10-2主要配置文件smb.conf(8)設置目錄可寫。如果共享目錄允許用戶寫操作,可以使用writable或writelist兩個字段進行設置。writable格式:writable=yes#讀寫writable=no#只讀writelist格式:writelist=用戶名writelist=@組名三、項目實施任務10-3samba服務的日志文件和密碼文件日志文件對于samba非常重要,它存儲著客戶端訪問samba服務器的信息,以及samba服務的錯誤提示信息等,可以通過分析日志,幫助解決客戶端訪問和服務器維護等問題。在/etc/samba/smb.conf文件中,logfile為設置samba日志的字段。如下所示:logfile=/var/log/samba/log.%msamba服務的日志文件默認存放在/var/log/samba/中,其中samba會為每個連接到samba服務器的計算機分別建立日志文件。使用ls-a/var/log/samba命令可以查看日志的所有文件。三、項目實施任務10-3samba服務的日志文件和密碼文件2.samba服務密碼文件samba服務器發(fā)布共享資源后,客戶端訪問samba服務器,需要提交用戶名和密碼進行身份驗證,驗證合格后才可以登錄。samba服務為了實現(xiàn)客戶身份驗證功能,將用戶名和密碼信息存放在/etc/samba/smbpasswd中,在客戶端訪問時,將用戶提交的資料與smbpasswd中存放的信息進行比對,如果相同,并且samba服務器其他安全設置允許,客戶端與samba服務器的連接才能建立成功。三、項目實施任務10-3samba服務的日志文件和密碼文件那如何建立samba賬號呢?首先,samba賬號并不能直接建立,需要先建立Linux同名的系統(tǒng)賬號。例如,如果要建立一個名為yy的samba賬號,那么Linux系統(tǒng)中必須提前存在一個同名的yy系統(tǒng)賬號。samba中添加賬號的命令為smbpasswd,格式為:smbpasswd-a用戶名三、項目實施任務10-3samba服務的日志文件和密碼文件【例10-4】在samba服務器中添加samba賬號reading。(1)建立Linux系統(tǒng)賬號reading。[root@Server01~]#useraddreading[root@Server01~]#passwdreading(2)添加reading用戶的samba賬號。[root@Server01~]#smbpasswd-areading三、項目實施任務10-4user服務器實例解析在openEuler中,samba服務程序默認使用的是用戶口令認證(user)模式。這種認證模式可以確保僅讓有密碼且受信任的用戶訪問共享資源,而且驗證過程十分簡單。【例10-5】如果公司有多個部門,因工作需要,就必須分門別類地建立相應部門的目錄。要求將銷售部的資料存放在samba服務器的/companydata/sales/目錄下集中管理,以便銷售人員瀏覽,并且該目錄只允許銷售部員工訪問。需求分析:在/companydata/sales/目錄中存放有銷售部的重要數(shù)據(jù),為了保證其他部門無法查看其內容,我們需要將全局配置中security設置為user安全級別。這樣就啟用了samba服務器的身份驗證機制。然后在共享目錄/companydata/sales下設置validusers字段,配置只允許銷售部員工訪問這個共享目錄。三、項目實施任務10-4user服務器實例解析(1)建立共享目錄,并在其下建立測試文件。[root@Server01~]#mkdir/companydata[root@Server01~]#mkdir/companydata/sales[root@Server01~]#touch/companydata/sales/test_share.tar三、項目實施任務10-4user服務器實例解析(2)添加銷售部用戶和組并添加相應的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 #設置用戶sale1密碼[root@Server01~]#passwdsale2 #設置用戶sale2密碼[root@Server01~]#passwdtest_user1 #設置用戶test_user1密碼三、項目實施任務10-4user服務器實例解析②為銷售部成員添加相應samba賬號。[root@Server01~]#smbpasswd-asale1[root@Server01~]#smbpasswd-asale2三、項目實施任務10-4user服務器實例解析(3)修改samba主配置文件:vim/etc/samba/smb.conf。直接在原文件未尾添加,但要注意將原文件的[global]刪除或用“#”注釋掉,文件中不能有兩個同名的[global]。當然也可直接在原來的[global]上進行修改。
39[global]40workgroup=Workgroup41serverstring=FileServer42security=user43#設置user安全級別模式,取默認值
44passdbbackend=tdbsam45printing=cups46printcapname=cups47loadprinters=yes48cupsoptions=raw
49[sales]50#設置共享目錄的共享名為sales51comment=sales52path=/companydata/sales53#設置共享目錄的絕對路徑
54writable=yes55browseable=yes56validusers=@sales57#設置可以訪問的用戶為sales組三、項目實施任務10-4user服務器實例解析(4)設置共享目錄的本地系統(tǒng)權限和屬組。[root@Server01~]#chmod770/companydata/sales-R[root@Server01~]#chown:sales/companydata/sales-R-R參數(shù)是遞歸用的,一定要加上。三、項目實施任務10-4user服務器實例解析(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三、項目實施任務10-4user服務器實例解析(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)加入防火墻的允許服務
ports:………………三、項目實施任務10-4user服務器實例解析(7)重新加載samba服務并設置開機時自動啟動。
[root@Server01~]#systemctlrestartsmb[root@Server01~]#systemctlenablesmb(8)測試。一是在Windows10中利用資源管理器進行測試,二是利用Linux客戶端。三、項目實施任務10-4user服務器實例解析以下的操作在Client2上進行。(1)使用UNC路徑直接進行訪問依次選擇“開始”→“運行”命令,使用UNC路徑直接進行訪問,例如\\192.168.10.1。打開“Windows安全”對話框,如圖所示。輸入sale1或sale2及其密碼,登錄后可以正常訪問。三、項目實施任務10-4user服務器實例解析(2)使用映射網(wǎng)絡驅動器訪問samba服務器共享目錄①Windows10默認是不會在桌面雙擊“此電腦”圖標,再依次選擇“計算機”→“映射網(wǎng)絡驅動器”命令,如圖所示。②單擊“映射網(wǎng)絡驅動器”命令,在彈出的“映射網(wǎng)絡驅動器”對話框中選
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度平菇香菇線上線下銷售渠道拓展合同
- 2025年度二手房買賣合同交易手續(xù)辦理指南
- 2025年度文化創(chuàng)意產(chǎn)業(yè)項目合作開發(fā)合同4篇
- 2025年度寧夏糧食和物資儲備局糧食儲備庫安全管理合同4篇
- 二零二五年度高品質木箱紙箱租賃經(jīng)營合同3篇
- 二零二五年停薪留職員工績效管理合同
- 二零二五年度床上用品電商平臺合作推廣合同2篇
- 江蘇省村衛(wèi)生室人員合理用藥培訓
- 二零二五年度民政局認證離婚協(xié)議書范本
- 二零二五年度林地使用權租賃合同范例3篇
- 《榜樣9》觀后感心得體會四
- 2023事業(yè)單位筆試《公共基礎知識》備考題庫(含答案)
- 化學-廣東省廣州市2024-2025學年高一上學期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國蛋糕行業(yè)市場規(guī)模及發(fā)展前景研究報告(智研咨詢發(fā)布)
- 潤滑油過濾培訓
- 護理組長年底述職報告
- 浙江省紹興市2023-2024學年高一上學期期末考試物理試題(含答案)
- 2013年6月22日下午湖北省公務員國家安全局面試真題
評論
0/150
提交評論