Professional Documents
Culture Documents
Linux System Administration (Complete Edition) by Xero Cool (Yin Thu)
Linux System Administration (Complete Edition) by Xero Cool (Yin Thu)
https://www.facebook.com/xerocool.99
Mobile : 09778206233
Mobile : 09778206233
https://www.facebook.com/xerocool.99
၂၀၁၆-ဒီဇင္ဘာမွာေပါ့။ Japan မွာ ေက်ာင္းတက္ေနတဲ့ ညီမေလး ၁ ေယာက္က Linux ကို ျမန္မာလို ရွင္းျပေပးဖို႔
အကူအညီေတာင္းလာခဲ့ပါတယ္။ ဒီလိုန႔ဲ online မွာ xero cool ဆိုတဲ့ group ေလး ဖြင့္ၿပီး Linux System
Administration ကို ျမန္မာလို စတင္ ေရးသားခဲ့ပါတယ္။
အဲဒီ xero cool group ထဲကို၊ နည္းပညာ စိတ္၀င္စားတဲ့ ညီအကို အမညီမ ေတြပါ ပါ၀င္လာခဲ့ၿပီး member 1.6K
ရွိလာခဲ့ပါတယ္။ post ေတြ တစ္ျဖည္းျဖည္းနဲ႔ မ်ားလာခဲ့ပါတယ္။ pdf အေနနဲ႔ ျဖန္႔ေ၀ေပးဖိ႔ု ေတာင္းဆိုလာၾကပါတယ္။
ခုဆိုရင္ ဒါက အပိုင္းႏွစ္ကိုပါ ထပ္ေပါင္းထားတဲ့ Linux System Administration [Complete Edition] ပါ။ linux ကို
စိတ္၀င္စားသူေတြ အတြက္ ကြ်န္ေတာ့္ရဲ့ လက္ေဆာင္မြန္ ၁ ခု ေပါ့ဗ်ာ။ အခေၾကးေငြန႔ဲ ျဖန္႔ခ်ီတာေတြ၊ အမည္ေျပာင္းလဲ
အသံုးျပဳတာေတြ မလုပ္ဖို႔ေတာ့ ပန္ၾကားပါရေစ။
ဒါပါပဲ ခင္ဗ်ာ။
ခု office လုပ္ငန္းေတြ ေတာ္ေတာ္မ်ားမ်ားက computer ေတြမွာ သံုးေနတဲ့၊ computer ေတြမွာ install လုပ္
ထည့္သြင္းထားတဲ့၊ operating system ကို Windows လို႔ ေခၚပါတယ္။ windows xp, windows 7, windows 8,
windows 10 စသည္ျဖင့္ေပါ့။ windows OS ရဲ့ ထုတ္လုပ္သူက microsoft ပါ။
အလားတူစြာပဲ၊ linux ဆိုတာ ဘက္စံု သံုးလို႔ရတဲ့ operating system platform တစ္ခုပါ။ ဒီ linux platform ေပၚမွာမွ
linux အသြင္ကြဲေတြ အမ်ားႀကီး ရွိပါတယ္။ ဒါေတြကို linux distro ေတြလ႔ို ေခၚပါတယ္။
linux ကို ဘယ္ေနရာမွာ ျမင္ႏိုင္မလဲဆိုေတာ့၊ အေကာင္းဆံုး ဥပမာေပးရရင္၊ က်ေနာ္တို႔ mobile phone ေတြမွာ
အသံုးျပဳထားတဲ့ Android ဆိုတာသည္လည္း linux OS တစ္ခုပါပဲ။
linux ရဲ့ ဦးဆံုး ဖန္တီးရွင္ကေတာ့ Linus Torvalds ပါ။ 1991 ခုႏွစ္မွာ စတင္ ဖန္တီးခဲ့ပါတယ္။ linux ကို
ပင္ဂြင္းငွက္ေလးနဲ႔ ကိုယ္စားျပဳေလ့ရွိပါတယ္။
linux ဟာ နည္းပညာေလာကမွာ အရမ္း ေပါက္သြားတယ္လို႔ ဆိုရမွာပါ။ linux distro ေထာင္န႔ဲ ခ်ီၿပီး ရွိပါတယ္။
အဲဒီထဲကမွ လူသိမ်ား ထင္ရွားတာေတြကေတာ့ Debian, redhat, centOS, fedora, ubuntu, suse, backtrack, kali,
Arch,.. စသည္ျဖင့္ေပါ့။
linux ကို အသံုးျပဳရာမွာ မိမိ လိုအပ္ခ်က္နဲ႔ ကိုက္ညီမယ့္ distro ကို ေရြးခ်ယ္ အသံုးျပဳရံုပါပဲ။ linux ဟာ windows တို႔
mac OS တိ႔လ
ု ို အခေၾကးေငြ နဲ႔ ဝယ္ယူရတာ မဟုတ္ပဲ၊ free အေနနဲ႔ လြတ္လပ္စြာ ျဖန္႔ခ်ီတဲ့ OS တစ္ခုပါ။ linux OS
ေတြကို internet ကေန အလြယ္တကူ download လုပ္ ရယူႏိုင္ပါတယ္။
linux OS နဲ႔ အတူ သူ႔ကို ဖန္တီးထားတဲ့ source code ေတြကိုပါ တစ္ပါတည္း ထည့္ေပးထားတာေၾကာင့္၊
နည္းပညာရွင္ေတြ developer ေတြ အတြက္ အမ်ားႀကီး အက်ိဳး ရွိေစပါတယ္။
linux ကို personal သံုး desktop version အေနနဲ႔ေရာ လုပ္ငန္းသံုး server version အေနနဲ႔ပါ ရရွိႏိုင္ပါတယ္။
security အားေကာင္းတာေၾကာင့္၊ linux ကို bank ေတြ telecom company ေတြ ISP (Internet Service Provider)
ေတြမွာ server အျဖစ္ သံုးစြဲၾကပါတယ္။
တိ႔ပ
ု ါပဲ။
linux ကို personal အေနနဲ႔လည္း အသံုးျပဳႏိုင္ၿပီး၊ ရံုးလုပ္ငန္း အတြက္ Open office, photo editing အတြက္ GIMP,
design ဆြဲဖို႔အတြက္ Open CAD စတဲ့ application ေတြ ရွိပါတယ္။ ေနာက္ၿပီး linux ေပၚမွာ DOTA II game ကိုလည္း
ေဆာ့ႏိုင္ပါေသးတယ္။
1.Ubuntu Linux
2.Fedora
3.Linux Mint
4.openSUSE
5.Arch Linux
6.Deepin
7.Debian
စသည္ျဖင့္ ရွိပါတယ္။
ေနာက္ၿပီး linux ကို သံုးစြဲရင္ virus အႏၱရာယ္ အတြက္ ေၾကာက္စရာ မလိုပါဘူး။ error မ်ား နည္းပါးၿပီး system crash
ျဖစ္ျခင္းမွလည္း ကင္းေဝးပါတယ္။
ဒါ့ေၾကာင့္ linux ဟာ ေရြးခ်ယ္ အသံုးျပဳသင့္တဲ့ operating system platform တစ္ခုပါ။ India ႏိုင္ငံမွာေတာ့ linux ကို
က်ယ္က်ယ္ျပန္႔ျပန္႔ အသံုးျပဳေနၾကပါၿပီ။
က်ေနာ္တို႔ Myanmar ႏိုင္ငံမွာလည္း linux ကို စတင္ အသံုးျပဳေနၾကပါၿပီ။ linux ကို စိတ္ဝင္စားေနၾကပါၿပီ။
ဒါ့ေၾကာင့္ မိမိ လိုအပ္ခ်က္နဲ႔ ကိုက္ညီမယ့္ linux distro တစ္ခုကို ေရြးခ်ယ္ အသံုးျပဳၾကပါလို႔ ဒီကေန
တိုက္တြန္းလိုက္ပါရေစ။
အားလံုးပဲ ေပ်ာ္ရႊင္ပါေစ။
centOS
နည္းပညာလမ္းေၾကာင္းအရ၊ linux နဲ႔ ပတ္သက္ၿပီး ေလ့လာမယ္ဆိုရင္၊ စမ္းသပ္မယ္ဆိုရင္၊ centOS ကို virtual box မွာ
တင္ၿပီး ေလ့က်င့္တာ အသင့္ေတာ္ဆံုးပါ။ က်ေနာ့္ suggestion ေပါ့ေနာ္။
centOS နဲ႔ red hat, fedora သိပ္မကြာျခားလွပါဘူး။ ubuntu, kali, susue တိ႔န
ု ႔လ
ဲ ည္း အေျခခံ command ေတြ
သေဘာတရားေတြ အတူတူပါပဲ။
ေျပာစရာအေနနဲ႔၊ centOS နဲ႔ Red Hat ကြာတာကေတာ့ centOS က community ကို အေျချပဳၿပီး red hat က license နဲ႔
၀ယ္သံုးရတာပါပဲ။ RHEL မွာ လိုအပ္ခ်က္အရ packages ေတြကို သြင္းမယ္ဆိုတာနဲ႔ registeration
တန္းလုပ္ခိုင္းပါလိမ့္မယ္။ ဒါ့ေၾကာင့္ centOS ကို အသံုးျပဳရတာက ပိုလြတ္လပ္ပါတယ္။
ခုဆိုရင္ centIOS version 7 ကို ေရာက္ေနပါၿပီ။ အရင္ version အေဟာင္းမွာ မပါခဲ့တဲ့ systemctl တိ႔လ
ု ို command
ေတြလည္း ပါရွိလာပါၿပီ။
centOS Community ENTerprise Operating System ကို Active multimedia, Excellent, IT bank စတဲ့ software
အေရာင္းဆိုင္ေတြမွာ အလြယ္တကူ ၀ယ္ယူႏိုင္ပါတယ္။ online ကေန download ခ်မယ္ဆိုရင္ေတာ့
https://www.centos.org/ ကေန လြတလ
္ ြတ္လပ္လပ္ free ရယူႏိုင္ပါတယ္။
ဒါ့ေၾကာင့္ နည္းပညာပိုင္းအရ linux ကို ေလ့လာမယ္ဆို centOS ကို အသံုးျပဳပါ လို႔ ဒီေနရာကေန အဆိုျပဳပါရေစ။
virtual box
မိမိ ရင္းႏွီး ကြ်မ္း၀င္ၿပီးသား windows ကို မျဖဳတ္ပဲ ORACLE virtual box ေပၚမွာ linux ကို သြင္းယူၿပီး
စမ္းသပ္လလို႔လည္း ရပါတယ္။ ဒါက ေလ့လာခါစမွာ ပိုအဆင္ေျပပါတယ္။
http://download.virtualbox.org/virtualbox/5.1.22/VirtualBox-5.1.22-115126-Win.exe
kernel and shell
kernel ဆိုတာ computer operating system တစ္ခုရဲ့ မရွိမျဖစ္ အခ်က္အခ်ာအက်ဆံုး ပင္မ core program pကို
ေခၚဆိုတဲ့ အမည္ပါ။
အဲဒီ core က ဘာေတြ လုပ္ေပးသလဲ ဆိုေတာ့၊ operating system ရဲ့ အစိတ္အပိုင္း အားလံုးအတြက္ အေျခခံက်တဲ့
basic services ေတြကို ထုတ္လုပ္ေပးပါတယ္။
ဒါ့ေၾကာင့္ computer operating system ရဲ့ အဓိက အက်ဆံုး ပင္မအပိုင္း core ကို kernel လို႔ ေခၚပါတယ္။
kernel အေၾကာင္း ၿပီးသြားေတာ့ shell အေၾကာင္း ေျပာၾကရေအာင္။ shell ဆိုတာကေတာ့ computer အသံုးျပဳသူ user
နဲ႔ kernel ရဲ့ အၾကားက ၾကားခံ interface တစ္ခုပါ။
operating system ထဲကို login ၀င္တယ္ဆိုပါစို႔၊ user name နဲ႔ password ကို စစ္ေဆးၿပီးရင္ login program ဟာ
shell ကေန တစ္ဆင့္မွ kernel ဆီ ခ်ိတ္ဆက္ရပါတယ္။
kernel ဟာ ပင္မ core ျဖစ္တာနဲ႔ အညီ ၄င္းဆီကို instruction အမွားေတြ ေရာက္သြားရင္၊ operating system
ပ်က္စီးသြားႏိုင္ပါတယ္။
shell ဟာ command line interpreter ျဖစ္ၿပီး kernel ဆီကို instruction အမွားေတြ ေရာက္မသြားေအာင္
ထိန္းေၾကာင္းေပးပါတယ္။
linux မွာ terminal ကို ဖြင့္ၿပီး မရွိတဲ့ command တစ္ခု ရိုက္ၾကည့္မယ္ဆိုရင္၊ ဥပမာ >> lulu လို႔ ရိုက္ၿပီး enter
ေခါက္ၾကည့္မယ္ဗ်ာ။
shell နဲ႔ ပတ္သက္လို႔ linux system မွာ bash shell, sh shell, csh shell, tcsh shell စသျဖင့္ ပါဝင္ၿပီး bash shell ကို
linux ရဲ့ default shell အေနနဲ႔ ထည့္သြင္းထားေလ့ ရွိပါတယ္။ terminal မွာ က်ေနာ္တို႔ ျမင္ရမယ့္ [root@linux /]#
ဆိုတာဟာ bash shell ရဲ့ interface ပါပဲ။ terminal မွာ ကိုယ္အသံုးျပဳေနတဲ့ shell အမ်ိဳးအစားကို သိခ်င္ရင္ echo $0 လို႔
ရိုက္ၿပီး ၾကည့္နိုင္ပါတယ္။ ဒါကေတာ့ shell ရဲ့ အေၾကာင္းပါ။
ကိုယ့္ရဲ့ linux machine ထဲမွာ ျမင္ေနရတဲ့ directory ေတြဟာ ဘာအတြက္လဲဆိုတာ သိထားသင့္တာေပါ့ေနာ္။ ပံုေလးနဲ႔
တြဲၿပီး ေလ့လာၾကည့္ရေအာင္။
ပံုမွာ ျမင္ရတဲ့အတိုင္း၊ linux ရဲ့ file system ကို tree ပံုစံန႔ဲ တည္ေဆာက္ထားၿပီး ဒါကို file system hierarchy လိ႔ု
ေခၚပါတယ္။ file ေတြ သိမ္းထားတဲ့ေနရာကို windows မွာ folder လို႔ ေခၚၿပီး linux မွာေတာ့ directory လို႔ ေခၚပါတယ္။
/ >> root directory လို႔ေခၚပါတယ္။ directory အားလံုးရဲ့ အထက္မွာ တည္ရွိၿပီး၊ က်န္ directories အားလံုးဟာ root ရဲ့
ေအာက္မွာ တည္ရွိပါတယ္။ directory အားလံုးရဲ့ အခ်ဳပ္ေပါ့။
bin >> linux ကို run ဖို႔ မရွိမျဖစ္ လိုအပ္တဲ့ binary file ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။
boot >> linux ကို boot လုပ္ ဆြဲတင္ဖ႔ို လိုအပ္တဲ့ boot file ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။
dev >> တပ္ဆင္ထားတဲ့ device ေတြန႔ဲ သက္ဆိုင္တဲ့ file ေတြကို သိမ္းထားတဲ့ directory တစ္ခုပါ။
etc >> linux ေပၚမွာ တင္ထားတဲ့ software ေတြရဲ့ configuration file ေတြကို သိမ္းထားတဲ့ directory တစ္ခုပါ။
home >> ေဆာက္ထားတဲ့ user account ေတြရဲ့ home directory ပါ။ ဥပမာ၊ ပံုထဲမွာ ျမင္ရတဲ့ အတိုင္း၊ alice ဆိုတဲ့
user account ရွိရင္ သူ႔အတြက္ home directory ေအာက္မွာ alice ဆိုတဲ့ directory ေလး ေဆာက္ၿပီးသား ရွိေနမွာပါ။
root >> linux ရဲ့ super user ျဖစ္တဲ့ root account ရဲ့ home directory ပါ။ root account ဟာ သူ႔ရဲ့ home directory
ကို တျခား account ေတြလို home ေအာက္မွာ မဖန္တီးပါဘူး။ ပံုထဲကအတိုင္း / ေအာက္မွာ root ဆိုတဲ့ directory
အျဖစ္ သီးျခား ရပ္တည္ပါတယ္။
run >> boot လုပ္လိုက္တဲ့ အခ်ိန္ကစလို႔ run ေနတဲ့ process ေတြ၊ application ေတြ ရဲ့ run time data ေတြ
ပါဝင္ပါတယ္။ reboot လုပ္လိုက္တဲ့ အခါမွာေတာ့ အဲဒီ data ေတြကို ဖ်က္ပစ္ၿပီး အသစ္တစ္ဖန္ ျပည္လည္ စတင္ပါတယ္။
sbin >> system administration နဲ႔ဆိုင္တဲ့ binary file ေတြပါရွိတဲ့ directory တစ္ခုပါ။
tmp >> application ေတြကို run တဲ့အခါ ယာယီ run မယ့္ file တခ်ိဳ႔ကို သိမ္းထားတဲ့ directory တစ္ခုပါ။ အဲဒီ file
ေတြဟာ 10 ရက္အတြင္း ထပ္မံ access လုပ္ မခံရရင္ အလိုအေလ်ာက္ ဖ်က္ပစ္ခံရမွာ ျဖစ္ပါတယ္။
usr >> user သြင္းယူထားတဲ့ software ေတြ၊ user အသံုးျပဳမယ့္ command ေတြ၊ system administration
command ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။
usr/bin (usr ေအာက္က bin) >> user နဲ႔ သက္ဆိုင္တဲ့ command ေတြကို သိမ္းဆည္းထားတဲ့ directory တစ္ခုပါ။
usr/sbin (usr ေအာက္က sbin) >> user နဲ႔ သက္ဆိုင္တဲ့ system administration command ေတြကို
သိမ္းဆည္းထားတဲ့ directory တစ္ခုပါ။
usr/include (usr ေအာက္က include) >> program ေတြကို ထပ္မံ develope လုပ္ရာမွာ compile လုပ္ရန္ လိုအပ္တဲ့
header file ေတြကို သိမ္းဆည္းထားတဲ့ directory တစ္ခုပါ။
usr/local (usr ေအာက္က local) >> လက္ရွိ user နဲ႔သာ သီးျခားသက္ဆိုင္ေသာ file ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။
usr/lib (usr ေအာက္က lib) >> user ေတြရဲ့ application ေတြ အတြက္ လိုအပ္တဲ့ library file ေတြကို
သိမ္းဆည္းထားတဲ့ directory တစ္ခုပါ။
usr/share (usr ေအာက္က share) >> user ေတြ share လုပ္ ေဝမွ်ႏိုင္ဖို႔ အတြက္ လိုအပ္ေသာ file ေတြ ရွိတဲ့
directory တစ္ခုပါ။
usr/src (usr ေအာက္က src) >> linux kernel ရဲ့ source code ေတြ ပါရွိတဲ့ directory တစ္ခုပါ။
usr/X11R6 (usr ေအာက္က X11R6) >> X window system အတြက္ လိုအပ္တဲ့ file ေတြ ပါရွိတဲ့ directory တစ္ခုပါ။
var >> ပါဝင္တဲ့ အေၾကာင္းအရာေတြ မၾကာခဏ dynamically ေျပာင္းလဲေနတဲ့ variable data ေတြ ရွိတဲ့ directory
တစ္ခုပါ။ database, cache directories, log files စတာေတြ ပါဝင္ပါတယ္။
var/log (var ေအာက္က log) >> system နဲ႔ သက္ဆိုင္ေသာ log file ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။
var/spool (var ေအာက္က spool) >> စာပို႔စနစ္၊ message ပို႔စနစ္၊ printing စတာေတြန႔ဲ တစ္ျခား queue လုပ္ရတဲ့
အလုပ္မွန္သမွ်ပါဝင္တဲ့ directory တစ္ခုပါ။
lib >> linux အတြက္ လိုအပ္တဲ့ library file ေတြ ပါဝင္ပါတယ္။ windows ရဲ့ dll file ေတြလိုမ်ိဳးေပါ့။
lost+found >> disk check လုပ္တဲ့အခါ ေတြ႔ရတဲ့ ပ်က္စီးေနတဲ့ file ေတြ၊ မည္သည့္ directory နဲ႔မွ အဆက္အစပ္
မရွိတဲ့ file ေတြကို သိမ္းထားတဲ့ directory တစ္ခုပါ။ computer ကို စနစ္တက် shutdown မလုပ္တဲ့အခါ အဲဒီလို file
ေတြ ရွိေနတတ္ပါတယ္။
misc >> linux နဲ႔ သက္ဆိုင္တဲ့ အေထြေထြ file ေတြ ပါရွိတဲ့ directory တစ္ခုပါ။
mnt >> CD Rom, Flash driv, printer နဲ႔ တစ္ျခား ဆက္စပ္ device ေတြကို mount လုပ္ တပ္ဆင္တဲ့ ေနရာပါ။
media >> mount လုပ္ထားတဲ့ CD Drive ထဲက data ေတြကို ဒီေနရာမွာ အလိုအေလ်ာက္ လာေရာက္ ေဖၚျပေလ့
ရွိပါတယ္။
proc >> pseudo-file system ေတြ ပါရွိပါတယ္။ ဒီ file ေတြဟာ system configuration parameters ေတြပါ။ hard
disk ေပၚမွာ အမွန္တကယ္ မတည္ရွိပဲ linux OS kernel ရဲ့ memory ေပၚမွာပဲ ရွိေနတဲ့ file ေတြ ျဖစ္ပါတယ္။ cpu
information ေတြ memory information ေတြ ပါ၀င္ပါတယ္။
ခုေလာက္ဆို linux ရဲ့ file system နဲ႔ directory တစ္ခုခ်င္းစီရဲ့ အေၾကာင္းကို သိေလာက္ၿပီ ထင္ပါတယ္။
ဒီေလာက္ပါပဲ။
linux machine ၌ Terminal ဖြင့္ျခင္း
linux နဲ႔ ရင္းႏွီးသူေတြကေတာ့ ဒီေခါင္းစဥ္ကို ၾကည့္ၿပီး ရီၾကမွာပါ။ ဟုတ္ကဲ့ ရီပါ။ ဒါေပမယ့္ ခုမွ စေလ့လာခါစ သူ ၁
ေယာက္ အတြက္ကေတာ့ ဒါက လိုအပ္ပါတယ္။
windows operating system မွာ command ေတြ ရိုက္ထည့္တဲ့ window ကို command prompt လို႔ ေခၚၿပီး၊ linux
မွာေတာ့ ဒါကို terminal လို႔ ေခၚပါတယ္။
ဟုတ္ၿပီဗ်ာ၊ user name, password ထည့္ၿပီး linux machine ထဲ login ဝင္ၿပီးၿပီ၊ linux machine ရဲ့ desktop screen
ေပၚလာၿပီ ဆိုၾကပါစို႔။
၁။ desktop ေပၚမွာ mouse နဲ႔ right click ေထာက္လိုက္ပါ။ ေပၚလာတဲ့ pop up menu ထဲကေန Terminal သို႔မဟုတ္
open terminal ဆိုတာေလးကို ထပ္ႏွိပ္ၿပီး terminal ကို ဖြင့္ပါ။
၂။ ဘယ္ဘက္အေပၚေထာင့္ application menu ထဲကေန System Tools > Terminal ကို ေရြးၿပီး ဖြင့္ပါ။
၃။ keyboard ေပၚက Alter+F2 ကို တြဲ ႏွိပ္ပါ။ ေပၚလာတဲ့ dialogue box ထဲမွာ gnome-terminal လို႔ ရိုက္ enter
ေခါက္ပါ။
linux machine ထဲကို root account နဲ႔ login ဝင္ၿပီး terminal ကို ဖြင့္လိုက္တဲ့အခါ terminal မွာ၊ ဥပမာအားျဖင့္
[root@desktop~]# လို႔ ျမင္ရပါလိမ့္မယ္။ အဲဒါကို shell prompt လို႔ ေခၚပါတယ္။
ကဲ ! ဟုတ္ၿပီ။ argument အေၾကာင္း ဆက္သြားၾကပါစို႔။ root directory ေအာက္မွာ ရွိတဲ့ readme ဆိုတဲ့ file ေလးကို
ဖြင့္ဖတ္ၾကမယ္ ဆိုပါစို႔။ cat ဆိုတဲ့ command ကို သံုးရပါမယ္။ cat readme လို႔ ရိုက္ၿပီး enter ေခါက္ရမယ္ေပါ့ဗ်ာ။
[root@linux~]# cat readme
ဒီေနရာမွာ cat ဆိုတဲ့ command ေရွ႔က readme ဆိုတဲ့ file အမည္ကို argument လို႔ ေခၚပါတယ္။
ဥပမာ အေနနဲ႔ command statement တစ္ခု ထပ္ေပးပါရေစ။ tail -f readme ဆိုတဲ့ command ကို ၾကည့္ရေအာင္၊
ဒီေနရာမွာ tail သည္ command, -f သည္ option, readme သည္ argument ျဖစ္ပါတယ္။
tail –f readme
ဒါ့အျပင္၊ command တစ္ခုန႔ဲ တစ္ခုကို semicolon ; ျခားၿပီး တစ္ေၾကာင္းတည္း အေနနဲ႔ run ႏိုင္ပါတယ္။ ဒီလို run ရင္
ရလဒ္ ၂ ခုကို အထက္ေအာက္ ေဖၚျပေပးပါလိမ့္မယ္။ ဥပမာ၊
[root@linux~]# which passwd ; type passwd
application တစ္ခု သို႔မဟုတ္ command တစ္ခုဟာ ဘာလဲ သိခ်င္ရင္ whatis နဲ႔ ၾကည့္ႏိုင္ပါတယ္။
[root@linux~]# whatis firefox
command ႏွစ္ခုကို pipe | ျခားၿပီးေတာ့ တစ္ဆက္တည္း run ႏိုင္ပါတယ္။ ဒီလို run ရင္ ပထမ command က ရလာတဲ့
result ကို ဒုတိယ command က လက္ဆင့္ကမ္းယူၿပီး run ပါလိမ့္မယ္။
ဥပမာ၊
၁။install လုပ္ထားတဲ့ package ေတြကို yum list inatalled ဆိုတဲ့ command နဲ႔ စာရင္းထုတ္မယ္။
၂။ရလာတဲ့ စာရင္းကို less နဲ႔ ၾကည့္မယ္။
ဒီလို အေျခအေနမ်ိဳးမွာ pipe သေကၤတ | ျခားၿပီး yum list installed | less လို႔ တစ္ေၾကာင္းတည္း run ႏိုင္ပါတယ္။
yum list installed | less
ဒီေလာက္ပါပဲ။
ဒီတစ္ခါ linux နဲ႔ ပတ္သက္လ႔ို အရိုးရွင္းဆံုး topic ေလးကို စလိုက္ရေအာင္။ file path ဆိုတာ file ေတြဆီသြားတဲ့
လမ္းေၾကာင္း အမ်ိဳးအစားေတြကို ဆိုလိုတာပါ။ အေရးမႀကီးေပမယ့္ သိထားသင့္တဲ့ အခ်က္ေလးေပါ့။
root directory ရဲ့ သေကၤတ / နဲ႔ စတဲ့ file path ကို ေျပာတာပါ။
ဥပမာ၊[root@linux~]# cd /etc/sysconfig
root directory ရဲ့ သေကၤတ / နဲ႔ မစတဲ့ ရိုးရိုး file path ကို ေျပာတာပါ။
file ရွိရာဆီကို command တစ္ေၾကာင္းတည္းနဲ႔ မသြားပဲ directory ေတြ တစ္ဆင့္ၿပီးမွတစ္ဆင့္ ရိုက္ၿပီး သြားတာကို
ဆိုလိုတာပါ။
ဥပမာ၊ root ေအာက္က etc ေအာက္က sysconfig ေအာက္က network-scripts ေအာက္က ifcfg-eth0 ဆိုတဲ့ file
ဆီကို သြားမယ္ ဆိုပါေတာ့။
[root@linux~]# cd /etc
[root@linux~]# cd sysconfig
[root@linux~]# cd network-scripts
[root@linux~]# vi ifcfg-eth0
ရွင္းရွင္းလင္းလင္းပါပဲေနာ္။
linux မွာ directory တစ္ခုကေန တစ္ခု change ဖို႔ ကူးေျပာင္းဖို႔ အတြက္၊ terminal ထဲကေနဆိုရင္၊ cd ဆိုတဲ့
command ကို သံုးၿပီး ကူးေျပာင္းရပါတယ္။
[root@linux~]# cd
ဥပမာ၊ home directory ထဲကေန root ေအာက္က var ေအာက္က log ဆိုတဲ့ directory ဆီ သြားခ်င္တယ္ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# cd /var/log
previous working directory ကို သြားခ်င္ရင္ cd - ကို သံုးတယ္။ လက္ရွိ ေရာက္ရွိေနတဲ့ directory မတိုင္ခင္က ၀င္ခဲ့တဲ့
directory ဆီကို ျပန္ေရာက္သြားမွာပါ။ cd - အစား cd ~- ကိုလည္း သံုးႏိုင္ပါတယ္။
[root@linux~]# cd –
[root@linux~]# cd ~-
ကိုယ္ ဘယ္ကို ေရာက္ေနလဲ? ကိုယ္ ေရာက္ရွိေနတဲ့ directory လမ္းေၾကာင္းကို ၾကည့္ခ်င္ရင္ pwd ဆိုတဲ့ command ကို
သံုးၿပီး သိနိုင္ပါတယ္။
[root@linux~]# pwd
လြယ္လြယ္ေလးပါ မခက္ပါဘူးေနာ္။
ဒီေလာက္ပါပဲ။
linux machine ထဲကို root account နဲ႔ log in ဝင္၊ terminal ကို ဖြင့္ၿပီးၿပီ ဆိုပါစို႔။ terminal မွာ [root@linux~]# လိ႔ု
ျမင္ရပါမယ္။
ဒီတစ္ခါ ေရာက္ရွိေနတဲ့ directory ေအာက္မွာ ဘာေတြ ရွိလဲၾကည့္ရေအာင္။ ဒီလို ၾကည့္ဖို႔အတြက္ ls ဆိုတဲ့ command
ကို သံုးပါတယ္။ ls command က current directory ေအာက္မွာ ရွိတဲ့ sub directory နဲ႔ file ေတြကို ျပသေပးပါတယ္။
ls လိ႔ု ရိုက္ၿပီး enter ေခါက္တဲ့အခါ directory ေအာက္မွာ ရွိတဲ့ file ေတြ directory ေတြကို ျမင္ရပါလိမ့္မယ္။
[root@linux~]# ls
ဒါေပမယ့္ hidden ေပးထားတဲ့ file ေတြ directory ေတြကို ျမင္ရမွာ မဟုတ္ပါဘူး။ hidden ျဖစ္ေနတာေတြကို
ျမင္ရဖိ႔အ
ု တြက္ -a ဆိုတဲ့ option ကို သံုးရပါတယ္။
file ေတြ directory ေတြကို ေပးထားတဲ့ read, write, execute (rwx) permission ေတြန႔ဲ တြဲလ်က္ ျမင္ခ်င္ရင္ေတာ့ -l
ဆိုတဲ့ option ကို ထပ္ျဖည့္ေပးရပါမယ္။
ls -l ေပါ့။ [root@linux~]# ls -l
file ေတြ ေဆာက္ခဲ့တဲ့ အခ်ိန္ေပၚ မူတည္ၿပီး အစဥ္လိုက္ ျပသေစခ်င္ရင္ေတာ့ -t ဆိုတဲ့ option ကို သံုးပါတယ္။
ls -t ေပါ့။ [root@linux~]# ls -t
directory တစ္ခုကို ၾကည့္တဲ့အခါ သူတို႔ရဲ့ sub directory ေတြကိုပါ တစ္ခါတည္း ျမင္ခ်င္တယ္ဆိုရင္ -R ဆိုတဲ့ option
ကို သံုးပါတယ္။
ls -R ေပါ့။ [root@linux~]# ls -R
ဒါက လက္ရွိ current လက္ရွိ directory ေအာက္က file ကို ၾကည့္တာပါ။ တစ္ျခားေနရာမွာ ရွိတဲ့ file ကို
ၾကည့္မယ္ဆိုရင္ေတာ့ အဲဒီ file တည္ရွိရာ လမ္းေၾကာင္း absolute path ကို ထည့္ေပးရပါမယ္။ ဥပမာ၊ root directory
ေအာက္က etc ဆိုတဲ့ directory ေအာက္က readme.txt ဆိုတဲ့ file ကို လွမ္းၾကည့္မယ္ ဆိုပါစို႔။
[root@linux~]# ls –l –d dirname
ဒါက လက္ရွိ current လက္ရွိ directory ေအာက္က directory ကို ၾကည့္တာပါ။ တစ္ျခားေနရာမွာ ရွိတဲ့ directory ကို
ၾကည့္မယ္ဆိုရင္ေတာ့ အဲဒီ directory တည္ရွိရာ လမ္းေၾကာင္း absolute path ကို ထည့္ေပးရပါမယ္။ ဥပမာ၊ root
directory ေအာက္က var ဆိုတဲ့ directory ေအာက္က log ဆိုတဲ့ directory ကို လွမ္းၾကည့္မယ္ ဆိုပါစို႔။
ls -alt သိ႔မ
ု ဟုတ္ ls -a -l –t
[root@linux~]# ls -alt
လြယ္လြယ္ေလးပါေနာ္။
file တစ္ခုဟာ ဘာအမ်ိဳးအစားလဲ သိခ်င္ရင္ file ဆိုတဲ့ command နဲ႔ ၾကည့္ႏိုင္ပါတယ္။ ဥပမာ၊ file1.txt ဟာ
ဘာအမ်ိဳးအစားလည္း သိခ်င္တယ္ ဆိုပါစို႔။ file file1.txt လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။
[root@linux~]# file file1.txt
file တစ္ခုကို တည္ေဆာက္ခ်င္ရင္ touch ဆိုတဲ့ command နဲ႔ တည္ေဆာက္ႏိုင္ပါတယ္။ ဥပမာ၊ file1.txt ဆိုတဲ့ text
file ေလး တစ္ခု တည္ေဆာက္ခ်င္တယ္ ဆိုပါစို႔။ touch file1.txt လို႔ရိုက္ enter ေခါက္ေပါ့။ ၿပီးရင္ ls ဆိုတဲ့ command
ေလးနဲ႔ ျပန္ၾကည့္လိုက္တဲ့ အခါ၊ current directory ေအာက္မ်ာ file1.txt ဆိုတာေလးကို ျမင္ရၿပီေပါ့။
[root@linux~]# touch file1.txt
[root@linux~]# ls
အမည္တူၿပီး no. နံပါတ္စဥ္ မတူတ၊ဲ့ တစ္ခုထက္ ပိုတဲ့၊ file ေတြကို command ၁ ေၾကာင္းတည္းနဲ႔ တည္ေဆာက္မယ္
ဆိုပါစို႔။ touch filename{1..5} ဆိုတဲ့ format ကို အသံုးျပဳရပါတယ္။ နံပါတ္စဥ္ေေတြကို တြန္႔ကြင္း brace ထဲ
ထည့္ထားလိုက္တဲ့ သေဘာပါ။
1 ကေန 5 အထိ၊ file ငါးခု အစဥ္လိုက္ ေဆာက္မယ္ဆိုရင္ {1..5}။ 1 ကေန 10 အထိ၊ file 10 ခု အစဥ္လိုက္
ေဆာက္မယ္ဆိုရင္ {1..10}။ ဥပမာ၊ file1 ကေန file10 အထိ နံပါတ္စဥ္ထိုးထားတဲ့၊ .txt နဲ႔ ဆံုးတဲ့၊ file ၁၀ ခု
ေဆာက္မယ္ ဆိုပါစို႔။ touch file{1..10}.txt လိ႔ု ရိုက္ enter ေခါက္ရံုပါပဲ။ ၿပီးရင္ ရလဒ္ကို ls နဲ႔ ျပန္ၾကည့္လိုက္ပါဦး။
[root@linux~]# touch file{1..5}.txt
[root@linux~]# ls
file သိ႔မ
ု ဟုတ္ directory တစ္ခုရဲ့ name မွာ space ထည့္ၿပီး ေဆာက္ခ်င္ရင္ filename ရဲ့ ပထမပိုင္း အဆံုးမွာ backlash
\ ကို ထည့္ၿပီး သံုးရပါတယ္။ ဥပမာ၊ file one ဆိုတဲ့ အမည္န႔ဲ file နဲ႔ one ၾကားမွာ space ျခားၿပီး text file တစ္ခု
တည္ေဆာက္မယ္ ဆိုပါစို႔။ touch file\ one.txt လို႔ ရိုက္ enter ေခါက္ရံုေပါ့။
[root@linux~]# touch file\ one.txt
ေဆာက္ၿပီးရင္ ls command နဲ႔ ေခၚၾကည့္လိုက္ပါ။ .file1.txt ဟာ list ထဲမွာ ပါမလာေတာ့ပါဘူး။ ls –a လို႔၊ -a ဆိုတဲ့
option ေလးခံၿပီး ထပ္ ေခၚၾကည့္ပါဦး။ list ထဲမွာ .file1.txt ေလး ျပန္ပါလာတာကို ေတြ႔ရပါလိမ့္မယ္။
file တစ္ခု ရဲ့ size ကို သိခ်င္ရင္ေတာ့ wc ဆိုတဲ့ command နဲ႔ ၾကည္ရ
့ ပါတယ္။ wc command မွာ -c –l –w ဆိုၿပီး
options ၃ ခု ရွိတယ္။ -c က character အေရအတြက္၊ -l က line အေရအတြက္၊ -w က word အေရအတြက္။ ဥပမာ၊
file1.txt ရဲ့ size ကို သိခ်င္တယ္ ဆိုပါစို႔။ wc file1.txt လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။ ဒီထဲကမွ character တစ္ခုတည္း
ကြက္ၾကည့္ခ်င္ရင္ေတာ့ wc –c file1.txt ေပါ့။
[root@linux~]# wc file1.txt
[root@linux~]# wc –c file1.txt
file ကို ဖ်က္ခ်င္တဲ့အခါ rm ဆိုတဲ့ comand ကို သံုးၿပီးဖ်က္ႏိုင္ပါတယ္။ ဥပမာ၊ file1.txt ဆိုတဲ့ file ကို ဖ်က္မယ္ ဆိုပါစို႔။
rm file1.txt လိ႔ု ရိုက္ enter ေခါက္ရံုေပါ့။ ဖ်က္မွာ ေသခ်ာလား yes or no ေမးပါလိမ့္မယ္။ ဒီ အခါ y ကို ထပ္ရိုက္ၿပီး
enter ေခါက္ လိုက္ရံုပါပဲ။
[root@linux~]# rm file1.txt
file တစ္ခုကို ဖ်က္တဲ့ အခါ “ဖ်က္မွာေသခ်ာလား” yes or no ဘာမွ မေမးပဲ တန္းၿပီး ဖ်က္ေစခ်င္ရင္ေတာ့၊ rm ကို -rf
ဆိုတဲ့ option နဲ႔ တြဲသံုးေပးရပါတယ္။ ဥပမာ၊ file1.txt ကို ဖ်က္မယ္ ဆိုပါစို႔။ rm –rf file1.txt ေပါ့။
[root@linux~]# rm –rf file1.txt
အားလံုးပဲ အဆင္ေျပပါေစ။
file ေတြ တည္ေဆာက္ရာမွာ သံုးသလိုပါပဲ၊ အမည္တူၿပီး no. နံပါတ္စဥ္ မတူတဲ့၊ တစ္ခုထက္ ပိုတဲ့၊ directory ေတြကို
command ၁ ေၾကာင္းတည္းနဲ႔ တည္ေဆာက္မယ္ ဆိုပါစို႔။ mkdir directoryname{1..5} ဆိုတဲ့ format ကို
အသံုးျပဳရပါတယ္။ နံပါတ္စဥ္ေေတြကုိ တြန္႔ကြင္း brace ထဲ ထည့္ထားလိုက္တဲ့ သေဘာပါ။
1 ကေန 5 အထိ၊ directory ငါးခု အစဥ္လိုက္ ေဆာက္မယ္ဆိုရင္ {1..5}။ 1 ကေန 10 အထိ၊ directory ဆယ္ခု
အစဥ္လိုက္ ေဆာက္မယ္ဆိုရင္ {1..10}။ ဥပမာ၊ dir1 ကေန dir10 အထိ နံပါတ္စဥ္ထိုးထားတဲ့၊ directory ၁၀ ခု
ေဆာက္မယ္ ဆိုပါစို႔။ mkdir dir{1..10} လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။ ၿပီးရင္ ရလဒ္ကို ls နဲ႔ ျပန္ၾကည့္လိုက္ပါဦး။
[root@linux~]# mkdir dir{1..5}
[root@linux~]# ls
directory တစ္ခက
ု ို ဖ်က္ခ်င္ရင္ rmdir သံုးရပါတယ္။ ဥပမာ၊ dir1 အမည္ရတဲ့ directory ကို ဖ်က္မယ္ဆိုပါစို႔။ rmdir
dir1 လို႔ ရိုက္ enter ေခါက္ရံုေပါ့။
[root@linux~]# rmdir dir1
ဖ်က္ခ်င္တဲ့ directory ထဲမွာ file ေတြ sub directory ေတြ ရွိေနရင္ ဖ်က္ဖို႔ မလြယပ
္ ါဘူး။ အဲဒီအခါ rm –r –f နဲ႔
ဖ်က္ႏိုင္ပါတယ္။ rm –rf လိ႔လ
ု ည္း တြဲသံုးႏိုင္ပါတယ္။ ဥပမာ၊ dir1 အမည္ရတဲ့ directory ကို ဖ်က္မယ္ဆိုပါစို႔။ rm –rf
dir1 လို႔ ရိုက္ enter ေခါက္ရံုေပါ့။
[root@linux~]# rm –r –f dir1 (or) [root@linux~]# rm –rf dir1
အားလံုးပဲ အဆင္ေျပပါေစ။
copy ကူးၾကမယ္
linux machine ေပၚမွာ file ေတြ၊ dir ေတြကို တစ္ေနရာကေန တစ္ေနရာဆီ copy ကူးတဲ့ အေၾကာင္း
ေလ့လာၾကည့္ၾကစို႔။
စလိုက္ရေအာင္ဗ်ာ …..!
file ေတြ dir ေတြကို copy ကူးခ်င္ရင္ cp ဆိုတဲ့ command ကို သံုးပါတယ္။ ဥပမာ၊ root directory ေအာက္က၊ home
ေအာက္က၊ tom ေအာက္က၊ file1 ဆိုတာေလးကို current directory ဆီ copy ကူးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command ေလးကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# cp /home/tom/file1 ./
ဒီေနရာမွာ သိထားရမွာက၊ cp ရဲ့ ေရွ႔က၊ /home/tom/file1 ဆိုတာကို source လို႔ ေခၚၿပီး၊ current directory ရဲ့
သေကၤတ ./ ကို destination လို႔ ေခၚတယ္ ဆိုတာပါပဲ။
file အမ်ားႀကီးကို command တစ္ေၾကာင္းတည္းနဲ႔ copy ကူးလို႔ရပါတယ္။ အဲဒီလို copy ကူးခ်င္ရင္၊ source ေနရာမွာ
file name ေတြကို တန္းစီ ထည့္ၿပီး၊ destination ေနရာမွာ location ကို တစ္ႀကိမ္ပဲ ထည့္ေပးရင္ ရပါၿပီ။ ဥပမာ၊ root
directory ေအာက္က၊ home ေအာက္က၊ tom ေအာက္က၊ file1 နဲ႔ file2 နဲ႔ file3 ကို current directory ဆီ copy
ကူးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# cp /home/tom/file1 /home/tom/file2 /home/tom/file3 ./
file ကို copy လည္းကူးမယ္။ file အမည္ name လည္း ေျပာင္းမယ္ဆိုရင္ destination ေနရာမွာ new name ကို
ေပးရပါမယ္။ ဥပမာ၊ root directory ေအာက္က၊ home ေအာက္က၊ tom ေအာက္က၊ file1 ဆိုတာေလးကို current
directory ဆီ file2 ဆိုတဲ့ အမည္အျဖစ္၊ copy ကူးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# cp /home/tom/file1 ./file2
directory ကို copy ကူးမယ္ဆိုရင္လည္း file ေတြကို copy ကူးတဲ့ နည္းအတိုင္း ကူးႏိုင္ပါတယ္။ တစ္ခု သိထားရမွာက
file ေတြ ရွိေနတဲ့ directory ကို ကူးမယ္ဆို၊ ကူးလို႔ မရပဲ၊ cp : omitting directory ဆိုတဲ့ error ေပၚေလ့ရွိပါတယ္။
ဒါေၾကာင့္ file ေတြ ရွိတဲ့ directory ကို copy ကူးခ်င္တဲ့ အခါ -r ဆိုတဲ့ option ေလး ခံေပးရပါတယ္။
ေအာက္ပါအတိုင္းေပါ့။
[root@linux~]# cp –r /home/tom/dir1 ./dir1
လြယ္ပါတယ္ေနာ္။
အားလံုးပဲ အဆင္ေျပပါေစ :D
file တစ္ခု ကုိ move လုပ္မယ္ဆိုရင္ mv ဆိုတဲ့ command ကို သံုးပါတယ္။ ဥပမာ၊ root directory ေအာက္က၊ home
ေအာက္က၊ tom ေအာက္က၊ file1 ဆိုတာေလးကို current directory ဆီ move လုပ္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command ေလးကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# mv /home/tom/file1 ./
ဒီေနရာမွာ သိထားရမွာက၊ mv ရဲ့ ေရွ႔က၊ /home/tom/file1 ဆိုတာကို source လိ႔ု ေခၚၿပီး၊ current directory ရဲ့
သေကၤတ ./ ကို destination လို႔ ေခၚတယ္ ဆိုတာပါပဲ။
file အမ်ားႀကီးကို command တစ္ေၾကာင္းတည္းနဲ႔ move လုပ္လို႔လည္း ရပါတယ္။ source ေနရာမွာ file name ေတြကို
တန္းစီ ထည့္ၿပီး၊ destination ေနရာမွာ location ကို တစ္ႀကိမ္ပဲ ထည့္ေပးရင္ ရၿပီ။
[root@linux~]# mv /home/tom/file1 /home/tom/file2 /home/tom/file3 ./
file ကို အမည္ name ေျပာင္းမယ္ဆိုရင္လည္း mv ကိုပဲ သံုးတယ္။ destination ေနရာမွာ new name ထည့္ေပးရတယ္။
ဥပမာ၊ tom.txt ဆိုတဲ့ file ကို jerry.txt လို႔ ေျပာင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# mv tom.txt jerry.txt
directory ကို move လုပ္မယ္ဆိုရင္လည္း file ေတြကို move လုပ္တဲ့ နည္းအတိုင္းပါပဲ။ ဥပမာ၊ current location မ်ာ
ရွိတဲ့ dir1 ဆိုတဲ့ directory ကို root directory ေအာက္က home ဆိုတဲ့ directory ေအာက္ကို ေရြ႔မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# mv dir1 /home
လြယ္ပါတယ္ေနာ္။
အားလံုးပဲ အဆင္ေျပပါေစ။
စလိုက္ၾကစို႔ …..!
command ေတြရဲ့ တည္ေနရာ လမ္းေၾကာင္းကို သိခ်င္ရင္ echo $PATH ကို သံုးပါတယ္။ terminal မွာ echo $PATH လို႔
ရိုက္၊ enter ေခါက္လိုက္တာနဲ႔ commands ေတြ လာတဲ့ လမ္းေၾကာင္းကို ျပသေပးပါလိမ့္မယ္။ ေအာက္ကလိုေပါ့။
[root@linux~]# echo $PATH
command တစ္ခုခ်င္းရဲ့ တည္ေနရာ လမ္းေၾကာင္းကို သိခ်င္ရင္ which ကို သံုးႏိုင္ပါတယ္။ ဥပမာ၊ passwd ဆိုတဲ့
command ရဲ့ တည္ေနရာကို သိခ်င္တယ္ ဆိုပါစို႔။ which passwd ေပါ့။
[root@linux~]# which passwd
/usr/bin/passwd
ဒါ့အျပင္၊ command တစ္ခုခ်င္းရဲ့ တည္ေနရာ လမ္းေၾကာင္းကို သိခ်င္ရင္ type ကို သံုးႏိုင္ပါေသးတယ္။ ဥပမာ၊ passwd
ဆိုတဲ့ command ရဲ့ တည္ေနရာကို သိခ်င္တယ္ ဆိုပါစို႔။ type passwd ေပါ့။
[root@linux~]# type passwd
Passwd is /usr/bin/passwd
command တစ္ခုန႔ဲ ဆိုင္တဲ့ အကူအညီေတြကို သိခ်င္ရင္ command ေနာက္ကေန --help ရိုက္ၿပီး ၾကည့္ႏိုင္ပါတယ္။
ဥပမာ၊ passwd ဆိုတဲ့ command နဲ႔ ဆိုင္တဲ့ အကူအညီကို ၾကည့္မယ္ ဆိုပါစို႔။ passwd --help ေပါ့။
[root@linux~]# passwd --help
command တစ္ခုရဲ့ manual ကို သိခ်င္ရင္ man ကို သံုးပါတယ္။ manual page ကို ေဖၚျပေပးမွာ ျဖစ္ၿပီး သက္ဆိုင္တဲ့
command အရဲ့ သံုးပံုသံုးနည္းေတြကို ရွင္းျပထားတာ ေတြ႔ရမွာပါ။ man page က ထြက္ဖို႔ အတြက္ q ကို ႏွိပ္ရပါတယ္။
ဥပမာ၊ passwd ဆိုတဲ့ command ရဲ့ manual ကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ man passwd ေပါ့။
[root@linux~]# man passwd
command တစ္ခုန႔ဲ ဆက္ႏြယ္တဲ့ man page ေတြကို ရွာခ်င္တဲ့အခါ man –k ကို သံုးၿပီး ရွာေဖြႏိုင္ပါတယ္။ ဥပမာ၊ man
–k passwd လို႔ ရိုက္လိုက္ရင္ passwd ဆိုတာပါတဲ့ man page ေတြရဲ့ list ကို ျမင္ရပါလိမ့္မယ္။
[root@linux~]# man –k passwd
command တစ္ခုရဲ့ မိမိ ၾကည့္လိုတဲ့ အပိုင္းကို တိုက္ရိုက္ ေရာက္ရွိလိုတဲ့ အခါ man –5 ကို သံုးတယ္။ 5 ေနရာမ်ာ မိမိ
ၾကည့္လိုတဲ့ section ကို ထည့္ႏိုင္ပါတယ္။ manual page မွာ မပါတဲ့ section ကိုေတာ့ ထည့္လို႔ မရပါဘူးေနာ္။
[root@linux~]# man 5 passwd
သြင္းလိုက္တဲ့ application နဲ႔ ဆိုင္တဲ့ အခ်က္အလက္ documentation ေတြကို ၾကည့္ခ်င္ရင္ေတာ့ /usr/share/doc မွာ
ရွာဖတ္လို႔ရပါတယ္။
ကဲ ! စာလည္း ရွည္သြားၿပီဗ်။ Command တစ္ခုန႔ဲ သက္ဆိုင္တဲ့ manual ၾကည့္နည္း၊ အကူအညီ ေခၚပံု၊ info ၾကည့္နည္း၊
documentation မ်ားကို ၀င္ေရာက္ ဖတ္ရွဳနည္းေတြကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
linux ရဲ့ terminal ထဲကေန text file ေတြ config file ေတြ log file ေတြ၊ စတဲ့ စာသား file ေတြကို ဖတ္ခ်င္တယ္
ဆိုပါစို႔။
၁။ head
၂။ tail
၃။ cat
၄။ more
ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက ထိပ္ဆံုးစာ ၁၀ ေၾကာင္းကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ head readme.txt လိ႔ု ရိုက္
ရပါမယ္။
ၾကည့္ခ်င္တဲ့ line အေရအတြက္ကို head –n 5 လို႔ သံုးၿပီး သတ္မွတ္ေပးလို႔ရပါတယ္။ 5 ေနရာမွာ ၾကည့္လိုတဲ့ line
အေရအတြက္ကို ထည့္ေပးရံုပါပဲ။
ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက ထိပ္ဆံုးစာ ၅ ေၾကာင္းကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ head -5 readme.txt လိ႔ု ရိုက္
ရပါမယ္။
၂။ tail >> သူက file ထဲမွာ ပါရွိတဲ့ စာသားေတြထဲကမွ ေအာက္ဆံုးစာ ၁၀ ေၾကာင္းကို ေဖၚျပေပးပါတယ္။
ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက ေအာက္ဆံုးစာ ၁၀ ေၾကာင္းကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ tail readme.txt လိ႔ု ရိုက္
ရပါမယ္။
tail ကို -f ဆိုတဲ့ option နဲ႔ တြဲၿပီး file တစ္ခုကို live ၾကည့္လို႔ ရပါေသးတယ္။
tai -f readme.txt လို႔ ရိုက္ enter ေခါက္မယ္။ တစ္ဖက္မွာ၊ ေနာက္ထပ္ terminal တစ္ခု ထပ္ဖြင့္ၿပီး readme.txt ကို
edit လုပ္မယ္၊ စာေၾကာင္းေတြ ထပ္ျဖည့္မယ္ဆိုရင္၊ ထပ္ျဖည့္လိုက္တဲ့ စာေၾကာင္းေတြဟာ tail -f နဲ႔ ဖြင့္ထားတဲ့ terminal
ထဲမွာ အခ်ိန္န႔တ
ဲ စ္ေျပးညီ သြားေျပာင္းလဲေနမွာပါ။
ၾကည့္ခ်င္တဲ့ line အေရအတြက္ကို tail –n 5 လို႔ သံုးၿပီး သတ္မွတ္ေပးလို႔ရပါတယ္။ 5 ေနရာမွာ ၾကည့္လိုတဲ့ line
အေရအတြက္ကို ထည့္ေပးရံုပါပဲ။
ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက ေအာက္ဆံုးစာ ၅ ေၾကာင္းကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ tail -5 readme.txt လိ႔ု ရိုက္
ရပါမယ္။
၃။ cat >> သူကေတာ့ file ထဲမွာ ပါတဲ့ စာေၾကာင္း အားလံုးကို ျပသေပးပါတယ္။ terminal ညာဘက္ေဘးက scroll bar
ကို အသံုးျပဳၿပီး အထက္ေအာက္ ေရြ႔ၾကည့္ႏိုင္ပါတယ္။
ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက စာေၾကာင္း အားလံုးကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ cat readme.txt လို႔ ရိုက္ ရပါမယ္။
၄။ more >> သူက စာေၾကာင္းေရဆန္႔သေလာက္ျပသေပးၿပီး အဆံုးထိ ဖတ္ခ်င္ရင္ enter key ေခါက္ၿပီး ေအာက္ကို ၁
ေၾကာင္းခ်င္း ဆင္းသြားႏိုင္ပါတယ္။ အထက္ေအာက္ ေရြ႔လ႔ို မရလို႔ သံုးရတာ သိပ္အဆင္မေျပပါဘူး။
ဥပမာ၊ readme.txt ကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ more readme.txt လို႔ ရိုက္ ရပါမယ္။
၅။ less >> သူကေတာ့ သံုးလို႔ ေကာင္းပါတယ္။ စာေၾကာင္းေတြကို ဖတ္ေနရင္း arrow key အသံုးျပဳၿပီး အထက္ေအာက္
ေရႊ႔ၾကည့္ႏိုင္ပါတယ္။
ဥပမာ၊ readme.txt ကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ less readme.txt လို႔ ရိုက္ ရပါမယ္။
vim >> သူကေတာ့ command line အေျချပဳ text editor ပါ။ terminal ကို ဖြင့္ၿပီး text file ေတြကို edit
လုပ္ခ်င္တဲ့အခါ vim ကို သံုးရပါတယ္။
၁။ vim text editor ကို ဖြင့္ဖို႔ သံုးရမယ့္ command ကေတာ့ vim ပါ။ vi လို႔လည္း သံုးလို႔ရပါတယ္။
ဥပမာ၊ root ေအာက္က၊ home ေအာက္က၊ file1.txt ကို edit လုပ္ခ်င္တယ္ ဆိုပါစို႔။
၂။ vim editor ထဲ ေရာက္သြားၿပီဆိုရင္ edit လုပ္ႏိုင္ဖို႔ အတြက္ keyboard ေပၚက a သို႔မဟုတ္ i သို႔မဟုတ္ insert key
ကို ႏွိပ္ေပးရပါမယ္။ ဒါဆိုရင္ edit mode ထဲ ေရာက္သြားမွာပါ။
insert mode ထဲမွာ copy ကူးခ်င္တယ္ဆို ctr + shift + v နဲ႔ paste လုပ္ ေနရာခ်ခ်င္တယ္ဆို ctrl + shift + v ကို
သံုးရပါတယ္။ ဒါက လိုအပ္တဲ့အခါ သိထားဖို႔ပါ။
ကိစၥၿပီးလို႔ save လုပ္ၿပီး ထြက္မယ္ဆို keyboard ေပၚက Esc ကို ရိုက္၊ :wq လို႔ ထပ္ရိုက္ၿပီး ထြက္ရပါမယ္။ save and
exit လုပ္တဲ့ သေဘာေပါ့။
၆။ စာေၾကာင္းေတြကို စာလံုးတစ္လံုးခ်င္းစီ ဒါမွမဟုတ္ line အလိုက္၊ block အလိုက္ selection မွတ္ခ်င္ရင္ visual mode
ကို ေျပာင္းရပါမယ္။ visual mode ကို ေျပာင္းမယ္ဆို v ကို ႏွိပ္ရပါတယ္။ visual mode ၃ မ်ိဳး ရွိပါတယ္။
shift + v ကို ႏွိပ္ရင္ line အလိုက္ selection လုပ္ႏိုင္တဲ့ visual line mode ဆီ ေရာက္ပါမယ္။
ctrl + v ကို ႏွိပ္ရင္ block အလိုက္ selection လုပ္ႏိုင္တဲ့ visual block mode ဆီ ေရာက္ပါမယ္။
၇။ visual mode ထဲမွာ copy ကူးတာကို yank လို႔ ေခၚၿပီး y key ကို အသံုးျပဳရပါတယ္။ ၁ ေၾကာင္းတည္း ကူးခ်င္ရင္ yy
လိ႔ု ႏွိပ္ေပးရၿပီး ၂ ေၾကာင္းကူးမယ္ဆို y2y စသျဖင့္ လုပ္ေဆာင္ရပါတယ္။
၈။ visual mode ထဲမွာ copy ကူးထားတာေတြ ေနရာခ် paste လုပ္တာကို put လို႔ ေခၚၿပီး၊ p key သံုးပါတယ္။ p ကို
ႏွိပ္လိုက္ရင္ cursor ရွိတဲ့ ေနရာမွာ ကူးထားတာေတြကို ေနရာခ်သြားမွာပါ။
၉။ visual mode ထဲမွာ စာေၾကာင္းေတြကို line အလိုက္ delete လုပ္မယ္ဆို d key ကို သံုးရပါတယ္။ d ကို ႏွိပ္တာနဲ႔ ၁
ေၾကာင္းခ်င္း ဖ်က္သြားမွာပါ။ x ကို ႏွိပ္ရင္ normal delete ပါ။ ပံုမွန္အတိုင္း ဖ်က္သြားပါလိမ့္မယ္။
တစ္ခု သိထားရမွာက၊ mode တစ္ခုကေန တစ္ခုဆီ ေျပာင္းတဲ့အခါ Esc key ႏွိပ္ၿပီးမွသာ ကူးေျပာင္းႏိုင္တယ္ ဆိုတာပါပဲ။
၁၀။ ေဆာင္ရြက္ထားတာေတြကို undo လုပ္မယ္ဆို ctrl + u ... redo လုပ္မယ္ဆို ctrl + r ကို အသံုးျပဳရပါမယ္။
vim text editor နဲ႔ ပတ္သက္တဲ့ တစ္ျခားသံုးႏိုင္တာေတြကို သိလိုရင္ေတာ့ man vi လိ႔ု ရိုက္ enter ေခါက္ၿပီး manual
page ထဲမွာ ေလ့လာႏိုင္ပါတယ္။
gedit >> သူကေတာ့ graphical interface နဲ႔ text editor ေလးပါ။ graphic ျဖစ္တာေၾကာင့္ အသံုးျပဳပံုက ရိုးရွင္း
လြယ္ကူပါတယ္။
ဥပမာ၊ root ေအာက္က၊ home ေအာက္က၊ file1.txt ကို edit လုပ္ခ်င္တယ္ ဆိုပါစို႔။
ဒီလိုရိုက္ enter ေခါက္လိုက္ရင္ file1.txt ဟာ gedit application ေလးထဲမွာ ပြင့္လာပါလိမ့္မယ္။ သူ႔ရဲ့ graphical
interface ကို ေလ့လာၿပီး edit လုပ္ရံုေပါ့။
ကဲ ! linux ေပၚမွာ text editing လုပ္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုး အဆင္ေျပၾကပါေစ။
တိ႔ပ
ု ါပဲ။
၁။ superuser ဆိုတာ root account ကို ေျပာတာပါ။ linux system တစ္ခုလံုးမွာ လုပ္ပိုင္ခြင့္ အရွိဆံုး account ေပါ့။
သူ႔ရဲ့ UID က 0 ပါ။
၂။ system user ဆိုတာကေတာ့ linux system အတြက္ လိုအပ္တဲ့ account ေတြကို ဆိုလိုတာပါ။
ဒီေနရာမွာ တစ္ခု ေျပာခ်င္တာက UID (user id) ပါ။ account တည္ေဆာက္စဥ္မွာ တြဲလ်က္ပါလာတဲ့ id ေပါ့။
3. UID 201 ကေန 999 ထိကို user က တည္ေဆာက္လိုက္တဲ့ system account ေတြ အတြက္ သတ္မွတ္ပါတယ္။
4. UID 1,000+ (တစ္ေထာင္ႏွင့္အထက္) ကိုေတာ့ normal account ေတြရဲ့ UID အျဖစ္ သတ္မွတ္ပါတယ္။
UID ရဲ့ default value ကို /etc/login.defs မွာ ဝင္ေရာက္ ျပင္ဆင္လို႔ ရပါတယ္။ ဥပမာ၊ default value ကို 2 လို႔
ျပင္လိုက္မယ္ဆို၊ user account ႏွစ္ခုထက္ ပိုေဆာက္လို႔ မရေတာ့ဘူးေပါ့။
account တစ္ခုရဲ့ UID ကို သိခ်င္ရင္ id ဆိုတဲ့ command နဲ႔ ၾကည့္လို႔ရပါတယ္။ ဥပမာ၊ tom ဆိုတဲ့ account ရဲ့ UID ကို
သိခ်င္တယ္ ဆိုပါစို႔။ ID tom လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။
user account တစ္ခု တည္ေဆာက္မယ္ဆို useradd ဆိုတဲ့ command ကို သံုးပါတယ္။ ဥပမာ၊ tom ဆိုတဲ့ user
account တည္ေဆာက္မယ္ ဆိုပါစို႔။ useradd tom လို႔ ရိုက္ enter ေခါက္။
user account တစ္ခုကို password ေပးခ်င္ရင္ passwd ဆိုတဲ့ command ကို သံုးပါတယ္။ ဥပမာ၊ tom ဆိုတဲ့ account
ကို password ေပးမယ္ ဆိုပါစို႔။ passwd tom လိ႔ု သံုးရပါမယ္။
user account တစ္ခုကို ဖ်က္ခ်င္ရင္ေတာ့ userdel ဆိုတဲ့ command ကို -r ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။ ဥပမာ၊
tom ဆိုတဲ့ user account ကို ဖ်က္ခ်င္တယ္ ဆိုပါစို႔။ userdel -r tom လိ႔ု သံုးရပါမယ္။
user နဲ႔ ဆိုင္တဲ့ info ေတြကို /etc/passwd မွာ ဝင္ေရာက္ ၾကည့္ရွဳႏိုင္ပါတယ္။ cat /etc/passwd ေပါ့။
/etc/passwd မွာ user name, password, user id, group id, GECOS, home directory နဲ႔ shell type ဆိုတဲ့ အပိုင္း
၇ ပိုင္း (1.username 2.password 3.UID 4.GID 5.GECOS 6.home dir 7.login shell) ကို colon : နဲ႔ ျခားၿပီး
ေဖၚျပထားတာ ေတြ႔ရပါလိမ့္မယ္။
ဒီေနရာမွာ GECOS ဆိုတာ user နဲ႔ ပတ္သက္တဲ့ comment ထည့္သြင္းထားတဲ့ ေနရာကို ဆိုလိုတာပါ။
Login ၀င္စရာ မလိုပဲ system ရဲ့ လိုအပ္ခ်က္အရ တည္ေဆာက္ထားတဲ့ user account ေတြရဲ့ shell ေနရာမွာ
/sbin/nologin လို႔ ပါေလ့ရွိတယ္။
user နဲ႔ ဆိုင္တဲ့ UID, GID နဲ႔ ပါ၀င္ထားတဲ့ group ေတြကို id နဲ႔ ၾကည့္ႏိုင္ပါတယ္။ [root@linux~]# id username
လြယ္လြယ္ ရွင္းရွင္းပါပဲေနာ္။
အားလံုးပဲ အဆင္ေျပပါေစ။
creating group
linux ေပၚမွာ user account ေတြ create လုပ္တာ သိၿပီးတဲ့ေနာက္ group ေတြ အေၾကာင္း ေျပာၾကရေအာင္။
linux မွာ
၁။ primary group ဆိုတာကေတာ့ user account တစ္ခု create လုပ္စဥ္မွာ တြဲလ်က္ပါလာတဲ့ default group ကို
ဆိုလိုတာပါ။
ဥပမာ၊ tom ဆိုတဲ့ user account ကို ေဆာက္လိုက္ရင္ tom ဆိုတဲ့ group ေလးပါ တစ္ခါတည္း ေဆာက္ၿပီးသား
ပါလာမွာပါ။
user account တစ္ခုဟာ ဘယ္ group ေတြထဲမွာ member အျဖစ္ ပါဝင္ေနသလဲ သိခ်င္ရင္ groups ဆိုတဲ့ command
နဲ႔ ၾကည့္ႏိုင္ပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user ဟာ ဘယ္ group ေတြရဲ့ member အျဖစ္ ဝင္ထားသလဲ သိခ်င္တယ္ ဆိုပါစို႔။ groups tom လို႔
ရိုက္ enter ေခါက္ရံုပါပဲ။
၂။ supplementary group ဆိုတာကေတာ့ user ကေန ထပ္မံ တည္ေဆာက္လိုက္တဲ့ group ေတြကို ဆိုလိုတာပါ။
ဥပမာ၊ team1 ဆိုတဲ့ group တစ္ခု ေဆာက္ခ်င္တယ္ ဆိုပါစို႔။ groupadd team1 လိ႔ု ရိုက္ enter ေခါက္ေပါ့။
ဥပမာ၊ team1 ဆိုတဲ့ group ကို ဖ်က္ခ်င္တယ္ ဆိုပါစို႔။ groupdel team1 ေပါ့။
ဘယ္ group ထဲမွာ ဘယ္ user ေတြ ပါသလဲ သိခ်င္ရင္ /etc/gshadow မွာ ၀င္ၾကည့္ႏိုင္ပါတယ္။
[root@linux~]# cat /etc/gshadow
အဆင္ေျပၾကပါေစ။
user account ႏွင့္ သက္ဆိုင္ေသာ .....!
linux မွာ user account ေတြ တည္ေဆာက္တာကို ေျပာခဲ့ၿပီးပါၿပီ။ ဒီတစ္ခါ user account ေတြကို လိုအပ္ခ်က္အရ
ဘယ္လို modify လုပ္ႏိုင္မလဲဆိုတာ ေလ့လာၾကရေအာင္။
user account တစ္ခုကို modify လုပ္ခ်င္တဲ့အခါ usermod ဆိုတဲ့ command ကို option ေတြန႔ဲ တြဲသံုးရပါတယ္။
၁။ usermod -u >> useraccount တစ္ခုရဲ့ UID (user id) ကို ေျပာင္းလဲခ်င္တဲ့အခါ သံုးပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ UID ကို 1500 အျဖစ္ ေျပာင္းလဲမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ tom ဆိုတဲ့ user နဲ႔အတူ my name is tom ဆိုတဲ့ info ေလး တြဲထည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
ကေတာ့ ေအာက္ပါ အတိုင္းပါ။
၃။ usermod -a -G >> user ကို တစ္ျခား group ကေန မဖယ္ရွားပဲ၊ supplementary group တစ္ခုရဲ့ member အျဖစ္
သြင္းခ်င္တဲ့အခါ သံုးပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user ကို team1 ဆိုတဲ့ group ထဲ သြင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာက္ပါအတိုင္းပါ။
၄။ usermod -g >> group တစ္ခုကို user ရဲ့ primary group အျဖစ္ သတ္မွတ္ခ်င္တဲ့အခါ သံုးပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ account ေဆာက္စဥ္က တြဲလ်က္ပါလာတဲ့ primary group က tom ပါ။ team1 ဆိုတဲ့ group
ကို primary group အျဖစ္ ေျပာင္းလဲ သတ္မွတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။
၅။ usermod -d >> user ရဲ့ home directory ကို ေျပာင္းလဲ သတ္မွတ္ေပးခ်င္တဲ့အခါ သံုးပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ account ဖြင့္စဥ္က တြဲလ်က္ပါလာတဲ့ home directory က /home/tom ပါ။ အဲဒီအစား
/home/www ကို tom ရဲ့ home directory အျဖစ္ ေျပာင္းလဲ သတ္မွတ္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ account ဖြင့္စဥ္က တြဲလ်က္ပါလာတဲ့ tom ဆိုတဲ့ home directory ရဲ့ တည္ေနရာက၊ /home
ရဲ့ ေအာက္မွာပါ။ ဒါကို /home/www ဆီ tom ရဲ့ home directory ကို ေရႊ႔ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
က ေအာက္ပါအတိုင္းပါ။
၇။ usermod -s >> user ရဲ့ default shell ကို ေျပာင္းလဲ သတ္မွတ္ခ်င္တဲ့အခါ သံုးပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ default shell က bash shell ပါ။ ဒါကို sh shell အျဖစ္ ေျပာင္းလဲ သတ္မွတ္ခ်င္တယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ tom ဆိုတဲ့ user account ကို lock ခ်မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။
usermod -L tom
၉။ usermod -U >> lock ခ်ခံထားရတဲ့ user account တစ္ခု ကို unlock ျပန္လုပ္မယ့္အခါ သံုးပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user account ကို unlock ျပန္လုပ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။
usermod -U tom
၁၀။ gpasswd -d >> user ကို supplementary group တစ္ခုထဲကေန ျပန္ဖယ္ရွားခ်င္တဲ့အခါ သံုးပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user ကို team1 ဆိုတဲ့ group ထဲကေန ဖယ္ရွားမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။
၁၁။ normal user account တစ္ခုကို sudo ဆိုတဲ့ command နဲ႔ superuser ျဖစ္တဲ့ root ကဲ့သို႔၊ အသံုးျပဳခြင့္
ေပးဖိ႔အ
ု တြက္ အဲဒီ user ကို wheel ဆိုတဲ့ group ထဲ ထည့္ေပးရပါ။ sudo နဲ႔ ဆိုင္တဲ့ configuration ေတြကို
/etc/sudoers မွာ ၀င္ၾကည့္ႏိုင္တယ္။
group တစ္ခုန႔ဲ သက္ဆိုင္တာေတြကို ျပင္ဆင္ခ်င္တဲ့အခါ groupmod ဆိုတဲ့ command ကို option ေတြန႔ဲ
တြဲသံုးရပါတယ္။
စလိုက္ၾကရေအာင္ !
၁။ groupmod -g >> group ရဲ့ GID (group id) ကို ေျပာင္းလဲ သတ္မွတ္ခ်င္တဲ့အခါ သံုးပါတယ္။
ဥပမာ၊ team1 ဆိုတဲ့ group ရဲ့ GID ကို 1500 လိ႔ု ေျပာင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ team1 ဆိုတဲ့ group ကို share အျဖစ္ name ေျပာင္းလဲမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာင္ပါအတိုင္းပါ။
group နဲ႔ သက္ဆိုင္တာေတြကို ျပင္ဆင္တဲ့ groupmod ဆိုတဲ့ command ရဲ့ အသံုးျပဳပံုေတြကို man groupmod လို႔
ရိုက္ၿပီး ဆက္လက္ေလ့လာႏိုင္ပါတယ္။
အားလံုးပဲ အဆင္ေျပပါေစ။
superuser Vs normal user
သိထားသင့္တဲ့ အခ်က္ေလးေပါ့။ super user နဲ႔ normal user ရဲ့ ကြဲျပားမွဳေတြကို ေလ့လာၾကည့္ရေအာင္။
၁။ linux system ေပၚမွာ လုပ္ပိုင္ခြင့္ အရွိဆံုး account ကို superuser လို႔ ေခၚပါတယ္။ system file ေတြကို configure
လုပ္ျခင္း၊ user account မ်ား ထပ္မံ တည္ေဆာက္ျခင္း၊ ဖ်က္ပစ္ျခင္း၊ password ႏွင့္ဆိုင္ေသာ အခ်က္အလက္မ်ားကို
manage လုပ္ျခင္း စတာေတြကို စီမံ ေဆာင္ရြက္ ႏိုင္ပါတယ္။
linux system မွာ root ဟာ တစ္ခုတည္းေသာ superuser account ပါပဲ။ သူ႔အတြက္ password ကို linux ကို စတင္
install လုပ္စဥ္ကတည္းက သတ္မွတ္ေပးခဲ့ရပါတယ္။
[root@xerocool~]# ဆိုတဲ့ shell prompt အဆံုးမွာ ရွိတဲ့ # သေကၤတသည္ ယခု အသံုးျပဳေနေသာ user ဟာ root
account ျဖစ္ေၾကာင္း ညႊန္းဆိုပါတယ္။
root account ကေန normal account တစ္ခုဆီ ကူးေျပာင္းခ်င္ရင္ su ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။
ဥပမာ၊ root account ကေန tom ဆိုတဲ့ normal account ဆီ ကူးေျပာင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။
su tom
၂။ normal user ဆိုတာကေတာ့၊ အသစ္ ထပ္မံတည္ေဆာက္လိုက္တဲ့ user account ေတြကို ဆိုလိုတာပါ။ root
account လို လုပ္ပိုင္ခြင့္ေတြ မရွိပါဘူး။
[tom@xerocool~]$ ဆိုတဲ့ shell prompt အဆံုးမွာ ရွိတဲ့ $ သေကၤတသည္ ယခု အသံုးျပဳေနေသာ user ဟာ normal
account ျဖစ္ေၾကာင္း ညႊန္းဆိုပါတယ္။
normal account ကေန root account ဆီ ကူးေျပာင္းခ်င္ရင္ su - ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ account ကေန root ဆိုတဲ့ superuser account ဆီ ကူးေျပာင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
su -
လိုအပ္ခ်က္အရ၊ normal account တစ္ခုကို root account ကဲ့သို႔ ေဆာင္ရြက္ေစလိုတဲ့အခါ၊ sudo ဆိုတဲ့ command ကို
အသံုးျပဳရပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ normal account ဟာ၊ jerry ဆိုတဲ့ user account ကို တည္ေဆာက္မယ္ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
normal account တစ္ခု အေနနဲ႔ ခုလို sudo ဆိုတဲ့ command ကို အသံုးျပဳၿပီး superuser ကဲ့သို႔ ျပဳမူႏိုင္ဖို႔၊ root
account ကေန အဲဒီ normal user ကို wheel ဆိုတဲ့ group ထဲ သြင္းေပးရပါတယ္။
ဥပမာ၊ root အေနနဲ႔ tom ဆိုတဲ့ normal account ကို sudo အသံုးျပဳခြင့္ ေပးမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
တစ္ခု သတိျပဳရမွာက၊ sudo အသံုးျပဳခြင့္ေပးဖို႔ အတြက္ normal account တစ္ခုကို wheel group ထဲကို add
ၿပီးတာေတာင္မွ၊ sudo သံုးဖို႔ အဆင္မေျပေသးရင္ /etc/sudoers ထဲကို ဝင္ျပင္ေပးရပါမယ္။ ျပင္ေပးရမယ့္
အဆင့္ေတြကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဒါဆို အဆင္ေျပပါၿပီ။ normal account တစ္ခုကို wheel group ထဲသြင္းၿပီးတာေတာင္ sudo သံုးဖို႔ အဆင္မေျပေသးရင္
ဒီနည္းအတိုင္း ေျဖရွင္းႏိုင္ပါတယ္။
ကဲ ! စာလည္း နည္းနည္း ရွည္သြားၿပီဗ်။ super user နဲ႔ normal user အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
file ႏွင့္ directory မ်ားကို permission သတ္မွတ္ျခင္း
linux ေပၚမွာ ဘာေတြ ရွိမလဲဆိုေတာ့ file ေတြ directory ေတြ ရွိပါမယ္။ အေရးႀကီးတာေတြ ရွိသလို အေရး
မႀကီးတာေတြလည္း ရွိမယ္ေပါ့။ ဒီေတာ့ အေရးႀကီးတာေတြကို မသက္ဆိုင္သူေတြ ရန္က ကာကြယ္ဖ႔ို လိုအပ္လာၿပီေပါ့။
linux system ကို ၀င္ေရာက္ အသံုးျပဳေနတဲ့ user ေတြ၊ တူညီတဲ့ group တစ္ခုရဲ့ member ေတြ၊ group ထဲမွာ မပါတဲ့
တစ္ျခား other user ေတြ အေနနဲ႔၊ အဲဒီ file ေတြ directory ေတြကို access လုပ္ရာမွာ၊ သူတို႔ရဲ့ အဆင့္အလိုက္
permission ေတြ ခြဲျခားသတ္မွတ္ ေပးထားႏိုင္ပါတယ္။
မွတ္ရလြယ္ေအာင္ အတိုေျပာရရင္
၁။ user (u)
၂။ group (g)
၃။ other (o)
ဥပမာ၊ tom နဲ႔ jerry ဆိုတဲ့ user ႏွစ္ဦးဟာ hackergroup ဆိုတဲ့ group ထဲမွာ member အျဖစ္ပါတယ္။ အဲဒီ tom ဆိုတဲ့
user က file1 ဆိုတာေလးကို တည္ေဆာက္လိုက္မယ္ ဆိုပါစို႔။ tom ဆိုတဲ့ user ဟာ အဲဒီ file ေလးရဲ့ owner အျဖစ္
file1 ကို access လုပ္ႏိုင္မယ္။ jerry သည္လည္း hackergroup ဆိုတဲ့ group ထဲမွာ ပါတဲ့ အတြက္ member တစ္ဦး
အျဖစ္ file1 ကို access လုပ္ႏိုင္မယ္။ owner လည္း မဟုတ္ group ထဲမွာလည္း မပါတဲ့ other user ေတြသည္လည္း
သူတို႔ အတြက္ သတ္မွတေ
္ ပးထားတဲ့ permission အရ file1 ကို access လုပ္ႏိုင္မယ္။ ဒီသေဘာပါ။
ဥပမာ၊ အဲဒီ file1 ဆိုတာေလးကို ls –l file1 ဆိုၿပီး ေခၚၾကည့္လိုက္ရင္၊ rw-rw-r-- ဆိုၿပီး ေတြ႔ရပါမယ္။ ေရွ့ဆံုးက rw- က
ဖန္တီးတဲ့ user (tom) အတြက္ သတ္မွတထ
္ ားတဲ့ permission ပါ။ ဒုတိယ rw- က group ထဲမွာပါတဲ့ user ေတြ (jerry)
အတြက္ သတ္မွတထ
္ ားတဲ့ permission ပါ။ တတိယ r-- ကေတာ့ owner လည္း မဟုတ္ group ထဲမွာလည္း မပါတဲ့၊
other user ေတြ အတြက္ သတ္မွတ္ထားတဲ့ permission ပါ။ ဒါကို permission သတ္မွတ္ခ်က္ လို႔ ေခၚပါတယ္။
permission ၃ မ်ိဳးရွိပါတယ္။ အဲဒါေတြကေတာ့၊
စသျဖင့္ ရွိပါတယ္။
၁။ symbolic method :: symbolic ျဖင့္ permission ေပးတယ္ ဆိုတာကေတာ့ read (r), write (w), execute (x) စတဲ့
သတ္မွတ္ခ်က္ေတြကို rwx စသျဖင့္ အတိုေကာက္ သတ္မွတ္ၿပီး ေပးတဲ့ နည္းပါ။
ဥပမာ၊ file1 ကို user အတြက္ read write execute ဆိုတဲ့ permission, group အတြက္ read write ဆိုတဲ့
permission, other အတြက္ read only ဆိုတဲ့ permission၊ စသျဖင့္ တိတိက်က် သတ္မွတ္ေပးမယ္ ဆိုပါစို႔။ = နဲ႔ တြဲၿပီး
ေအာက္ပါအတိုင္း တစ္ဆင့္ခ်င္း သတ္မတ
ွ ္သြားရမွာပါ။
file1 ကို ls –l file1 ဆိုၿပီး ျပန္ေခၚၾကည့္လိုက္တဲ့အခါ rwxrw-r-- လို႔ ေတြ႔ရပါမယ္။ - သေကၤတကေတာ့ permission
တစ္ခုမွာ rwx ဆိုၿပီး ရွိရမွာျဖစ္ၿပီး၊ ကြက္လပ္ျဖစ္ေနတဲ့ ေနရာေတြကို - နဲ႔ ျဖည့္ထားတဲ့သေဘာပါ။
ဥပမာ၊ ေစာေစာက file1 မွာ user အတြက္ read write execute လို႔ ေပးထားခဲ့တယ္။ အဲဒီထဲကမွ execute ကို
ျပန္ျဖဳတ္ခ်င္တယ္ ဆိုပါစို႔။ - နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း သတ္မွတ္သြားရမွာပါ။
ဥပမာ၊ ေစာေစာက file1 မွာ group အတြက္ read write လို႔ ေပးထားခဲ့တယ္။ အဲဒီထဲကမွ write ကို ျပန္ျဖဳတ္ခ်င္တယ္
ဆိုပါစို႔။ - နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း သတ္မွတ္သြားရမွာပါ။
group (g) အတြက္ >> chmod g-w file1
ဥပမာ၊ ေစာေစာက file1 မွာ other အတြက္ read လို႔ ေပးထားခဲ့တယ္။ အဲဒီထဲကမွ read ကို ျပန္ျဖဳတ္ခ်င္တယ္၊ ဘာ
permission မွ မေပးေတာ့ဘူး။ access လုပ္ခြင့္ မေပးေတာ့ဘူး ဆိုပါစို႔။ - နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း
သတ္မွတသ
္ ြားရမွာပါ။
ဥပမာ၊ file1 မွာ user (u) အတြက္ read write လို႔ ေပးထားတာကို execute (x) ဆိုတာေလး
ထပ္ေပါင္းထည့္ေပးခ်င္တယ္ ဆိုပါစို႔။ + နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း သတ္မွတ္သြားရမွာပါ။
မွတ္စရာ အေနနဲ႔က၊ ၁။ user (u) ၂။ group (g) ၃။ other (o) ဆိုတဲ့ အပိုင္း ၃ ပိုင္းလံုးကို တစ္ၿပိဳင္နက္ permission
သတ္မွတ္ခ်င္တဲ့အခါ a ဆိုတဲ့ symbol ကို သံုးတယ္ ဆိုတာပါပဲ။
ဥပမာ၊ file1 ဆိုတဲ့ file ကို၊ user (u) အတြက္ read, write and execute (rwx) ၊ group အတြက္ rwx ၊ other (o)
အတြက္လည္း rwx သတ္မွတ္မယ္ ဆိုပါစို႔။ a နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း သတ္မွတ္ႏိုင္ပါတယ္။
၂။ numeric method :: numeric ျဖင့္ permission ေပးတယ္ဆိုတာကေတာ့ ေစာေစာက အသံုးျပဳတဲ့ rwx ေနရာမွာ
numeric တန္ဖိုး ေတြ အစားထိုးၿပီး သတ္မွတ္တာကို ဆိုလိုတာပါ။
စသျဖင့္ ရွိပါတယ္။
အဲဒီ 4 (r) … 2 (w) … 1 (x) ဆိုတဲ့ numeric တန္ဖိုးေတြကို ေပါင္းစပ္ၿပီး permisson သတ္မွတ္တာကို numeric
method လိ႔ု ေခၚတာပါ။
ဥပမာ A၊ file1 မွာ user အတြက္ full control သတ္မွတ္ခ်က္ ကို symbolic method နဲ႔ ေပးမယ္ဆို rwx လို႔
သတ္မွတ္ေပးရမွာပါ။ အဲဒီအစား numeric method ကို သံုးမယ္ဆို၊ 4 (r) + 2 (w) + 1 (x) =7 ရတာေၾကာင့္ rwx
အစား 7 လိ႔ု ေရးရပါတယ္။
ဥပမာ B၊ file1 မွာ group အတြက္ read write သတ္မွတ္ခ်က္ ကို symbolic method နဲ႔ ေပးမယ္ဆို rw လို႔
သတ္မွတ္ေပးရမွာပါ။ အဲဒီအစား numeric method ကို သံုးမယ္ဆို၊ 4 (r) + 2 (w) =6 ရတာေၾကာင့္ rw အစား 6 လို႔
ေရးရပါတယ္။
ဥပမာ C၊ file1 မွာ other အတြက္ read only သတ္မွတ္ခ်က္ ကို symbolic method နဲ႔ ေပးမယ္ဆို r လို႔
သတ္မွတ္ေပးရမွာပါ။ အဲဒီအစား numeric method ကို သံုးမယ္ဆို၊ 4 (r) = 4 ရတာေၾကာင့္ r အစား 4 လို႔
ေရးရပါတယ္။
ဥပမာ ABC သံုးခုေပါင္းၿပီး file1 ကို numeric method နဲ႔ မွတ္ေပးရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဆက္ေလ့လာ ၾကည့္ရေအာင္။
numeric method အရ၊ 4 (r) … 2 (w) … 1 (x) စတဲ့၊ တန္ဖိုးေတြကို ေပါင္းစပ္လိုက္တဲ့ အခါ ေအာက္ပါအတိင
ု ္း
permission (၈) မ်ိဳး ရရွိပါတယ္။
ဥပမာ၊ numeric method ကို အသံုးျပဳၿပီး၊ file1 ကို user အတြက္ read and write (rw), group အတြက္ read and
execute (rx), other အတြက္ read only (r) ေပးမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
file ေတြန႔ဲ အလားတူပါပဲ၊ directory ေတြကိုလည္း symbolice method နဲ႔ numeric method သံုးၿပီး permission
သတ္မွတ္ေပးႏိုင္ပါတယ္။ permission ေပးၿပီးရင္ directory ေတြကုိ ျပန္စစ္ရမယ့္ command ကေတာ့ ls –ld dirname
ပါ။
ေနာက္တစ္ခ်က္က၊ directory တစ္ခုကို permission ေပးတဲ့အခါ သူ႔ေအာက္မွာ ရွိတဲ့ file ေတြ sub directory ေတြကိုပါ
သက္ေရာက္သြားေစခ်င္ရင္ chmod ကို -R ဆိုတဲ့ option နဲ႔ တြဲသံုးႏိုင္ပါတယ္။ chmod –R 750 directoryname
စသျဖင့္ေပါ့။
ဒီေနရာမွာ၊ method ႏွစ္ခုရဲ့ ကြာျခားခ်က္အေနနဲ႔က၊ symbolic method သံုးရင္ user, group, other စတာေတြကို
တစ္ေၾကာင္းခ်င္း ခြဲေပးရတာျဖစ္ၿပီး၊ numeric method သံုးရင္ေတာ့ တစ္ေၾကာင္းတည္းနဲ႔ ကိစၥ ၿပီးေျမာက္ႏိုင္တာပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
special permission
ရိုးရိုး permission ေတြအေၾကာင္းၿပီးသြားေတာ့၊ ခုတစ္ခါ special permission ေတြ အေၾကာင္း ဆက္လိုက္ရေအာင္။
၁။ u+s >> အဲဒီ file ကို ပိုင္ဆိုင္တဲ့ user အျဖစ္ run ပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user က file1 ဆိုတဲ့ file ကို ေဆာက္လိုက္တယ္။ ၿပီးရင္ chmod u+s file1 လို႔ user နဲ႔ ဆိုင္တဲ့
special permission ေပးလိုက္တယ္ ဆိုပါစို႔။
jerry ဆိုတဲ့ user က အဲဒီ file1 ကို လာ run မယ္ ဆိုပါစို႔။ အဲဒီ file ဟာ tom ဆိုတဲ့ user အေနနဲ႔ပဲ run ပါတယ္။
ဒီသေဘာပါ။
၂။ g+s >> အဲဒီ file ကို ပိုင္ဆိုင္တဲ့ group အျဖစ္ run ပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user က dir1 ဆိုတဲ့ directory ကို ေဆာက္လိုက္တယ္။ အဲဒီ directory ကို hacker ဆိုတဲ့ group က
ပိုင္တယ္ေပါ့။ ၿပီးရင္ tom က chmod g+s dir1 လို႔ group နဲ႔ ဆိုင္တဲ့ special permission ေပးလိုက္တယ္ ဆိုပါစို႔။
jerry ဆိုတဲ့ user က အဲဒီ dir1 ထဲမွာ file တစ္ခု လာေဆာက္မယ္ ဆိုပါစို႔။ အဲဒီ file ဟာ hacker ဆိုတဲ့ group က ပိုင္တဲ့
file အေနနဲ႔ပဲ run ပါတယ္။ ဒီသေဘာပါ။
၃။ o+t >> ေဆာက္လိုက္တဲ့ file တစ္ခုကို chmod o+t directoryname လိ႔ု special permission သတ္မွတ္
လိုက္တယ္ဆိုရင္၊ root ကလြဲၿပီး တစ္ျခား user ေတြ အေနနဲ႔ full control (rwx) ရထားရင္ေတာင္ အဲဒီ file ကို ဖ်က္လ႔ို
မရႏိုင္ပါဘူး။ ဒီသေဘာပါ။
တစ္ခု သိထားရမွာက ေပးလိုက္တဲ့ special permission s/g/t တစ္ခုခုဟာ၊ သာမန္ permission (rwx) က၊ x ရဲ့
ေနရာကို ၀င္ယူတယ္ဆိုတာပါပဲ။ နဂိုမူလ ရိုးရိုး permission မွာ execute (x) ေပးၿပီးသားဆိုရင္ small-letter အေသးနဲ႔
ေဖၚျပမွာျဖစ္ၿပီး၊ နဂိုမူလ ရိုးရိုး permission မွာ execute (x) မေပးထားဘူးဆိုရင္ capital-letter အႀကီးနဲ႔
ေဖၚျပပါလိမ့္မယ္။ ဥပမာ အေနနဲ႔ ၾကည့္ခ်င္ရင္ေတာ့၊ file သို႔မဟုတ္ directory တစ္ခုကို special permission ေပးၿပီး၊ ls
–l သို႔မဟုတ္ ls –ld နဲ႔ ေခၚၾကည့္မယ္ဆိုရင္ ေတြ႔ျမင္ရပါလိမ့္မယ္။
အဆင္ေျပပါေစ။
ဥပမာ - dir1 ဆိုတဲ့ dir ကို Tom ဆိုတဲ့ user က ပိုင္ဆိုင္ေၾကာင္း သတ္မွတ္လိုတဲ့အခါ၊ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။
ဒီလို သတ္မွတ္ေပးလိုက္ရင္ dir1 နဲ႔ ဆိုင္တဲ့ permission ေတြကို Tom အေနနဲ႔ သတ္မွတ္ေပးခြင့္ရွိသြားပါမယ္။
ဥပမာ - dir1 ကို hacker ဆိုတဲ့ group က ပိုင္ဆိုင္ေၾကာင္း သတ္မွတ္လိုတဲ့အခါ၊ groupname ေရွ႔မွာ colon :
ခံေပးရတယ္။ အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဒါဆိုရင္၊ hacker ဆိုတဲ့ group ထဲမွာပါတဲ့ member ေတြအေနနဲ႔ ေပးထားတဲ့ permission အရ၊ dir1 ကို ၀င္ေရာက္
အသံုးျပဳခြင့္ ရွိသြားပါမယ္။
file သိ႔မ
ု ဟုတ္ directory တစ္ခုကို user တစ္ဦးနဲ႔ group တစ္ခုကေန ပိုင္ဆိုင္ေၾကာင္း command တစ္ၾကာင္းတည္းနဲ႔
ေၾကျငာလိုတဲ့အခါ user name နဲ႔ group name အၾကားမွာ colon : ျခားၿပီး အသံုးျပဳရပါတယ္။
ဥပမာ - dir1 ကို tom ဆိုတဲ့ user နဲ႔ hacker ဆိုတဲ့ group က ပိုင္ဆိုင္ေၾကာင္း command တစ္ေၾကာင္းတည္းနဲ႔
ေၾကျငာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
file တစ္ခု၊ သို႔မဟုတ္ directory တစ္ခုရဲ့၊ permission သတ္မွတ္ခ်က္ေတြ၊ ownership ေတြကို ၾကည့္ခ်င္တဲ့အခါ ls –l
filename သို႔မဟုတ္ ls –ld dirname ဆိုတဲ့ format နဲ႔ ေခၚၾကည့္ႏိုင္ပါတယ္။
file1 လို႔ အမည္ရတဲ့ file ကို ေခၚၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါ အတိုင္းပါ။
ls –l file1
dir1 လို႔ အမည္ရတဲ့ directory ကို ေခၚၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါ အတိုင္းပါ။
ls –ld dir1
အားလံုးပဲ အဆင္ေျပပါေစ။
ဒါ့ေၾကာင့္ ဒီသတ္မွတ္ခ်က္ေတြကို ေျပာင္းလဲခ်င္ရင္ umask ရဲ့ value ကို ေျပာင္းလဲေပးရပါမယ္။ umask ေတြကို ဘယ္မွာ
ေျပာင္းလဲရမလဲဆိုေတာ့ /etc/profile နဲ႔ /etc/bashrc ဆိုတဲ့ file ၂ ခု ထဲကုိ vim text editor နဲ႔ ၀င္ေရာက္
ေျပာင္းလဲေပးရပါမယ္။ file ေတြဆီ ၀င္ေရာက္ဖို႔ အသံုးျပဳရမယ့္ command ၂ ခုကေတာ့ ေအာက္ပါအတိုင္းပါ။
vi /etc/profile
vi /etc/bashrc
umask ဆိုတဲ့ စကားလံုးကို ရွာၿပီး သူ႔ေဘးက တန္ဖိုးေတြကို ေျပာင္းလဲေပးရမွာပါ။ အေပၚက umask တန္ဖိုးသည္
directory အတြက္ ျဖစ္ၿပီး ေအာက္က umask တန္ဖိုးသည္ file အတြက္ ျဖစ္ပါတယ္။
default permission ကို file အတြက္ umask အသံုးျပဳၿပီး ေျပာင္းလဲမယ္ဆို 666 ထက္ ပိုၿပီး ေျပာင္းလဲလို႔ မရတဲ့
သေဘာပါ။
ဥပမာ၊ root အေနနဲ႔ directory တစ္ခု ေဆာက္တိုင္း အလုိလို ပါလာမယ့္ default permission 755 (rwwxr-xr-x) ကို
744 (rwxr--4--) အျဖစ္ ေျပာင္းလဲ သတ္မွတ္မယ္ဆိုပါစို႔။ FORMULA အရဆိုရင္ default permission 744 ရတဲ့ အထိ
directory အတြက္ အမ်ားဆံုး ခြင့္ျပဳေပးထားတဲ့ permission တန္ဖိုး 777 ထဲကေန umask တန္ဖိုးကို ႏွဳတ္ေပးရပါမယ္။
ေအာက္ပါအတိုင္းေပါ့။
ဒါ့ေၾကာင့္ root အေနနဲ႔ directory တစ္ခု ေဆာက္တိုင္း အလုိလို ပါလာမယ့္ default permission 755 (rwwxr-xr-x) ကို
744 (rwxr--r--) အျဖစ္ ေျပာင္းလဲဖို႔ အေပၚဆံုးမွာ ေတြ႔ရမယ့္ umask တန္ဖိုးကို 033 လို႔ ေျပာင္းေပးရံုေပါ့။
ဥပမာ၊ root အေနနဲ႔ file တစ္ခု ေဆာက္တိုင္း အလုိလို ပါလာမယ့္ default permission 664 (rw-rw-r) ကို 644 (rw-r--
r--) အျဖစ္ ေျပာင္းလဲ သတ္မွတ္မယ္ဆိုပါစို႔။ FORMULA အရဆိုရင္ default permission 644 ရတဲ့ အထိ file အတြက္
အမ်ားဆံုး ခြင့္ျပဳေပးထားတဲ့ permission တန္ဖိုး 666 ထဲကေန umask တန္ဖိုးကို ႏွဳတ္ေပးရပါမယ္။
ေအာက္ပါအတိုင္းေပါ့။
ဒါ့ေၾကာင့္ root အေနနဲ႔ file တစ္ခု ေဆာက္တိုင္း အလုိလို ပါလာမယ့္ default permission 664 (rw-rw-r) ကို 644 (rw-
r--r--) အျဖစ္ ေျပာင္းလဲဖို႔ အေပၚဆံုးမွာ ေတြ႔ရမယ့္ umask တန္ဖိုးကို 022 လို႔ ေျပာင္းေပးရံုေပါ့။
အားလံုး အဆင္ေျပပါေစ။
Access Control List (ACL)
linux မွာ chmod ဆိုတဲ့ command ကို အသံုးျပဳၿပီး file ေတြ directory ေတြကို r(4) w(2) x(1) နဲ႔ permission
သတ္မွတ္တဲ့အေၾကာင္းကေတာ့ ေရးခဲ့ၿပီးပါၿပီ။
ဥပမာ၊ dir1 ဆိုတဲ့ directory ရွိတယ္ ဆိုပါစို႔။ hr ဆိုတဲ့ group ရွိၿပီး tom နဲ႔ jerry ဟာ hr group ထဲမွာ ပါတဲ့ user ေတြ
ျဖစ္တယ္ ဆိုပါစို႔။
အဲဒီ hr ဆိုတဲ့ group ဟာ dir1 ကို rwx နဲ႔ access လုပ္ခြင့္ရထားတယ္ ဆိုပါစို႔။ ဒါဆို hr ဆိုတဲ့ group ထဲမွာ ပါတဲ့ user
အားလံုးဟာ dir1 ကို rwx နဲ႔ access လုပ္ခြင့္ရၿပီေပါ့။
ဒီ hr group ထဲကမွ tom ကိုပဲ access လုပ္ခြင့္ေပးမယ္။ jerry ကို access လုပ္ခြင့္ ပိတ္ထားခ်င္တယ္ ဆိုပါစို႔။ ဒီအခါမွာ
chmod ဆိုတဲ့ command နဲ႔ သတ္မွတ္ဖို႔ မလံုေလာက္ေတာ့ပါဘူး။ ဒီေနရာမွာ ACL ဟာ အေရးပါလာပါတယ္။
####################################
အရင္ဆံုး tom နဲ႔ jerry ဆိုတဲ့ account ၂ ခု ေဆာက္လိုက္ပါ။ hr ဆိုတဲ့ group တစ္ခု ေဆာက္ပါ။ tom နဲ႔ jerry ကို hr
group ထဲ သြင္းပါ။
####################################
file သို႔မဟုတ္ directory တစ္ခုဟာ ACL ကို အသံုးျပဳထားမထား ဘယ္လို ၾကည့္မလဲ? ls -l နဲ႔ ေခၚၾကည့္လိုက္လို႔
permission အဆံုးမွာ + သေကၤတေလးပါရင္ ACL ကို အသံုးျပဳထားတယ္လို႔ သိႏိုင္ပါတယ္။
ဥပမာ၊ dir1 ကို ACL အသံုးျပဳထားမထား ၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ls -ld dir1
####################################
ACL ကို ဖန္တီးရာမွာ getfacl နဲ႔ setfacl ဆိုတဲ့ command ၂ ခုကို အသံုးျပဳရပါတယ္။
getfacl dir1
user tom ကို dir1 အတြက္ rwx ေပးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
hr ဆိုတဲ့ group ကို dir1 အတြက္ rwx ေပးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
user jerry ကို dir1 ကို access လုပ္ခြင့္ ပိတ္ထားခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
user tom ကို default အျဖစ္ သတ္မွတ္ေပးခ်င္တယ္ ဆိုပါဆို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
hr ဆိုတဲ့ group ကို default အျဖစ္ သတ္မွတ္ေပးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ACL ထဲက permission ေတြကို mask ဆိုတဲ့ option နဲ႔ ထပ္ၿပီး ကန္႔သတ္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ACL သတ္မွတ္ခ်က္ေတြထဲက tom နဲ႔ဆိုင္တာကို ဖ်က္ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
setfacl -b dir1
ACL သတ္မွတ္ခ်က္ေတြထဲက default ေပးထားတဲ့ user နဲ႔ group ေတြကိုပဲ ဖ်က္ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
setfacl -k dir1
ဟုတ္ၿပီ။ mkdir dir2 ဆိုၿပီး directory ၁ ခု ထပ္ေဆာက္လိုက္ပါ။ dir1 ကို ACL သတ္မွတ္ေပးထားတယ္။ အဲဒီ
သတ္မွတ္ခ်က္ေတြအတိုင္း dir2 ကို သတ္မွတ္ေပးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
အားလံုးပဲ အဆင္ေျပၾကပါေစ။
tar, zip, gzip (file မ်ားကို ၿခံဳ႔ျခင္း/ျဖည္ျခင္း)
linux ေပၚမွာ file ေတြ directory ေတြကို ၿခံဳ႔ရာ၊ ျပန္ျဖည္ရာမွာ အသံုးျပဳရတဲ့ command ေတြအေၾကာင္းကို
ေလ့လာၾကည့္ရေအာင္။
ဒီလို ၿခံဳ႔ရာ၊ ျဖည္ရာမွာ tar, zip, gzip စတဲ့ command ေတြကို အသံုးျပဳၾကပါတယ္။
linux ေပၚမွာ file ေတြ directory ေတြကို size ေသးသြားေအာင္ ၿခံဳ႔ရာျဖည္ရာမွာ tar ဟာ အသံုးမ်ားတဲ့ command
တစ္ခုပါ။
-f : သူကေတာ့ မပါမျဖစ္ပါ။ file ေတြကို ၿခံဳ႔တာပဲျဖစ္ေစ ျပန္ျဖည္တာပဲျဖစ္ေစ content ေတြကို ၾကည့္တာပဲျဖစ္ေစ -f ကို
အၿမဲ ထည့္ေပးရပါတယ္။
-v : ၿခံဳ႔တဲ့ ျဖည္တဲ့ လုပ္ငန္းစဥ္ အေျခအေနကို visual mode နဲ႔ ျပေပးတဲ့ option တစ္ခုပါ။
-C : zip file ကို တစ္ျခား ေနရာတစ္ခုမွာ ျဖည္ခ်ေပးခ်င္တဲ့အခါ location ကို ညႊန္းဖို႔ သံုးပါတယ္။
အထက္မွာ ေဖၚျပထားတာေတြကေတာ့ လုပ္ငန္းစဥ္န႔ဲ သက္ဆိုင္တဲ့ option ေတြပါ။ zip format နဲ႔ ဆိုင္တဲ့ option က ၄
မ်ိဳး ရွိပါတယ္။ ေအာက္ပါအတိုင္းေပါ့။
ဥပမာ၊ hacker ဆိုတဲ့ directory ကို gz နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။
သို႔မဟုတ္
tar -zcf hacker.tar.gz hacker
ျပန္ျဖည္မယ္ဆို၊ tar -zxf hacker.gz သို႔မဟုတ္ tar -zxf hacker.tar.gz ေပါ့။ tgz လို႔ ေတြ႔ရင္လည္း tar.gz ဆိုတဲ့
format နဲ႔ ၿခံဳ႔ထားတာလိ႔ု သိရပါမယ္။
ဥပမာ၊ hacker ဆိုတဲ့ directory ကို bz2 နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။
သို႔မဟုတ္
ဥပမာ၊ hacker ဆိုတဲ့ directory ကိxု z နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။
သို႔မဟုတ္
၄။ တစ္ခု ေျပာပါရေစ။ ၿခံဳ႔ရာမွာ zip format နဲ႔ ဆိုင္တဲ့ option ေတြ မထည့္ပဲ -c နဲ႔ -f ပဲ သံုးၿပီး ၿခံဳ႔မယ္ ဆိုပါစို႔။ ဒီအခါ tar
ဆိုတဲ့ format ကို အသံုးျပဳေပးရပါလိမ့္မယ္။ ေအာက္ပါအတိုင္းေပါ့။
ဒါဆို tar format နဲ႔ ၿခံဳ႔သြားပါလိမ့္မယ္။ ျပန့္ဖည္မယ္ဆို tar -xf hacker.tar ေပါ့။
file ေတြ directory ေတြကို ၿခံဳ႔လိုက္ၿပီး မူလ size ထက္ ဘယ္ေလာက္ ပိုႀကံဳ႔သြားလဲ သိခ်င္ရင္ du -h နဲ႔
ၾကည့္ႏိုင္ပါတယ္။
ဥပမာ၊ hacker.xz ရဲ့ size ကို သိခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
du -h gacker.xz
ခုေလာက္ဆို tar နဲ႔ options ေတြကို လိုအပ္သလို တြဲဖက္ၿပီး အသံုးျပဳႏိုင္မယ္ ထင္ပါတယ္။ tar အေၾကာင္းကေတာ့
ဒီေလာက္ပါပဲ။
zip : zip format နဲ႔ ၿခံဳ႔မယ္ဆိုရင္ zip –r ကို သံုးပါတယ္။ ဥပမာ၊ dir1 ဆိုတဲ့ directory ကို zip format နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။
gzip : gzip format နဲ႔ ၿခံဳ႔မယ္ဆိုရင္ gzip –v ကို သံုးပါတယ္။ gzip ကို အသံုးျပဳၿပီး directory ေတြကို ၿခံဳ႔လို႔ မရပါဘူး။
သူက file ေတြပဲ သီးသန္႔ ၿခံဳ႔လ႔ရ
ို ပါတယ္။ ဥပမာ၊ file1 ဆိုတဲ့ file ကို gzip format နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command က ေအာက္ပါအတိုင္းပါ။
linux ေပၚမွာ tar, zip, gzip စတဲ့ command ေတြ အသံုးျပဳၿပီး file ေတြ directory ေတြကို ၿခံဳ႔တဲ့ ျဖည္တဲ့
အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
encryption >> file တစ္ခုကို password နဲ႔ သိမ္းမယ္ဆိုရင္ gpg -c ကို သံုးတယ္။ [root@linux~]# gpg –c filename
ျပန္ျဖည္မယ္ဆိုရင္ [root@linux~]# gpg filename.gpg
password management
password management ဆိုတာကေတာ့ password နဲ႔ သက္ဆိုင္တာေတြကို စီမံတဲ့ အပိုင္းပါ။ ေလ့လာၾကည့္ရေအာင္။
သိထားရမွာ ၁ ခုက၊ password ေတြကို manage လုပ္မယ္ဆိုရင္ root account နဲ႔မွ အဆင္ေျပပါမယ္။ ကဲ ! linux
machine ကို ဖြင့္ၿပီး root account နဲ႔ login ၀င္လိုက္ရေအာင္။
password နဲ႔ဆိုင္တာေတြ၊ password ေပးခဲ့တဲ့ ရက္စြဲေတြ၊ password တစ္ခု အတြက္ အျမင့္ဆံုး သက္တမ္း
သတ္မွတ္ခ်က္ေတြ၊ သက္တမ္းကုန္ဆံုးမယ့္ expire date,… စတာေတြကို စီမံခ်င္တဲ့အခါ၊ chage ဆိုတဲ့ command ကို
option ေတြန႔ဲ တြဲသံုးရပါတယ္။
password နဲ႔ သက္ဆိုင္တဲ့ အခ်က္ ၇ ခ်က္ ရွိပါတယ္။ အဲဒီ အခ်က္ေတြကို စီမံ သတ္မွတ္ေပးရမွာပါ။ အဲဒါေတြကေတာ့
ေအာက္ပါအတိုင္းပါပဲ။
ဒီေနရာမွာ ရက္စြဲ (date) နဲ႔ ရက္ေပါင္း (number of days)၊ မတူတာကို သတိျပဳဖို႔ မွာပါရေစ။ ကဲ ! command
အသံုးျပဳပံုေလးေတြ စလိုက္ရေအာင္။
password နဲ႔ သက္ဆိုင္တဲ့ သတ္မွတ္ခ်က္ေတြကို ၾကည့္ခ်င္တဲ့အခါ၊ chage –l ကို သံုးပါတယ္။ ေစာစာက ေျပာထားတဲ့
အခ်က္ ၇ ခ်က္ကို ျမင္ရပါလိမ့္မယ္။
[root@linux~]# chage –l username
၁။ password ေနာက္ဆံုးတစ္ေခါက္ ေျပာင္းလဲခဲ့တဲ့ ရက္စြဲ (Last password change) ကို ျပဳျပင္ဖ႔ို chage –d ကို
သံုးပါတယ္။
[root@linux~]# chage –d 2017-02-14 username
၂။ password သက္တမ္းကုန္မယ့္ ရက္စြဲ (Password expires) ကို ျပဳျပင္ဖ႔ို chage –E ကို သံုးပါတယ္။ date
ရက္ေနာက္မွာ username ထည့္ဖို႔ မေမ့ပါနဲ႔။
[root@linux~]# chage –E 2017-02-14 username
၅။ password ေျပာင္းလဲရမယ့္ အနိမ့္ဆံုး ကာလ သတ္မွတ္ခ်က္ (Minimum number of days between password
change) ကို ျပဳျပင္ဖ႔ို chage –m ကို သံုးပါတယ္။ ရက္ေပါင္း ရဲ့ ေနာက္မွာ username ထည့္ေပးဖို႔ မေမ့ပါနဲ႔။
[root@linux~]# chage –m 20 username
၆။ password ေျပာင္းလဲရမယ့္ အျမင့္ဆံုး ကာလ သတ္မွတ္ခ်က္ (Maximum number of days between password
change) ကို ျပဳျပင္ဖ႔ို chage –M ကို သံုးပါတယ္။ chage –M ရဲ့ ေနာက္မွာ username ထည့္သြင္းေပးဖို႔ လိုပါတယ္။
ဥပမာ၊ password နဲ႔ သက္ဆိုင္တဲ့ user က tom ဆိုပါစို႔ maximum ကာလ ရက္ေပါင္း ၃၀ ေပးမယ္ဆိုပါစို႔။ chage –M
30 tom ေပါ့။
[root@linux~]# chage –M 30 username
ေယဘုယ်အားျဖင့္၊ Maximum number of days between password change မွာ တန္ဖိုး ထည့္သြင္းေပးလိုက္ရင္
password expire ျဖစ္မယ့္ date က အလိုလို သတ္မတ
ွ ္ၿပီးသား ျဖစ္သြားပါတယ္။ အလားတူ၊ password ရဲ့ inactive
ျဖစ္မယ့္ date သည္လည္း အလိုလို သတ္မွတ္ၿပီးသားျဖစ္သြားပါတယ္။
သိထားသင့္တာ ၁ ခု ကေတာ့၊ Maximum number of days between password change မွာ default အေနနဲ႔
အျမင့္ဆံုး သတ္မတ
ွ ္ထားတဲ့ တန္ဖိုးက 99999 ပါ။ အကယ္၍ maximum number of days ကို 99999 လို႔
သတ္မွတ္ေပးလိုက္ရင္၊ password expires နဲ႔ password inactive ရက္စြဲေတြ ေနရာမွာ never လိ႔ု
ေျပာင္းသြားပါလိမ့္မယ္။ expire မျဖစ္ေတာ့တဲ့ သေဘာေပါ့။
ဒီေနရာမွာ maximum ရက္ေပါင္း သတ္မွတ္လိုက္တဲ့ အခါ၊ ခုကေန ဘယ္ေန႔ထိ အႀကံဳး၀င္မလဲဆိုတဲ့ ရက္စြဲကို date
ဆိုတဲ့ command သံုးၿပီး တြက္ၾကည့္ႏိုင္ပါတယ္။ ဥပမာ၊ ခုကေန ရက္ေပါင္း ၃၀ သတ္မွတ္လိုက္တယ္ ဆိုပါစို႔။ ေန႔ရက္
တြက္ဖို႔၊ ခုကေန ေနာက္လာမယ့္ ရက္ ၃၀ ဟာ၊ ဘယ္ date ျဖစ္မလဲ သိဖို႔ date –d ကို သံုးရံုပါပဲ။ ေအာက္ပါအတိုင္းေပါ့။
[root@linux~]# date –d “+30 days”
ေနာက္တစ္ခ်က္ သိထားသင့္တာက၊ Maximum number of days between password change မွာ default အေနနဲ႔
အျမင့္ဆံုး သတ္မ်တ္ထားတဲ့ တန္ဖိုးက 99999 ပါ။ အကယ္၍ maximum number of days ကို 99999 လို႔
သတ္မွတ္ေပးလိုက္ရင္၊ password expires နဲ႔ password inactive ရက္စြဲေတြ ေနရာမွာ never လို႔ ေျပာင္းသြားပါ
လိမ့္မယ္။ expire မျဖစ္ေတာ့တဲ့ သေဘာေပါ့။
[root@linux~]# chage –M 99999 username
၇။ password ေျပာင္းလဲဖို႔ warning message ေပးမယ့္ ရက္ေပါင္းကို သတ္မွတ္ဖို႔ chage –W ကို သံုးပါတယ္။
ရက္ေပါင္း ရဲ့ ေနာက္မွာ username ထည့္ေပးဖို႔ မေမ့ပါနဲ႔။ ဥပမာ၊ ၅ ရက္ သတ္မွတ္မယ္ ဆိုပါစို႔။ chage –W 5
username ေပါ့။
[root@linux~]# chage –W 5 username
အားလံုးပဲ၊ အဆင္ေျပၾကပါေစ။
rpm (redhat package manager)
ဒီတစ္ခါေတာ့ linux ေပၚမွာ application နဲ႔ သက္ဆိုင္တာေတြကို စီမံတဲ့အခါ အသံုးျပဳတဲ့ rpm command အေၾကာင္း
ေလ့လာၾကည့္ၾကတာေပါ့။
ကဲ ! စလိုက္ရေအာင္။
application တစ္ခုကို install လုပ္ခ်င္တဲ့အခါ rpm -ivh ကို သံုးပါတယ္။ cimmand syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
rpm -e aoplicationname
application တစ္ခုကို update လုပ္ခ်င္တဲ့အခါ rpm -Uvh ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
application ရဲ့ version ကို ၾကည့္ခ်င္တဲ့အခါ rpm -q ကို သံုးပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
rpm -q applicationname
application တစ္ခုရဲ့ information ေတြကို သိခ်င္တဲ့အခါ rpm -qi ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
application နဲ႔ သက္ဆိုင္တဲ့ file ေတြ ရွိရာ လမ္းေၾကာင္းေတြကို သိခ်င္တဲ့အခါ rpm -ql ကို သံုးပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
application နဲ႔ သက္ဆိုင္တဲ့ package ေတြ အားလံုးကို သိခ်င္တဲ့အခါ rpm -qa ကို grep နဲ႔ တြဲသံုးပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
file တစ္ခုသည္ ဘယ္ application နဲ႔ သက္ဆိုင္သလဲ၊ သိခ်င္တဲ့အခါ rpm –qf နဲ႔ ေခၚၾကည့္ ႏိုင္ပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
application ရဲ့ configuration file ကို သီးသန္႔ ၾကည့္ခ်င္ရင္ rpm –qc သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
application ရဲ့ documentation ေတြကို ၾကည့္ခ်င္ရင္ rpm –qd ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
package တစ္ခုန႔တ
ဲ စ္ခုၾကား ေျပာင္းလဲမွဳကို ၾကည့္ခ်င္ရင္ -q --changelog ကို rpm နဲ႔ တြဲသံုးရပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
package install လုပ္သြားမယ့္ script ကို ၾကည့္ခ်င္ရင္ -q --script ကို rpm နဲ႔ တြဲသံုးရပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
တိုတိုရွင္းရွင္းပါပဲေနာ္။
အားလံုးပဲ အဆင္ေျပပါေစ။
yum (yellow dog update & modify)
linux မွာ application package ေတြန႔ဲ သက္ဆိုင္တာေတြကို စီမံတဲ့အခါ rpm, apt-get, yum စတဲ့ command ေတြကို
သံုးရပါတယ္။
ဒီေနရာမွာေတာ့ yum နဲ႔ သက္ဆိုင္တဲ့ command ေတြကို တင္ဆက္သြားမွာပါ။ yum ရဲ့ အရွည္ေကာက္က yellow dog
update and modify ပါ။
ကဲ ! စလိုက္ရေအာင္။
စက္ထဲမွာ ရွိတဲ့ application ကို install လုပ္ခ်င္တဲ့အခါ yum -y localinstall ကို အသံုးျပဳပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
online ေပၚမွာ ရွိတဲ့ application ကို install လုပ္ခ်င္တဲ့အခါ yum -y install ကို အသံုးျပဳပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
application တစ္ခုကို ဖယ္ရွားခ်င္တဲ့အခါ yum -y remove ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
application တစ္ခုကို update လုပ္ခ်င္တဲ့အခါ yum update ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
system ကို update လုပ္ခ်င္ရင္ yum update ကို အသံုးျပဳပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
yum update
update ရွိမရွိ စစ္ေဆးခ်င္ရင္ yum check-update ကို သံုးပါတယ္။ command syntax ကေတာ့ ေအာကိပါအတိုင္းပါ။
yum check-update
online database ထဲက application ေတြရဲ့ စာရင္းကို ၾကည့္ခ်င္တဲ့အခါ yum list ကို အသံုးျပဳပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
yum list
local မွာ သြင္းထားၿပီးသား application ေတြရဲ့ စာရင္းကို ၾကည့္ခ်င္တဲ့အခါ yum list installed ကို သံုးပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
application တစ္ခုန႔ဲ သက္ဆိုင္တဲ့ package ေတြကို ၾကည့္ခ်င္တဲ့အခါ yum list ကို သံုးပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
group လိုက္ သြင္းရတဲ့ application ေတြရဲ့ စာရင္းကို ၾကည့္ခ်င္တဲ့အခါ yum grouplist ကို သံုးပါတယ္။ command
syntax က ေအာပ္ပါအတိုင္းပါ။
yum grouplist
group လိုက္သြင္းရတဲ့ application တစ္ခုကို install လုပ္ခ်င္တဲ့အခါ yum groupinstall ကို သံုးပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
group လိုက္သြင္းထားတဲ့ application တစ္ခုကို ဖယ္ရွားခ်င္တဲ့အခါ yum groupremove ကို သံုးပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
group လိုက္ application တစ္ခုကို update လုပ္ခ်င္တဲ့အခါ yum groupupdate ကို သံုးပါတယ္။ command syntax
ကေတာ့ ေအာပ္ပါအတိုင္းပါ။
repositroy ရဲ့ စာရင္းကို ၾကည့္ခ်င္တဲ့အခါ yum repolist ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
yum repolist
enabe ေပးထားတဲ့ repo ေရာ disable ေပးထားတဲ့ repo ေရာ ၾကည့္ခ်င္တဲ့အခါ yum repolist all ကို သံုးပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
disable ေပးထားတဲ့ repo ထဲက application တစ္ခုကို install လုပ္ခ်င္တဲ့အခါ yum --enablerepo ကို သံုးပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
application တစ္ခုကို ရွာေဖြလိုတဲ့အခါ yum search ကို သံုးပါတယ္။ command syntax ကေတာ့ ေအာကိပါအတိုင္းပါ။
application တစ္ခုရဲ့ information ကို ၾကည့္ခ်င္တဲ့အခါ yum info ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
group လိုက္ သြင္းရတဲ့ application group တစ္ခုရဲ့ information ကို ၾကည့္ခ်င္တဲ့အခါ yum groupinfo ကို သံုးပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
yum နဲ႔ သက္ဆိုင္တဲ့ history ကို ၾကည့္ခ်င္တဲ့အခါ yum history ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
yum history
file တစ္ခုဟာ ဘယ္ application နဲ႔ သက္ဆိုင္သလဲ ၾကည့္ခ်င္ရင္ yum provides ကို သံုးပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
history ကို ရွင္းလင္းခ်င္တဲ့အခါ yum clean ကို သံုးပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
yum shell
အဆင္ေျပၾကပါေစ။
creating repo
linux မွာ yum, rpm စတဲ့ command ေတြကို သံုးၿပီး application ေတြ install, update လုပ္ႏိုင္ဖို႔၊ repo link ေတြ ရွိမွ
အဆင္ေျပပါတယ္။
အဲဒီ repo link ေတြကို /etc/yum.repos.d/ ေအာင္မွာ .repo နဲ႔ ဆံုးတဲ့ file ေတြ အျဖစ္ ေတြ႔ရွိႏိုင္ပါတယ္။
လိုအပ္ခ်က္အရ repo link ေတြ ထပ္မံထည့္သြင္းလိုတဲ့အခါ /etc/yum.repos.d/ ေအာက္မွာ vim command line text
editor နဲ႔ သြားေဆာက္ေပးရပါတယ္။ file အမည္ကို ႏွစ္သက္သလို ေပးႏိုင္ၿပီး extension က .repo နဲ႔ ဆံုးဖို႔ လိုပါတယ္။
[repo id]
name=my repo
baseurl="http://dl.fedoraproject.org/pub/epel/7/x86_x64/"
enabled=1
gpgcheck=0
[…] ထဲက အရာကို repo id လို႔ ေခၚပါတယ္။ ႏွစ္သက္သလို ေပးႏိုင္ပါတယ္။ ေမ့မသြားဖို႔ပဲ လိုတာပါ။
baseurl ကေတာ့ အေရးအႀကီးဆံုးပါ။ သြားေရာက္ ခ်ိတ္ဆက္မယ့္ link ကို တိတိက်က် ထည့္သြင္းေပးဖို႔ လိုပါတယ္။
enabled ဆိုတာကေတာ့ repo ကို enable ေပးမလား disable ေပးမလား သတ္မွတ္တဲ့ အပိုင္းပါ။ 1 ဆိုရင္ enable
ျဖစ္ၿပီး 0 ဆိုရင္ disable လို႔ သတ္မွတ္ပါတယ္။
gpgcheck ဆိုတာကေတာ့ gpg key ထည့္မထည့္ သတ္မွတ္တဲ့ အပိုင္းပါ။ 1 ဆိုရင္ gpgkey ထည့္မယ္ လို႔ သတ္မွတ္ၿပီး
0 ဆိုရင္ မထည့္ဘူးလို႔ သတ္မွတ္ပါတယ္။
ဒါေတြကေတာ့ repo file တစ္ခုကို manual တည္ေဆာက္တဲ့ အပိုင္းပါ။
command line ကေန တည္ေဆာက္ခ်င္ရင္ yum-config-manager ဆိုတဲ့ command ကို သံုးရပါတယ္။ ဥပမာ၊ repo
file တစ္ခု ေဆာက္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။
repo id ေနရာမွာ repo file ထဲက […] ထဲမွာ ရွိတဲ့ အရာကို ေရးေပးရမွာပါ။ file name ကို ေရးေပးရမွာ မဟုတ္ပါဘူး။
repo တစ္ခုကို disable ေပးမယ္ ဆိုပါစို႔။ disable ေပးတယ္ဆိုကတည္းက yum နဲ႔ application ေတြ install လုပ္တဲ့အခါ
ဒီ repo ကို မသံုးဘူးဆိုတဲ့ သေဘာပါပဲ။ command syntax က ေအာက္ပါအတိုင္းပါ။
repo list ေတြ သူတို႔ရဲ့ repo_id ေတြကို yum command နဲ႔ ေခၚၾကည့္ႏိုင္ပါတယ္။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
all မထည့္ပဲ yum repolist နဲ႔ ေခၚၾကည့္ရင္ေတာ့ enable ေပးထာတဲ့ list ေတြကိုပဲ ေတြ႔ရပါလိမ့္မယ္။
linux ေပၚမွာ လိုအပ္ခ်က္အရ application ေတြကို install, update လုပ္ႏိုင္ဖို႔ repo file ေတြ တည္ေဆာက္တဲ့အပိုင္း၊
enable or disable ေပးတဲ့အပိုင္း၊ ျပန္ၾကည့္တဲ့အပိုင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
rpm Vs yum
linux မွာ application နဲ႔ ဆိုင္တဲ့ အပိုင္းေတြကို စီမံရာမွာ rpm နဲ႔ yum စတဲ့ command ေတြကို အသံုးျပဳတဲ့အေၾကာင္း
တင္ဆက္ၿပီးသြားပါၿပီ။
ဥပမာ A >> စက္မွာ zimbra mail server ကို rpm command အသံုးျပဳၿပီး install လုပ္မယ္ ဆိုပါစို႔။
ဟုတ္ၿပီ perl package သြင္းၿပီးသြားၿပီဆိုပါစို႔။ တစ္ခါ zimbra ကို အစကေန rpm နဲ႔ ျပန္သြင္း။
sysstat ကို အရင္ထပ္သြင္း၊ ၿပီးမွ zimbra ကို အစကေန rpm နဲ႔ ျပန္သြင္းရျပန္ေရာ။
$ရမ္း အာရံုေနာက္ပါတယ္ေနာ္။
ဒီေနရာမွာ yum ဟာ လိုအပ္ေနတဲ့ perl နဲ႔ sysstat package ေတြကို ဘာ error မွ မျပပဲ၊ အလိုေလ်ာက္ သြင္းယူၿပီး
zimbra ကို သြင္းေပးသြားပါလိမ့္မယ္။
ဒါေပမယ့္ သူ႔ေနရာနဲ႔သူေပါ့ေနာ္။
ေျပာရရင္၊ linux system အတြက္ application package ေတြန႔ဲ သက္ဆိုင္တာေတြကို စီမံရာမွာ apt-get ဟာလည္း
powerful ျဖစ္တဲ့ tool တစ္ခုပါ။ apt ရဲ့ အရွည္ေကာက္က advance packaging tool ပါ။ apt-get ကို ubuntu, kali,
suse စတဲ့ linux distro ေတြမွာ အသံုးျပဳထားတာကို ေတြ႔ရမွာပါ။
application package name ေနရာမွာ netcat, vsftpd, goaccess, nethogs စတာေတြန႔ဲ အစားထိုး
ဥပမာေပးသြားပါရေစ။
ကဲ ! စလိုက္ရေအာင္ :D
၁။ /etc/apt/sources.list ထဲက index ေတြန႔ဲ ခ်ိတ္ဆက္ၿပီး package ေတြကို new version ဆီ update လုပ္မယ္
ဆိုပါစို႔။ apt-get update ကို အသံုးျပဳရပါတယ္။
apt-get update
၂။ system မွာ လက္ရွိ သြင္းထားတဲ့ package အားလံုးကို အဆင့္ျမွင့္မယ္ ဆိုပါစို႔။ apt-get upgrade ကို
အသံုးျပဳရပါတယ္။
apt-get upgrade
၃။ upgrade လုပ္ရာမွာ dependencies ေတြန႔ဲ ပတ္သက္လို႔ အာရံုစား မခံခ်င္တဲ့အခါ apt-get dist-upgrade ကို
အသံုးျပဳရပါတယ္။
apt-get dist-upgrade
၄။ application package တစ္ခု၊ ဥပမာ၊ netcat ကို install လုပ္မယ္ ဆိုပါစို႔။ apt-get install ကို အသံုးျပဳရပါတယ္။
၅။ appkication တစ္ခုထက္ ပိုၿပီး သြင္းခ်င္တယ္ ဆိုပါစို႔။ apt-get install ရဲ့ေနာက္မွာ application package name
ေတြကို space ျခားၿပီး ထည့္ေပးရပါတယ္။
၆။ မိမိ သြင္းလိုတဲ့ package name ကို အတိအက် မသိတဲ့အခါ wild card * ကို ထည့္သြင္း အသံုးျပဳရပါတယ္။
၇။ installed လုပ္ၿပီးသား package ေတြကို upgrade မလုပ္ေစခ်င္တဲ့အခါ --no-upgrade ဆိုတဲ့ option နဲ႔ တြဲဖက္
အသံုးျပဳႏိုင္ပါတယ္။
၈။ ရွိၿပီးသား package ကိုပဲ upgrade လုပ္မယ္ အသစ္ထပ္သြင္းတာမ်ိဳး မလိုလားဘူး ဆိုပါစို႔။ --only-upgrade ကို
အသံုးျပဳရပါတယ္။
၉။ package နဲ႔ စပ္လ်ဥ္းၿပီး သတ္မွတ္ version ကို တိတိက်က် သြင္းယူေစခ်င္တယ္ ဆိုပါစို႔။ package name ေနာက္မွာ
= ခံၿပီး version ကို ထည့္ေပးရပါတယ္။
၁၀။ application ကို configuration files ေတြ မပါပဲ ဖယ္ရွားခ်င္တယ္ ဆိုပါစို႔။ apt-get remove ကို အသံုးျပဳရပါတယ္။
၁၂။ remove နဲ႔ purge ကို တြဲသံုးၿပီးေတာ့လည္း application တစ္ခုကို ဖယ္ရွားႏို္င္ပါေသးတယ္။ ေအာက္ပါအတိုင္းေပါ့။
၁၃။ package ေတြ သြင္းယူတုန္းက local repository မွာ ေနရာယူထားတဲ့ .deb file ေတြကို ရွင္းလင္းမယ္ ဆိုပါစို႔။ apt-
get clean ကို အသံုးျပဳရပါတယ္။
apt-get clean
၁၄။ package ရဲ့ source code ကိုပဲ သီးသန္႔ download ဆြဲမယ္ ဆိုပါစို႔။ --download-only source ကို
အသံုးျပဳရပါတယ္။
၁၅။ source code ကို download လုပ္ၿပီး သတ္မွတ္ directory မွာ unpack လုပ္ေစခ်င္တယ္ ဆိုပါစို႔။ apt-get source
ကို အသံုးျပဳရပါတယ္။
၁၆။ source code ကို download ခ်မယ္။ unpack လုပ္မယ္။ တစ္ခါတည္း compile ပါ လုပ္မယ္။ ဒါဆိုရင္ --compile
source ကို အသံုးျပဳရပါတယ္။
၁၇။ package ကို download ပဲ ဆြဲမယ္။ install မလုပ္ခ်င္ဘူး ဆိုပါစို႔။ apt-get download ကို အသံုးျပဳရပါတယ္။
၁၉။ package ေတြရဲ့ cache ကို စစ္ေဆးၿပီး broken-dependencies ေတြကို repair လုပ္မယ္ ဆိုပါစို႔ apt-get check ကို
အသံုးျပဳရပါတယ္။
apt-get check
၂၀။ package တစ္ခု အတြက္ dependencies ေတြကို local repositories ထဲမွာ ရွာၿပီး တည္ေဆာက္မယ္ ဆိုပါစို႔။
build-dep ကို အသံုးျပဳရပါတယ္။
၂၁။ apt-get ရဲ့ cache ကို ရွင္းလင္းမယ္ ဆိုပါစို႔။ apt-get autoclean ကို အသံုးျပဳရပါတယ္။
apt-get autoclean
၂၂။ package တစ္ခုကို ဖယ္ရွားရာမွာ သူ႔ရဲ့ dependencies ေတြကိုပါ တစ္ခါတည္း ဖယ္ရွားပစ္မယ္ ဆိုပါစို႔။ apt-get
autoremove ကို အသံုးျပဳရပါတယ္။
ဆိုရရင္ေတာ့၊ apt-get ကို အသံုးျပဳၿပီး application package ေတြကို ကိုင္တြယ္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
package management with apt-cache
apt-get အေၾကာင္းကို ေျပာၿပီးတဲ့ေနာက္မွာ အခု ေျပာမွကေတာ့ apt-cache အေၾကာင္းပါ။
apt-cache ကို cache ထဲမွာ ရွိတဲ့ software package ေတြကို ၾကည့္ဖို႔၊ ရွာေဖြဖို႔၊ သက္ဆိုင္တဲ့ info ေတြကို ဖတ္ဖို႔
အသံုးျပဳပါတယ္။
ေလ့လာၾကည့္ရေအာင္။
၁။ ရရွိႏိုင္တဲ့ package ေတြရဲ့ စာရင္းကို ၾကည့္ခ်င္ရင္ apt-cache pkgnames ကို အသံုးျပဳရပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
apt-cache pkgnames
ဥပမာ၊ vsftpd ဆိုတဲ့ package ကို ရွာမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၃။ application တစ္ခု အမည္ပါတဲ့ package အားလံုးကို စာရင္းအေနနဲ႔ ၾကည့္ဖို႔ apt-cache pkgnames ကို
အသံုးျပဳပါတယ္။
ဥပမာ၊ vsftpd ဆိုတာနဲ႔ စတဲ့ package အားလံုးကို ၾကည့္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၄။ package နဲ႔ သက္ဆိုင္တဲ့ information ေတြကို ၾကည့္ဖို႔ apt-cache show ကို အသံုးျပဳပါတယ္။
ဥပမာ၊ netcat ဆိုတဲ့ application ရဲ့ info ကို ၾကည့္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ vsftpd ရဲ့ dependencies စာရင္းကို ၾကည့္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအညက္ပါအတိုင္းပါ။
၆။ cache ထဲမွာ ရွိတဲ့ package အားလံုးကို ၾကည့္ဖို႔ apt-cache stats ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
apt-cache stats
apt-cache ကို အသံုးျပဳၿပီး application package ေတြကို ရွာေဖြ ၾကည့္ရွဳတဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
controlling services (services မ်ားကို စီမံျခင္း)
linux ေပၚမွာ run ေနတဲ့ services ေတြကို ကိုင္တြယ္ဖို႔ systemctl ဆိုတဲ့ command ကို သံုးပါတယ္။ application
ေတြကို unit လို႔ ေခၚၿပီး၊ unit တစ္ခုမွာ
၁။ service
၂။ socket
၃။ path ဆိုၿပီး ၃ ပိုင္းရွိပါတယ္။
active ျဖစ္ေနတဲ့ units ေတြရဲ့ service ကို ၾကည့္ခ်င္တဲ့အခါ systemctl list-units --type=service ကို သံုးပါတယ္။
command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
inactive ျဖစ္ေနတဲ့ units ေတြရဲ့ service ကို ၾကည့္ခ်င္တဲ့အခါ systemctl list-units --type=service --all --
state=inactive ကို သံုးပါတယ္။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
active ျဖစ္ေနတဲ့ units ေတြရဲ့ service ေရာ inactive ျဖစ္ေနတဲ့ units ေတြရဲ့ service ကိုပါ ၾကည့္ခ်င္တဲ့အခါ systemctl
list-units --type=service --all ကို သံုးပါတယ္။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
units ေတြရဲ့ services ေတြ enable ျဖစ္ေနလား disabled ျဖစ္ေနလား သိဖို႔ systemctl list-unit-files --type=service
ကို သံုးပါတယ္။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
failed ျဖစ္ေနတဲ့ units ေတြကို ၾကည့္ဖို႔ systemctl --failed --type=service ကို သံုးပါတယ္။ command ကေတာ့
ေအာက္ပါအတိုင္းပါ။
unit တစ္ခုရဲ့ status ကို ၾကည့္ဖို႔ systemctl status UNIT.service ကို သံုးတယ္။ UNIT ေနရာမွာ application ကို
ထည့္ေပးရမွာပါ။ ဥပမာ၊ sshd ဆိုတဲ့ service ကို ၾကည့္မယ္ ဆိုပါစို႔။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
unit တစ္ခု active ျဖစ္ေနလား သိဖို႔ systemctl is-active UNIT ကို သံုးပါတယ္။ command ကေတာ့
ေအာက္ပါအတိုင္းပါ။
unit တစ္ခု boot time မွာ run ဖို႔ enable ေပးခံထားရလား သိဖို႔ systemctl is-enabled UNIT ဆိုတဲ့ format ကို
သံုးပါတယ္။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။
Systemctl နဲ႔ တြဲဖက္ အသံုးျပဳႏိုင္တဲ့ command statement ၁၀ ခုကို အတိုခ်ဳပ္ ေဖၚျပေပးလိုက္ပါတယ္။ UNIT ေနရာမွာ
စီမံလိုတဲ့ application ကို ထည့္ေပးရမွာပါ။ ရိုးရိုးရွင္းရွင္းပါပဲေနာ္။
linux old version ေတြမွာေတာ့၊ systemctl အစား service ဆိုတဲ့ command ကို သံုးပါတယ္။
သေဘာတရားခ်င္းကေတာ့ အတူတူပါပဲ။ service ကို အသံုးျပဳမယ္ဆို သူ႔ရဲ့ formant က service application
command statement ပါ။ ဥပမာ၊ old version မွာ sshd ကို restart လုပ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။
service sshd restart
ကဲ ! service, socket နဲ႔ path ေတြကို systemctl ကို အသံုးျပဳၿပီး ကိုင္တြယ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုး အဆင္ေျပပါေစေနာ္။
ssh ျဖင့္ password ကို အေျချပဳ၍ remote login ၀င္ျခင္း (ssh အပိုင္း ၁)
ဒီတစ္ခါ linux machine ေတြကို secure shell လို႔ ေခၚတဲ့ ssh နဲ႔ remote login ဝင္နည္းေလးကို ေလ့လာရေအာင္ဗ်ာ။
တကယ့္ပါးပါးေလး ေလ့လာၾကည့္ၾကတာေပါ့။
ဥပမာ - server ဆိုတဲ့စက္ကို client ဆိုတဲ့ စက္ကေန၊ remote login ဝင္မယ္ ဆိုပါစို႔။ server ေပၚမွာ ႀကိဳတင္
တည္ေဆာက္ထားတဲ့ account ရွိဖို႔လိုပါတယ္။ ဒါမွ အာ့ဒီ username နဲ႔ password ကို သံုးၿပီး remote login
ဝင္လို႔ရမွာပါ။
server ရဲ့ hostname ကိုလည္း သိဖို႔ လိုပါတယ္။ server ရဲ့ hostname ကို သိဖို႔ server ေပၚမွာ hostname ဆိုတဲ့
command ကို run ပီး ၾကည့္ႏိုင္ပါတယ္။ example.com လို႔ ဆိုၾကပါစို႔။
server ေပၚမွာ mgmg ဆိုတဲ့ account ေလး ရွိတယ္ဆိုပါစို႔။ သူ႔ကို remote login ဝင္ဖ႔က
ို အရမ္းကို လြယ္ပါတယ္။ ssh
ဆိုတဲ့ command ေလးနဲ႔ တြဲပီး ေအာက္ပါအတိုင္း ရိုက္ေပးရံုပါပဲ။
ဒါဆိုရင္ server ရဲ့ command line ထဲကို remote login နဲ႔ ဝင္ေရာက္သြားၿပီေပါ့။
တစ္ခ်က္ သိထားဖို႔က ssh ကို အသံုးျပဳတဲ့အခါ server ကေန client ဆီကို encrypted လုပ္ထားတဲ့ publick key
တစ္ခုကို ပို႔ေပးပါတယ္။ ~/.ssh/known_host ဆိုတဲ့ file ေလးေပ့ါ။ server ဘက္ျခမ္းမွာေတာ့ /etc/ssh/*key*
ေအာက္မွာ သိမ္းထားပါတယ္။
server ကို ssh နဲ႔ login ဝင္တိုင္း အဲဒီ key ႏွစ္ခုကို တိုက္ဆိုင္ စစ္ေဆးပါတယ္။ server ဘက္က ေျပာင္းလိုက္လို႔ျဖစ္ေစ
အေၾကာင္းတစ္ခုေၾကာင့္ျဖစ္ေစ key pair မတူေတာ့ရင္ ဝင္လို႔ မရေတာ့ပါဘူး။
အဲဒီအခါ client ဘက္မွာ ရွိတဲ့ ~/.ssh/known_host ဆိုတဲ့ file ကို ဖ်က္ပစ္ပီး ssh နဲ႔ ထပ္မံ login ဝင္ေပးဖို႔ လိုပါတယ္။
ဒါကေတာ့ သိထားဖို႔ပါ။
linux machine ကို ssh ကေနတစ္ဆင့္ password နဲ႔ remote login ဝင္တာကိုေတာ့ အပိုင္း ၁ မွာ အာလူးဖုတ္ၿပီး
သြားပါၿပီ။ ဒီတစ္ခါ password သံုးစရာမလိုပဲ private-public key အသံုးျပဳၿပီး ဝင္နည္းကို ေလ့လာၾကည့္ရေအာင္။
ဒီနည္းက ပိုၿပီး လံုၿခံဳမွဳ ရွိပါတယ္။
ဥပမာ >> client ဆိုတဲ့ စက္ကေန server ေပၚမွာ ရွိတဲ့ client account ဆီ remote login ဝင္မယ္ ဆိုၾကပါစို႔။
လုပ္ရမယ့္ အဆင့္ေတြက ရိုးရွင္းပါတယ္။ client စက္မွာ private key နဲ႔ public key ႏွစ္ခုကို ဖန္တီးမယ္။ ၿပီးရင္ server
စက္ဆီ public key ကို လွမ္းပို႔မယ္။ တစ္ခါပို႔ၿပီးသြားရင္ ေနာက္တစ္ခါ remote login ဝင္တ့ဲအခါ ဘာမွ password
ထည့္စရာ မလို ေတာ့ဘူးေပါ့။ ဒီေလာက္ေလးပါပဲ။
ကဲ ! client စက္မွာ private နဲ႔ public key ႏွစ္ခုကို ဖန္တီးဖို႔ ေအာက္က command ေလး run လိုက္ၾကစို႔။
[root@linux~]# ssh-keygen
ဒီလို run ၿပီးတဲ့အခါ ~/.ssh/ ေအာက္မွာ private key ကို id_rsa နဲ႔ public key ကို id_rsa.pub ဆိုၿပီး ေတြ႔ရပါမယ္။
key ေတြ ဖန္တီးၿပီးသြားၿပီဆိုေတာ့ public key ကို server ဆီ command ေလးနဲ႔ ေအာက္ကအတိုင္း ပို႔ေပးလိုက္ရံုေပါ့။
ဒီေလာက္ပါပဲ။
ssh ျဖင့္ remote login ၀င္ျခင္းမွ root account အား တားဆီးျခင္း (ssh အပိုင္း ၃)
ဒီတစ္ခါေတာ့ linux server ေပၚက root account ကို ssh သံုးၿပီး remote login ဝင္လို႔ မရေအာင္ ပိတ္ထားၾကစို႔။
ဘာ့ေၾကာင့္လဲ ဆိုေတာ့ linux machine တစ္ခု မွာ root account ဟာ အေရးအပါဆံုးမို႔ သူ႔ကို ssh နဲ႔ login ဝင္ခြင့္
ေပးထားတာဟာ အတန္အသင့္ အႏၱရာယ္ႀကီးလွပါတယ္။ ဒါ့ေၾကာင့္ပါ။
vim /etc/ssh/sshd_config
အာ့လို ျပင္ေပးလိုက္ပါ။
ကဲ ! client စက္ဆီသြား၊ root account ကို ssh နဲ႔ remote login ဝင္ၾကည့္ပါဦး။
ဝင္လို႔ ရပါေသးရဲ့လား?
root account ကို တားဆီးသလိုပါပဲ။ server စက္ထဲက /etc/ssh/sshd_config ဆိုတဲ့ file ထဲကို ဝင္ျပင္ေပးရမွာပါ။
command ကေတာ့ ေအာက္ပါအတိုင္းေပါ့။
vim /etc/ssh/sshd_config
အာ့လို ျပင္ေပးလိုက္ပါ။
ကဲ ! client စက္ဆီသြား၊ server ေပၚက client ဆိုတဲ့ normal account ဆီကို ssh နဲ႔ remote login ဝင္ၾကည့္ပါဦး။
ဝင္လို႔ ရပါေသးရဲ့လား?
ဒီေနရာမွာ တစ္ခု သိထားရမွာက၊ ဒီလို မတားဆီးခင္ user account ေတြဟာ key-based authentication
ႀကိဳလုပ္ထားမယ္ဆိုရင္၊ remote login ၀င္လို႔ ရေနမယ္ ဆိုတာပါပဲ။
မိမိ စက္သို႔ sssh ျဖင့္ မည္သူ login ၀င္ထားသည္ကို ၾကည့္ရွဳျခင္း (ssh အပိုင္း ၅)
လြယ္လြယ္ရွင္းရွင္းပါပဲ။ ကိုယ့္စက္ထဲကို ssh အသံုးျပဳၿပီး ဘယ္ user ေတြ ၀င္ေရာက္ေနလဲ သိလုိရင္ w –f ဆိုတဲ့
command နဲ႔ ၾကည့္ႏိုင္ပါတယ္။
အားလံုးပဲ အဆင္ေျပပါေစ။
rsyslog
log ေတြဟာ problem ေတြကို ေျဖရွင္းရာမွာ အသံုးဝင္ပါတယ္။ log file ေတြကို ဖတ္ရာမွာ root account နဲ႔
ဝင္ဖတ္ရပါတယ္။
log ပိုင္းမွာ rsyslog နဲ႔ systemd-journal လို႔ log အမ်ိဳးအစား ၂ ခု ရွိၿပီး၊ ဒီေနရာမွ rsyslog အေၾကာင္းကို
တင္ဆက္သြားမွာပါ။
ဒီေနရာမွာ log rotation အေၾကာင္း နည္းနည္းေျပာပါရေစ။ log rotation ဆိုတာက log file ေတြကို
ဘယ္ေန႔ရက္အခ်ိန္ကေန ဘယ္အထိထားရွိမယ္၊ ဘယ္အခ်ိန္ေရာက္ရင္ေတာ့ log အေဟာင္းေတြကို ဖ်က္ပစ္မယ္၊ အဲဒီလို
သတ္မွတထ
္ ားတာကို ေျပာတာပါ။ logrotate ဆိုတဲ့ utility ကို အသံုးျပဳၿပီး စီမံရပါတယ္။
rsyslog ဟာ log rotation လုပ္ခ်ိန္က လြဲၿပီး system နဲ႔ ဆိုင္တဲ့ log ေတြကို /var/log ဆိုတဲ့ directory ေအာက္မွာ
မွတ္သားထားပါတယ္။
အဲဒီထဲကို ဝင္ၿပီး console, mail, message, secure, cron, .. စသျဖင့္ log ေတြကို ၾကည့္ရွဳႏိုင္ပါတယ္။
ဥပမာ၊ message နဲ႔ ဆိုင္တဲ့ log ကို ၾကည့္မဟ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။
less /var/log/messages
log message ေတြရဲ့ လမ္းေၾကာင္း နဲ႔ rules ေတြကိုေတာ့ /etc/rsyslog.conf မွာ ၾကည့္ရွဳႏိုင္ပါတယ္။
တို႔ ျဖစ္ပါတယ္။
log file ေတြကို tail -f အသံုးျပဳၿပီး live ၾကည့္ႏိုင္ပါတယ္။ ဥပမာ၊ security နဲ႔ ဆိုင္တဲ့ log ကို live ၾကည့္မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။
tail -f /var/log/secure
logger ဆိုတဲ့ command ကို အသံုးျပဳၿပီး log message ေတြကို log file ဆီ ေပးပို႔ႏိုင္ပါေသးတယ္။ ဥပမာ၊ user
နဲ႔ဆိုင္တဲ့ error message ကို ေပးပို႔မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ error code ေတြန႔ဲ သူ႔ရဲ့ လမ္းေၾကာင္းကို သတ္မွတ္ေပးမယ္ ဆိုပါစို႔။ error နဲ႔ ဆိုင္တဲ့ message ေတြကို
/var/log/new-err ဆိုတဲ့ file ထဲမွာ သိမ္းေစခ်င္တယ္ ဆိုပါစို႔။
၃။ /var/log/ ေအာပ္မွာ touch new-err ဆိုတဲ့ command သံုးၿပီး file ေလး ေဆာက္ေပးလိုက္ပါ။
ဒါဆို error နဲ႔ သက္ဆိုင္တဲ့ message ေတြဟာ ;var/log/new-err ဆိုတဲ့ file ထဲ ေရာက္သြားပါလိမ့္မယ္။
logger -p user.err "testing error log" လို႔ log message ေပးပိ႔ၿု ပီး စမ္းၾကည့္ႏိုငိပါတယ္။
အားလံုး အဆင္ေျပၾကပါေစ။
systemd-journal
linux system တစ္ခုမွာ log file ေတြန႔ဲ ပတ္သက္လ႔ို rsyslog နဲ႔ systemd-journal ဆိုၿပီး ၂ မ်ိဳး ရွိပါတယ္။ rsyslog
အေၾကာင္း ေရးတင္ၿပီးၿပီမို႔ အခု ေျပာမွာကေတာ့ systemd-journal အေၾကာင္းပါ။
systemd-journal ဟာ log ေတြကို /run/log ထဲမွာ မွတ္သားပါတယ္။ system boot လုပ္ခ်ိန္ကေန စၿပီး log ေတြကို
မွတ္သားထားၿပီး system reboot လုပ္တာနဲ႔ log ေတြကို ဖ်က္ပစ္ပါတယ္။ ဒါဟာ systemd-journal ရဲ့
သေဘာသဘာဝပါပဲ။
systemd-journal log ေတြကို ၾကည့္ဖို႔ journalctl ဆိုတဲ့ command ကို အသံုးျပဳပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
journalctl
journalctl -n 5
log ေတြကို priority အလိုက္ ခြဲျခားၿပီး ၾကည့္ဖို႔ -p ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
journalctl -p err
ဒီေနရာမွာ သိထားဖို႔က၊ 0 ကေန 7 ထိ log ရဲ့ priority code ေတြ ရွိပါတယ္။ အဲဒါေတြကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
log ေတြကို live အေနနဲ႔ ဖတ္ခ်င္ရင္ -f ဆိုတဲ့ option ကို တြဲသံုးရပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
journalctl -faz
အခ်ိန္ကန္႔သတ္ခ်က္တစ္ခုအတြင္းက log ေတြကို ဖတ္ခ်င္ရင္ --since နဲ႔ --until ဆိုတဲ့ options ေတြကို သံုးစြဲရပါတယ္။
format ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ 2017-02-19 05:00:00 အခ်ိန္ကေန 2017-02-19 06:00:00 အခ်ိန္ၾကားက log ေတြကို သိခ်င္တယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။
log တစ္ေၾကာင္းခ်င္းကို အေသးစိတ္ verbose mode နဲ႔ ၾကည့္ခ်င္ရင္ -o ဆိုတဲ့ option ကို သံုးရပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
journalctl -o
log ေတြကို reboot လုပ္တိုင္း ဖ်က္မျပစ္ေစခ်င္ဘူး။ file တစ္ခုဆီ redirect လုပ္ထားမယ္ဆိုလည္း အဆင္ေျပပါတယ္။
၂။ chown :systemd-journal journal-log လို႔ ရိုက္ၿပီး journal-log ကို systend-journal ဆိုတဲ့ group က
ပိုင္ဆိုင္ေၾကာင္း သတ္မွတ္ေပးလိုက္ပါ။
ဒါဆို log ေတြကို reboot လုပ္တာနဲ႔ ဖ်က္မပစ္ပဲ /var/log/ ေအာက္က journal-log ဆိုတဲ့ directory ထဲမွာ
မွတ္သားေပးသြားပါလိမ့္မယ္။
အားလံုးပဲ အဆင္ေျပပါေစ။
scp (secure copy)
ဒီတစ္ခါ ေျပာမွာကေတာ့ copy ကူးတဲ့အေၾကာင္းပါပဲ။ ဒါေပမယ့္ သူက ရိုးရိုး copy မဟုတ္ပါဘူး။ secure copy ပါ။ scp
ေပါ့။
ဥပမာ A၊ tom ဆိုတဲ့ user သည္ network ေပၚက တစ္ျခားစက္တစ္လံုးရဲ့ jerry ဆိုတဲ့ user ဆီက /home/jerry/
ေအာက္မွာရွိတဲ့၊ file1 ကို လွမ္းကူးမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ B၊ tom ဆိုတဲ့ user သည္ သူ႔ရဲ့ /home/tom/ေအာက္က file1 ကို network ေပၚက စက္တစ္လံုးရဲ့ jerry ဆိုတဲ့
user ရဲ့ /home/jerry ဆီကို လွမ္းပို႔မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
အားလံုးပဲ အဆင္ေျပပါေစ။
rsync ျဖင့္ ကူးယူျခင္း
rsync ...။ သူက copy ကူးသလိုပါပဲ။ ဒါေပမယ့္ ရိုးရိုး copy နဲ႔ မတူတာက၊ သူက synchronize လုပ္ၿပီး ကူးတာပါ။
ဒါ့ေၾကာင့္ သူ႔ကို rsync လိ႔ေ
ု ခၚတာပါ။
ဥပမာ၊ file 10 ခုကို menory stick ထဲ ကူးထည့္တယ္။ ရုတ္တရက္ ကူးရင္းတန္းလန္း memory stick ျပဳတ္သြားတယ္
ဆိုပါစို႔။
ဒီေနရာမွာ rsync ဟာ file ေတြကို အစအဆံုး ျပန္ကူး၊ file ထပ္ေနရင္ replace လုပ္စရာ မလိုပဲ၊ လိုအပ္တဲ့ေနရာကေန
synchronize လုပ္ၿပီး ကူးသြားပါလိမ့္မယ္။ အခ်ိန္နည္းနည္း ပိုၾကာေပမယ့္ save ျဖစ္ပါတယ္။
rsync ကို အသံုးျပဳခ်င္တဲ့အခါ သမားရိုးက် cp ဆိုတဲ့ command အစား rsync ကို -av ဆိုတဲ့ option နဲ႔
အသံုးျပဳလိုက္ရံုပါပဲ။
ဥပမာ၊ snow.mp3 ဆိုတဲ့ file ကို /mnt/ ေအာက္က songdrive ဆီ rsync နဲ႔ ကူးမယ္ ဆိုပါစို႔။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ tom ဆိုတဲ့ user သည္ network ေပၚက တစ္ျခားစက္တစ္လံုးရဲ့ jerry ဆိုတဲ့ user ဆီက /home/jerry/
ေအာက္မွာရွိတဲ့၊ file1 ကို လွမ္းကူးမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ယခင္ သံုးေနက် cp အစား rsync -av ကို အသံုးျပဳသြားတဲ့ သေဘာပါပဲေနာ္။ rsync အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုး အဆင္ေျပၾကပါေစ
sftp (secure file transfer protocol)
ခုတစ္ခါ ေျပာမွာကေတာ့ file transfer protocol အေၾကာင္းပါ။ ရိုးရိုး ftp မဟုတ္တဲ့ secure ျဖစ္တဲ့ sftp ေပါ့။ copy
ကူးတာထက္ ပိုအဆင္ေျပပါတယ္။
upload လုပ္ခ်င္ရင္ put ဆိုတဲ့ command ကို သံုးစြဲရပါတယ္။ download လုပ္ခ်င္ရင္ get ဆိုတဲ့ command ကို
သံုးစြဲရပါတယ္။
ဥပမာ၊ jerry ရဲ့ စက္ထဲကို မိမိရဲ့ current directory ေအာက္က file1 ဆိုတဲ့ file ကို ပို႔မယ္ ဆိုပါစို႔။ jerry နဲ႔ ခ်ိတ္ဆက္မိဖို႔
အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။
sftp jerry@host.com
sftp>
အစျပန္ေကာက္ရရင္၊ jerry ဆီ file upload လုပ္မွာ ျဖစ္တဲ့အတြက္ put ဆိုတဲ့ command ကို သံုးရပါမယ္။
ဥပမာ၊ jerry ဆီက file2 ဆိုတာေလးကို download ျပန္ဆြဲမယ္ ဆိုပါစို႔။ download ဆြဲမွာ ျဖစ္လို႔ အသံုးျပဳရမယ့္
command က get ပါ။
sftp> get file2 ေပါ့။
တိုတိုရွင္းရွင္းပါပဲေနာ္။ sftp အသံုးျပဳၿပီး network ေပၚမွာ file ေတြ ေပးပိ႔ု (put) ရယူ (get) တဲ့ အေၾကာင္းကေတာ့
ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
network configuration
linux မွာ network setting ကို configure လုပ္တဲ့အေၾကာင္း ေလ့လာၾကရေအာင္။
network card မွာ သတ္မွတ္ေပးထားတဲ့ ip, mac address စတာေတြကို ifconfig ဆိုတဲ့ command နဲ႔
ေခၚၾကည့္ႏိုင္ပါတယ္။
၁။ တစ္ခုက nmcli ဆိုတဲ့ command ကို အသံုးျပဳၿပီး command line ကေန တစ္ဆင့္ခ်င္း သတ္မွတ္သြားတဲ့
နည္းလမ္းပါ။
၂။ ေနာက္တစ္ခက
ု network file ထဲကို vim ဆိုတဲ့ command line text editor နဲ႔ ဝင္ျပင္တဲ့ နည္းလမ္းပါ။
၁။ nmcli ကို အသံုးျပဳၿပီး configure လုပ္မယ္ဆိုရင္ terminal ထဲမွာ nmcli လို႔ ရိုက္ၿပီး tab key ကို ၂ ခ်က္ ဆက္တိုက္
ႏွိပ္ေပးလိုက္ပါ။ nmcli နဲ႔ ဆက္စပ္ သံုးစြဲရမယ့္ options ေတြကို ျပေပးပါလိမ့္မယ္။
က်လာတဲ့ options ေတြထဲကမွ connection ကို configure လုပ္မွာဆို connection ကို ေရြး tab key ၂ ခ်က္ ထပ္ႏွိပ္၊
connection နဲ႔ ဆက္ႏြယ္တဲ့ add modify show စသျဖင့္ options ေတြ ထပ္က်လာပါလိမ့္မယ္။
connection အသစ္ ေဆာက္မွာဆို add ကို ေရြးၿပီး tab key ၂ ခ်က္ ထပ္ႏွိပ္၊ setting ေတြ ျဖည့္။
ရွိၿပီးသား connection ကို ျပဳျပင္မွာဆို modify ကို ေရြးၿပီး tab key ၂ ခ်က္ ထပ္ႏွိပ္၊ setting ေတြ ျဖည့္။
ဒီလို တစ္ဆင့္ခ်င္း သြားရပါတယ္။ nmcli နဲ႔ ဆိုင္တဲ့ options ေတြကို အလြတ္က်က္ေနစရာ မလိုအပ္ပါဘူး။ ဒါက nmcli
ကို သံုးၿပီး network ကို configure လုပ္တဲ့ သေဘာတရားပါပဲ။
၂။ network file ထဲကို vi နဲ႔ ဝင္ျပင္တဲ့ နည္းကေတာ့ ရိုးရွင္းပါတယ္။ network file ေတြဟာ /etc/sysconfig/network-
scripts ဆိုတဲ့ directory ေအာက္မွာ တည္ရွိပါတယ္။
connection အသစ္ ၁ ခု ေဆာက္ခ်င္ရင္၊ ေပးခ်င္တဲ့ အမည္ေရွ့မွာ ifcfg- ခံၿပီး touch နဲ႔ တည္ေဆာက္ေပးရပါတယ္။
ifcfg နဲ႔ စတဲ့ file ေတြဟာ network file ေတြလ႔ို နားလည္ရပါမယ္။
ဥပမာ၊ xero ဆိုတဲ့ အမည္န႔ဲ connection အသစ္ ၁ ခု ေဆာက္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
touch ifcfg-xero
ရွိၿပီးသား connection ကို ျပင္ဆင္ခ်င္ရင္ေတာ့ network file (ဥပမာ ifcfg-xero) ကို vi နဲ႔ ဖြင့္ၿပီး ဝင္ေရာက္
ျပင္ဆင္ႏိုင္ပါတယ္။
ဥပမာ၊ ifcfg-eth0 ဆိုတဲ့ connection ကို ျပင္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
vi ifcfg-eth0
အဲဒီအခါ ifcfg-eth0 ထဲမွာ network setting ေတြ၊ DEVICE, TYPE, HWADDR, ONBOOT, BOOTPROTO, IPADDR,
NETMASK, GATEWAY, DNS1, DNS2 စတာေတြရဲ့ တန္ဖိုးေတြကို ထည့္သြင္းေပးရပါမယ္။
ဒါကေတာ့ nmcli မသံုးပဲ network file ေတြကို manually ဖန္တီး၊ vi နဲ႔ ဝင္ ျပဳျပင္တဲ့ သေဘာတရားပါပဲ။
network setting ရဲ့ IPADDR ေနရာမွာ ထည့္ထားတဲ့ IP မွန္မမွန္ သိဖို႔ ping ကို သံုးၿပီး စစ္ေဆးႏိုင္ပါတယ္။
network setting ရဲ့ DNS1 ေနရာမွာ ထည့္ထားတဲ့ dns ရဲ့ ip ဝင္မဝင္၊ /etc/resolv.conf ကို ဝင္ေရာက္
ၾကည့္ရွဳႏိုင္ပါတယ္။
network ရဲ့ ip ကို domain name နဲ႔ ping လို႔ရေအာင္၊ /etc/hosts ဆိုတဲ့ file မွာ ဝင္ေရာက္ ျပင္ဆင္ႏိုင္ပါတယ္။
ဥပမာ၊ ip က 192.168.1.254 ၊ ဒါကို www.xerocool.com လို႔ ping ရင္လည္း reply ျပန္ေစခ်င္တယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ၿပီးေတာ့ တစ္ခါ၊ linux machine ရဲ့ hostname ကို ေျပာင္းလဲမယ္ဆိုရင္ hostnamectl set-hostname ဆိုတဲ့ command
ကို အသံုးျပဳရပါတယ္။
ဥပမာ၊ hostname ကို xerocool လိ႔ု ေျပာင္းလဲမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
hostname ကို သိၿပီး သူ႔ရဲ့ ip ကို သိခ်င္ရင္ host ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ example.com ရဲ့ ip
ကို သိခ်င္တယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
host example.com
အားလံုးပဲ အဆင္ေျပပါေစ။
linux မွာ တပ္ဆင္ထားတဲ့ hard disk, cd drive စတဲ့ storage device ေတြကို /dev ေအာက္မွာ ၾကည့္ရွဳႏိုင္ပါတယ္။
ပထမဆံုး ေနရာမွာ ရွိတဲ့ hard drive ကို /dev/sda လိ႔ု သတ္မွတ္ၿပီး ဒုတိယေနရာမွာ ရွိတဲ့ hard drive ကို /dev/sdb လို႔
သတ္မွတ္ပါတယ္။
တစ္ဖန္၊ ပထမဆံုး hard drive (/dev/sda) ရဲ့ primary partition ကို sda1 ၊ ေနာက္ထပ္ partition ရွိေသးရင္ sda2 လို႔
သတ္မွတ္ၿပီး၊ ဒုတိယ hard drive (/dev/sdb) ရဲ့ primary partition ကို sdb1 ၊ ေနာက္ထပ္ partition ရွိေသးရင္ sdb2
လို႔ သတ္မွတ္ပါတယ္။
permission ရဲ့ ေရွ့မွာ file ဆိုရင္ - သေကၤတ၊ directory ဆိုရင္ d သေကၤတ၊ hard drive ဆိုရင္ block device ကို
ကိုယ္စားျပဳတဲ့ b သေကၤတ ပါေလ့ရွိပါတယ္။ ဒါကို ls -l /dev/sda လို႔ ေခၚၾကည့္ႏိုင္ပါတယ္။
file system နဲ႔ storage device ေတြရဲ့ size၊ တပ္ဆင္ထားတဲ့ mount point ေတြကို ၾကည့္ရွဳခ်င္ရင္ df ဆိုတဲ့ command
ကို -h ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။ ေအာက္ပါအတိုင္းေပါ့။
df -h
file သို႔မဟုတ္ directory တစ္ခုဟာ storage ပမာဏ ဘယ္ေလာက္ ေနရာယူထားသလဲ သိခ်င္ရင္ du ဆိုတဲ့ command
ကို -h ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။
ဥပမာ၊ /root ဆိုတဲ့ directory ဟာ ဘယ္ size ရွိသလဲ ဘယ္ေလာက္ေနရာ ယူထားသလဲ ၾကည့္မယ္ ဆိုပါစို႔။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
du -h /root
မိမိစက္မွာ storage device ဘယ္ႏွစ္ခု ရွိသလဲ၊ size ဘယ္ေလာက္လဲ၊ ဘယ္ေနရာမွာ mount လုပ္ ခ်ိတ္ဆက္ထားသလဲ
သိလိုရင္ lsblk ဆိုတဲ့ command နဲ႔ ေခၚၾကည့္ႏိုင္ပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
lsblk
partition တစ္ခုရဲ့ file system သတ္မွတ္ခ်က္ေတြကို ၾကည့္ခ်င္ရင္ file ဆိုတဲ့ command ကို -sL နဲ႔ တြဲသံုးရပါတယ္။
ဥပမာ၊ ပထမဆံုး hard drive (sda) ရဲ့ ပထမဆံုး partition (sda1) ရဲ့ file system ကို ၾကည့္မယ္ ဆိုပါစို႔။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
partition ေတြရဲ့ UUID (universal unique identifier) နဲ႔ file system သတ္မွတ္ခ်က္ေတြကို ၾကည့္ခ်င္ရင္ blkid ဆိုတဲ့
command ကို သံုးရပါတယ္။ terminal မွာ blkid လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။
storage device ေတြရဲ့ file system ကို စစ္ေဆးလိုတဲ့အခါ fsck ဆိုတဲ့ command ကို -N ဆိုတဲ့ option နဲ႔ တြဲၿပီး
အသံုးျပဳရပါတယ္။
ဥပမာ၊ ပထမဆံုး hard drive (/dev/sda) ရဲ့ ပထမဆံုး partition (/dev/sda1) ကို စစ္ေဆးမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
fsck -N /dev/sda1
cd drive ေတြ partition ေတြကို /mnt/ ေအာက္မွာ directory တစ္ခု သတ္မွတ္ၿပီး ခ်ိတ္ဆက္ေပးထားလို႔ ရပါတယ္။
ဒါကို mount လုပ္တယ္လို႔ ေခၚပါတယ္။
ဥပမာ၊ ပထမဆံုး hard drive (sda) ရဲ့ ပထမဆံုး partition (sda1) ကို /mnt/mydata ဆိုတဲ့ directory မွာ
ခ်ိတ္ဆက္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
mount /dev/sda1 /mnt/mydata
ဥပမာ၊ cd drive (/dev/cdrom) ကို /mnt/mycd ဆိုတဲ့ directory မွာ ခ်ိတ္ဆက္မယ္ ဆိုပါစို႔။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ /mnt/mycd မွာ ခ်ိတ္ဆက္ေပးထားတဲ့ cd drive ကို ျပန္ျဖဳတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
umount /mnt/mycd
ဒီလို umount နဲ႔ ျပန္ျဖဳတ္တာ ေအာင္ျမင္မွဳ ရွိမရွိ ျပဳတ္မျပဳတ္ စစ္ေဆးခ်င္တဲ့အခါ lsof ဆိုတဲ့ command ကို
အသံုးျပဳရပါတယ္။
ဥပမာ၊ /mnt/mycd မွာ ခ်ိတ္ဆက္ေပးထားတဲ့ cd drive ကို umount /mnt/mycd ဆိုၿပီး ျဖဳတ္လိုက္ၿပီ။ ဒါကို ျပဳတ္မျပဳတ္
ျပန္ၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
lsof /mnt/mycd
မိမိစက္မွာ ဘယ္ storage device ေတြ ဘယ္လို တပ္ဆင္ထားသလဲ သိလိုရင္ mount ကို grep နဲ႔ တြဲဖက္
အသံုးျပဳႏိုင္ပါေသးတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
storage device ေတြကို system boot လုပ္တာနဲ႔ မိမိ အလိုရွိတဲ့ directory မွာ auto ခ်ိတ္ဆက္ေအာင္
သတ္မွတ္ေပးထားလို႔ရပါတယ္။ ဒီလို သတ္မွတ္ဖို႔အတြက္ကေတာ့ /etc/fstab ဆိုတဲ့ file ထဲမွာ ဝင္ေရာက္
ျပင္ဆင္ေပးရံုပါပဲ။
ဆိုရရင္၊ linux မွာ file system ေတြကို စစ္ေဆးတဲ့အေၾကာင္းနဲ႔ device ေတြကို mount လုပ္
ခ်ိတ္ဆက္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
linux မွာ time နဲ႔ သက္ဆိုင္တာေတြကို စီမံဖို႔ အတြက္ timedatectl ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။
ေလ့လာၾကည့္ၾကတာေပါ့။
၁။ system ရဲ့ current date နဲ႔ time ကို ၾကည့္ခ်င္ရင္ timedatectl status ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
timedatectl status
ဥပမာ၊ current date ကို 2017-02-24 ရက္အျဖစ္ သတ္မွတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ current time ကို 05:00:00 နာရီ အျဖစ္ သတ္မွတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ date နဲ႔ time ကို တစ္ၿပိဳင္တည္း သတ္မွတ္ခ်င္တယ္ ဆုိပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၃။ linux မွာ hardware clock ကို real time clock (rtc) လို႔ ေခၚပါတယ္။ rtc ကို local timezone နဲ႔ set လုပ္ခ်င္ရင္
set-local-rtc နဲ႔ တြဲသံုးရပါတယ္။ set-local-rtc မွာ 1 နဲ႔ 0 ဆိုၿပီး တန္ဖိုး ၂ ခု ရွိပါတယ္။ 1 ဆိုရင္ yes ျဖစ္ၿပီး 0 ဆိုရင္ no
လို႔ သတ္မွတ္ပါတယ္။ rtc ကို local timezone နဲ႔ set လုပ္မယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
timedatectl set-local-time 1
rtc ကို local timezone နဲ႔ unset လုပ္မယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
timedatectl set-local-time 0
၄။ system ရဲ့ time ကို remote NTP Server ရဲ့ time နဲ႔ synchronizing လုပ္ခ်င္ရင္ မိမိစက္ရဲ့ network time protocol
(ntp) ကို on ထားဖို႔ လိုပါတယ္။ timedatectl ကို set-ntp နဲ႔ တြဲသံုးရပါတယ္။
set-ntp မွာ true နဲ႔ false ဆိုၿပီး တန္ဖိုး ၂ ခု ရွိပါတယ္။ true ဆိုရင္ ntp သည္ yes ျဖစ္ၿပီး false ဆိုရင္ ntp သည္ no ပါ။
ntp ကို NTP Server နဲ႔ synchronize လုပ္မယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။
ntp ကို NTP Server နဲ႔ synchronize မလုပ္ဘူး ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။
၅။ timezone ကို ၾကည့္ခ်င္ရင္ timedatectl ကို grep နဲ႔ တြဲသံုးရပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
timezones ေတြ အားလံုးကို ျပသေပးေစခ်င္ရင္ list-timezones နဲ႔ တြဲသံုးရပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
timedatectl list-timezones
၆။ မိမိရဲ့ location နဲ႔ သက္ဆိုင္တဲ့ timezone ကို ရွာေဖြလိုရင္ list-tinezones ကို grep -o နဲ႔ တြဲသံုးရပါတယ္။ ဥပမာ၊
Asia က Y နဲ႔စတဲ့ timezone ကို ရွာမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၇။ local timezone ကို set လုပ္ခ်င္ရင္ set-timezone နဲ႔ တြဲသံုးရပါတယ္။ ဥပမာ၊ Asia/Yangon ကို set လုပ္မယ္
ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
timedatectl set-timezone "Asia/Yangon"
၈။ မိမိ အလိုရွိရာ location အတြက္ timezone ကို တစ္ဆင့္ခ်င္း သတ္မွတ္သြားခ်င္ရင္ tzselect ကို အသံုးျပဳႏိုင္ပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
tzselect
linux ေပၚမွာ date and time နဲ႔ သက္ဆိုင္တာေတြကို စီမံတဲ့ အပိုင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
linux မွာလည္း အလားတူပဲ၊ file နဲ႔ directory ေတြကို shortcut ပံုစံမ်ိဳး ထုတ္ထားလို႔ရၿပီး၊ ဒါကို linking လုပ္တယ္လို႔
သံုးႏွဳန္းပါတယ္။
linking မွာ -
၁။ hard link
၂။ soft link
၁။ hard link : file ေတြကို link ထုတ္တာကို hard link လို႔ ေခၚပါတယ္။ ln ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။
ဥပမာ၊ current user က tom လို႔ ထားပါေတာ့။ /etc/named.conf ဆိုတဲ့ file ကို tom ရဲ့ Desktop ဆီ shortcut1 ဆိုတဲ့
အမည္န႔ဲ link ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။
ln /etc/named.conf /home/tom/desktop/shortcut1
၂။ soft link : directory ေတြကို link ထုတ္တာကို soft link လို႔ ေခၚပါတယ္။ soft link ထုတ္ဖို႔ အတြက္ ln ကို -s ဆိုတဲ့
option နဲ႔ တြဲဖက္ အသံုးျပဳေပးရံုပါပဲ။
ဥပမာ၊ current user က tom လိ႔ု ထားပါေတာ့။ /var/ ေအာက္က log ဆိုတဲ့ directory ကို tom ရဲ့ Desktop ဆီ
shortcutoflog ဆိုတဲ့ အမည္န႔ဲ link ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။
ln -s /var/log /home/tom/desktop/shortcutoflog
soft link မွာေတာ့ မူလ directory ကို ဖ်က္လိုက္ရင္ link ထုတ္ထားတဲ့ ditectory ပါ ပ်က္ပါတယ္။ ဒါက soft link ရဲ့
အားနည္းခ်က္ေပါ့။
hard link ျဖစ္ေစ soft link ျဖစ္ေစ၊ တူညီတဲ့ file system တစ္ခုတည္း ေပၚမွာပဲ link ထုတ္လို႔ရပါတယ္။ link ထုတ္မယ့္
source နဲ႔ destination တိ႔ဟ
ု ာ တူညီတဲ့ file system တစ္ခုတည္း ေပၚမွာ ရွိေနဖို႔ လိုပါတယ္။
ဆိုရရင္၊ linux system ေပၚမွာ file နဲ႔ directory ေတြကို linking လုပ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
finding in linux
windows operating system မွာ file ေတြ folder ေတြကို search နဲ႔ ရွာေဖြႏိုင္တာ သိလိမ့္မယ္လို႔ ယူဆပါတယ္။
linux မွာလည္း အလားတူ find ဆိုတဲ့ command ကို အသံုးျပဳၿပီး ရွာေဖြႏိုင္ပါတယ္။ ဒီလို ရွာေဖြရာမွာ -
ဥပမာ၊ sshd_config ဆိုတဲ့ file ကို root directory / ကေန စရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က
ေအာက္ပါအတိုင္းပါ။
file ေတြကို ရွာေဖြရာမွာ အမည္ အတိအက်မသိရင္ wild card * ေတြန႔ဲ တြဲဖက္ၿပီး ရွာေဖြႏိုင္ပါတယ္။
ဥပမာ၊ .txt နဲ႔ ဆံုးတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
file ေတြကို ရွာေဖြရာမွာ capital letter, small letter မခြဲျခားပဲ ရွာေဖြမယ္ဆို -i ဆိုတဲ့ option ကို အသံုးျပဳရပါတယ္။
ဥပမာ၊ /var/ ေအာက္မွာ messages ဆိုတဲ့ အမည္ပါတဲ့ file ေတြကို ရွာခ်င္တယ္။ စာလံုး အႀကီးအေသး မခြဲျခားဘူး။
အမည္ကိုလည္း တိတိက်က် မသိဘူးဆိုပါစို႔။ -i နဲ႔ wild card * ကို တြဲဖက္ၿပီး ေအာက္ပါအတိုင္း ရွာေဖြႏိုင္ပါတယ္။
type ကို အေျချပဳၿပီး ရွာေဖြတဲ့အခါ -type option ကို အမ်ိဳးအစားကိုကိုယ္စားျပဳတဲ့ ထပ္တိုး option ၅ မ်ိဳးနဲ႔ တြဲဖက္
အသံုးျပဳရပါတယ္။
တို႔ပဲ ျဖစ္ပါတယ္။
ဥပမာ၊ / ေအာက္ကေန စၿပီး .php နဲ႔ ဆံုးတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ / ေအာက္ကေန စၿပီး empty ျဖစ္ေနတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ / ေအာက္ကေန စၿပီး empty ျဖစ္ေနတဲ့ directory ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ / ေအာက္ကေနစၿပီး soft link ခ်ိတ္ထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
find / -type l
ဥပမာ၊ / ေအာက္ကေနစၿပီး hard link ၁ ခုထက္ ပိုခ်ိတ္ထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ /dev ေအာက္က storage block device ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဒါကေတာ့ ရွင္းပါတယ္ မိမိ ရွာလိုတဲ့ file ကို permission ေပၚ မူတည္ၿပီး ရွာေဖြတာပါ။ -perm ဆိုတဲ့ option ကို
အသံုးျပဳရပါတယ္။
ဥပမာ၊ / ေအာက္ကေန စၿပီး permission 750 ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိင
ု ္းပါ။
ဥပမာ၊ / ေအာက္ကေန စၿပီး permission 750 ေပးထားတဲ့ directory ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
permission ေပၚမူတည္ၿပီး ရွာေဖြရာမွာ ေဖၚျပထားတဲ့ permission နဲ႔ ဆန္႔က်င္ဘက္ file ကို ရွာခ်င္ရင္ ! ဆိုတဲ့ ထပ္တိုး
option ေလးကို ထည့္ေပးရပါတယ္။
ဥပမာ၊ / ေအာက္ကေန စၿပီး permission 750 မဟုတ္တဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ / ေအာက္ကေန စၿပီး permission 750 မဟုတ္တဲ့ directory ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ user အတြက္ special permission ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ other အတြက္ special permission ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ user အတြက္ read only permission ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ group အတြက္ read only permission ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဒါကေတာ့ user ေတြ group ေတြ user id (uid) ေတြ group id (gid) ေတြေပၚ မူတည္ၿပီး ရွာေဖြတဲ့ သေဘာပါ။
ဥပမာ၊ student ဆိုတဲ့ user ပိုင္တဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ hacking ဆိုတဲ့ group ထဲမွာ ပါတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ group id 1000 က ပိုင္ဆိုင္တဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ student ဆိုတဲ့ user နဲ႔ hacking ဆိုတဲ့ group က ပိုင္တဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ ၿပီးခဲ့တဲ့ ရက္ ၅၀ က modify လုပ္ထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -mtime ဆိုတဲ့ option ကို သံုးရပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
find -mtime 50
ဥပမာ၊ ၿပီးခဲ့တဲ့ ရက္ ၅၀ က access လုပ္ခံထားရတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -atime ဆိုတဲ့ option ကို သံုးရပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
find -atime 50
ဥပမာ၊ ၿပီးခဲ့တဲ့ ရက္ ၅၀ နဲ႔ ၁၀၀ ၾကားက modify လုပ္ထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -mtime ဆိုတဲ့ option ကိုပဲ
သံုးရပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ ၿပီးခဲ့တဲ့ ၁ နာရီက modify လုပ္ခံထားရတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -mmin ဆိုတဲ့ option ကို သံုးရပါတယ္။ m
က modify .. min က minute ေပါ့။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ ၿပီးခဲ့တဲ့ ၁ နာရီက access လုပ္ခံထားရတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -amin ဆိုတဲ့ option ကို သံုးရပါတယ္။ a
က access .. min က minute ေပါ့။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ ၿပီးခဲ့တဲ့ ၁ နာရီက change လုပ္ခံထားရတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -cmin ဆိုတဲ့ option ကို သံုးရပါတယ္။ c
က change .. min က minute ေပါ့။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
size ေပၚ မူတည္ၿပီး ရွာေဖြတဲ့အခါ size သတ္မွတ္ခ်က္ ၃ မ်ိဳးကို ထည့္သြင္းေပးရပါတယ္။ size သတ္မွတ္ခ်က္ ၃
မ်ိဳးကေတာ့ -
၁။ K (kilobyte)
၂။ M (megabyte)
၃။ G (gigabyte)
တို႔ပါပဲ။
ဥပမာ၊ 50 migabyte ရွိတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ 50 migabyte နဲ႔ 100 megabyte ၾကား ရွိတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
find အသံုးျပဳၿပီး ရွာေဖြတဲ့ နည္းလမ္းေတြကို တင္ဆက္ၿပီးပါၿပီ။ ဒီ ရွာေဖြနည္းေတြအျပင္ file ေတြကို ရွာေဖြၿပီး ရလာတဲ့
file ေတြကို ဖ်က္ပစ္ႏိုင္ပါေသးတယ္။ -exec rm {} \; ေလးကို ထည့္သံုးေပးရံုပါပဲ။
ဥပမာ၊ /home ဆိုတဲ့ directory ေအာက္က .mp3 နဲ႔ ဆံုးတဲ့ 10 megabyte ေက်ာ္တဲ့ file ေတြကို ရွာၿပီး တန္းဖ်က္မယ္
ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
အားလံုးပဲ အဆင္ေျပပါေစ။
controlling jobs
linux ရဲ့ terminal ထဲမွာ command တစ္ခုကို run လိုက္တာကို job သိ႔မ
ု ဟုတ္ process လို႔ ေခၚပါတယ္။ job တစ္ခုမွာ
job id, process id, state နဲ႔ job ဆိုၿပီး အပိုင္း ၄ ခု ရွိပါတယ္။
ဥပမာ၊ sleep 1500 လိ႔ု ရိုက္ၿပီး shell ကို sleep mode ပို႔လိုက္တယ္ ဆိုပါစို႔။ ဒါဆို sleep 1500 သည္ job တစ္ခု
ျဖစ္သြားပါၿပီ။
ဒီ job ကို kill ခ်င္ရင္ keyboard ေပၚက ctrl+c ကို ႏွိပ္ၿပီး kill ႏိုင္ပါတယ္။
ေနာက္တစ္ခုက၊ ဒီ job ကို မရွင္းလင္းပဲ sleep 1500 ဆိုတဲ့ job ကို keyboard ေပၚက ctrl+z ကို ႏွိပ္၊ stop လုပ္ၿပီး
background ကို ပို႔ထားလိ႔ရ
ု ပါတယ္။ ဒါဆို ဒီ job ရဲ့ state ဟာ stop ျဖစ္ၿပီး background ကို ေရာက္သြားပါလိမ့္မယ္။
ဥပမာ၊ background မွာ ရွိၿပီး stop ျဖစ္ေနတဲ့ sleep 1500 ဆိုတဲ့ job ရဲ့ id က 1 ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax က ေအာက္ပါအတိုင္းပါ။
bg %1
ctrl+z ႏွိပ္လိုက္လို႔ background ကို ေရာက္ၿပီး stop ျဖစ္ေနတဲ့ job တစ္ခုကို foreground ဆီ ျပန္ေခၚၿပီး run
ေနေစခ်င္ရင္ fg %jobID ဆိုတဲ့ format ကို သံုးၿပီး run ႏိုင္ပါတယ္။
ဥပမာ၊ sleep 1500 ဆိုတဲ့ job ရဲ့ id က 1 ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။
fg %1
command တစ္ခုကို စစ run ခ်င္းမွာပဲ background ကို ပို႔ၿပီး run ေနေစခ်င္ရင္ & ဆိုတဲ့ သေကၤတကို command
ေနာက္မွာ ထည့္ေပးရံုနဲ႔ အဆင္ေျပပါတယ္။
ဥပမာ၊ sleep 1500 ဆိုတဲ့ conmand ကို စစ run ခ်င္း background မွာ သြား run ေစခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command syntax က ေအာက္ပါအတိုင္းပါ။
sleep 1500 &
ဒီလို ctrl+z ႏွိပ္လိုက္လို႔ background ကို ေရာက္သြားတဲ့ job ေတြရဲ့ အေျခအေနကို jobs ဆိုတဲ့ command နဲ႔
ေခၚၾကည့္ႏိုင္ပါတယ္။ jobs -l လို႔ ရိုက္ enter ေခါက္လိုက္ရင္ job id, process id, run ေနလား stop ျဖစ္ေနလားဆိုတဲ့
state, job အမ်ိဳးအစား စတာေတြကို ေတြ႔ျမင္ရပါလိမ့္မယ္။
ဥပမာ၊ background မွာ ရွိေနတဲ့ job အားလံုးရဲ့ သတ္မွတ္ခ်က္ေတြကို ၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
jobs -l
ဥပမာ၊ background မွာ run ေနတဲ့ job ေတြရဲ့ အေျခအေန သတ္မွတ္ခ်က္ေတြကို သီးသန္႔ ၾကည့္မယ္ ဆိုပါစို႔။
မသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
jobs -r
ဥပမာ၊ background မွာ stop ျဖစ္ေနတဲ့ job ေတြရဲ့ အေျခအေန သတ္မွတ္ခ်က္ေတြကို သီးသန္႔ ၾကည့္မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
jobs -s
စာလည္း နည္းနည္း ရွည္သြားပါၿပီ။ terminal ေပၚမွာ command နဲ႔ သက္ဆိုင္တဲ့ job ေတြကို
ကိုင္တြယ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
controlling processes
ဒီတစ္ခါကေတာ့ linux system ေပၚမွာ run ေနတဲ့ process ေတြကို ကိုင္တြယ္မယ့္ အေၾကာင္းပါ။
linux ေပၚမွာ run ေနတဲ့ process ေတြကို ၄င္းတို႔ရဲ့ process id ကေနတစ္ဆင့္ ထိန္းခ်ဳပ္ရပါတယ္။
run ေနတဲ့ process ေတြန႔ဲ process id ေတြကို process -aux ဆိုတဲ့ command နဲ႔ ေခၚၾကည့္ႏိုင္ပါတယ္။
ps -aux လိ႔ု ရိုက္ enter ေခါက္လိုက္ရင္ process ေတြန႔ဲ သူတို႔ရဲ့ id ေတြ က်လာပါလိမ့္မယ္။
၁။ kill
၂။ killall
၃။ pkill
၄။ pgrep
၅။ pstree
process ေတြကို ထိန္းခ်ဳပ္ရာမွာ အေရးပါတဲ့ options ေတြန႔ဲ သူတို႔ရဲ့ code no. ေတြကေတာ့ -
(9) KILL
(15) TERM
(18) CONT
(19) STOP
တို႔ပါပဲ။
ဥပမာ၊ process id 1500 ဆိုတဲ့ process တစ္ခုကို KILL မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ process id 1500 ဆိုတဲ့ process တစ္ခုကို TERMINATE လုပ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
kill -SIGTERM 1500 သို႔မဟုတ္ kill -15 1500
ဥပမာ၊ process id 1500 ဆိုတဲ့ process တစ္ခုကို CONTINUE နဲ႔ ဆက္ run မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဥပမာ၊ process id 1500 ဆိုတဲ့ process တစ္ခုကို STOP လုပ္ ရပ္ထားမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဒါ့အျပင္ လက္ရွိ account မွာ run ေနတဲ့ process ေတြသာမက မိမိစက္ကို ssh ကေန တစ္ဆင့္ျဖစ္ေစ ဝင္ေရာက္
အသံုးျပဳေနတဲ့ user ေတြရဲ့ process ေတြကိုပါ ထိန္းခ်ဳပ္ႏိုင္ပါေသးတယ္။
pgrep -l -u tom
မိမိ စက္ကို login ဝင္ေနတဲ့ user ရဲ့ process ေတြကို pgrep အျပင္ pstree ဆိုတဲ့ command သံုးၿပီးလည္း
ၾကည့္ႏိုင္ပါေသးတယ္။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
pstree -p tom
tom ဆိုတဲ့ user ဆီမွာ run ေနတဲ့ process id 528 ကို လွမ္း kill မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
အားလံုးပဲ အဆင္ေျပပါေစ။
windows မွာဆိုရင္ system ကို monitoring လုပ္ဖို႔ task manager ပါတာ သိၾကမွာပါ။ အလားတူပါပဲ linux မွာ top
ဆိုတဲ့ command ကို အသံုးျပဳၿပီး system, cpu usage, memory အေျခအေန နဲ႔ process ေတြကို live
ေစာင့္ၾကည့္ႏိုင္ပါတယ္။
စလိုက္ရေအာင္ !
system နဲ႔ process အားလံုးကို ၾကည့္ခ်င္ရင္ terminal မွာ top လိ႔ု ရိုက္ enter ေခါက္ရံုပါပဲ။ command syntax
ကေတာ့ ေအာက္ပါ အတိုင္းပါ။
top
top -p
user တစ္ဦးရဲ့ process ေတြကိုပဲ ၾကည့္ခ်င္တဲ့ အခါ -u ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ process ေတြကိုပဲ သီးသန္႔ ၾကည့္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
top -u tom
idle ျဖစ္ေနတဲ့ process ေတြကို မၾကည့္ဘူး active ျဖစ္ေနတဲ့ process ေတြကိုပဲ ၾကည့္မယ္ဆိုရင္ -i ဆိုတဲ့ option ကို
တြဲသံုးရပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
top -i
top နဲ႔ ေဖၚျပထားတဲ့ result ေတြကို သိမ္းထားခ်င္ရင္ keyboard ေပၚက shift+w ကို တြဲႏွိပ္ေပးရပါတယ္။ ဒီအခါ result
ေတြကို /etc/ ေအာက္မွာ .toprc ဆိုတဲ့ file အျဖစ္ save လုပ္သြားပါလိမ့္မယ္။
top ကို အသံုးျပဳၿပီး system နဲ႔ process ေတြကို monitoring လုပ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုးပဲ အဆင္ေျပပါေစ။
current user's home directory ေအာက္မွာ touch file1 နဲ႔ file ေလး ၁ ခု ေဆာက္လိုက္ပါ။
vi file1 command နဲ႔ file1 ကို vim text editor နဲ႔ ဖြင့္ၿပီး ေအာက္က စာေၾကာင္းေလးေတြကို ရိုက္ထည့္ပါ။
sky
fly
cat
table
blue
၄။ expression ထဲမွာ . * စတဲ့ wild card ေတြကို အသံုးျပဳၿပီး စာေၾကာင္းေတြကို ဆြဲထုတ္ႏိုင္ပါတယ္။ ဥပမာ၊ table ကို
wild card သံုးၿပီး ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၅။ အစ စာလံုးနဲ႔ အဆံုး စာလံုး ၾကားက စာလံုးေတြကို ခန္႔မွန္းၿပီး ဆြဲထုတ္လိုတဲ့အခါ [ ] ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊
table ဆိုတဲ့ စာလံုးမွာ t နဲ႔ e ၾကားက စာလံုးေတြကို ခန္႔မွန္းၿပီး ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၆။ အစ စာလံုးနဲ႔ အဆံုး စာလံုး ၾကားက စာလံုး အေရအတြက္ေပၚ မူတည္ၿပီး ဆြဲထုတ္ခ်င္တဲ့အခါ .\{ \} ကို
အသံုးျပဳရပါတယ္။ ဥပမာ၊ table ဆိုတဲ့ စာလံုးမွာ t နဲ႔ e ၾကားက အေရအတြက္ေပၚ မူတည္ၿပီး ဆြဲထုတ္မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၇။ ဆြဲထုတ္လိုက္တဲ့ စာသားနဲ႔ သူ႔ေအာက္က ၂ ေၾကာင္းကိုပါ ၾကည့္ခ်င္ရင္ -A2 ဆိုတဲ့ option ကို သံုးရပါတယ္။ ဥပမာ၊
cat နဲ႔ သူ႔ေအာက္က ၂ ေၾကာင္းကိုပါ ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
grep -A2 "cat" file1
၈။ ဆြဲထုတ္လိုက္တဲ့ စာသားနဲ႔ သူ႔အေပၚက ၂ ေၾကာင္းကိုပါ ၾကည့္ခ်င္ရင္ -B2 ဆိုတဲ့ option ကို သံုးရပါတယ္။ ဥပမာ၊ cat
နဲ႔ သူ႔အေပၚက ၂ ေၾကာင္းကိုပါ ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၉။ စာလံုးကို case-sensitive မျဖစ္ပဲ ဆြဲထုတ္လိုတဲ့အခါ -i ဆိုတဲ့ option ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ cat ကို case-
sensitive မျဖစ္ေစပဲ ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
grep -i "CAT" file1
၁၀။ ဆြဲထုတ္လိုတဲ့ စာသားကို current directory ေအာက္မွာ ရွိတဲ့file တိုင္းကေန ရွာေဖြ ဆြဲထုတ္လိုတဲ့အခါ -r ဆိုတဲ့
option ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ cat ကို file တိုင္းကေန ရွာေဖြ ဆြဲထုတ္ေပးေစခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဴရမယ့္
command syntax ကေတာ့ ေအာက္ပါအတိုင္းကါ။
grep -r "cat"
၁၂။ expression ကို ၁ ခုထက္ ပိုေဖၚျပၿပီး စာေၾကာင္းေတြကို ဆြဲထုတ္လိုတဲ့အခါ -e ဆိုတဲ့ option ခံေပးရပါတယ္။
ဥပမာ၊ cat နဲ႔ table ဆိုတဲ့ စာေၾကာင္း ၂ ခုကို တစ္ၿပိဳင္နက္ ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ကဲ ! လြယ္ပါတယ္ေနာ္။
အားလံုးပဲ အဆင္ေျပၾကပါေစ။
at ကို အသံုးျပဳ၍ job တစ္ခုကို အခ်ိန္ဇယားျဖင့္ run ေစျခင္း
linux ေပၚမွာ job တစ္ခုကို အခ်ိန္ဇယားေလး ဆြဲၿပီး run ခိုင္းမယ္။ ေနာက္ ၁ နာရီ ေနရင္၊ ေနာက္ ၅ မိနစ္ ေနရင္၊ ေနာက္
၁ ရက္ ေနရင္၊ စသျဖင့္ေပါ့။
ဒီလို run ေစခ်င္တဲ့အခါ at ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ package name က at ျဖစ္ၿပီး သူ႔ရဲ့ service name
က atd ပါ။
at ကို အသံုးျပဳၿပီး ေန႔စဥ္ လစဥ္ ပံုမွန္ေတာ့ run ခိုင္းလို႔ မရပါဘူး။ one time ပဲ ရပါတယ္။
၁။ ဥပမာ၊ job တစ္ခု ကို ေနာက္ ၅ မိနစ္ ေနရင္ run ေစခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က
ေအာက္ပါအတိုင္းပါ။
at now+5min လိ႔ု ရိုက္ enter ေခါက္ပါ။ ဒီအခါ at > ဆို ေပၚလာၿပီး at ရဲ့ shell ထဲကို ေရာက္ရွိသြားပါလိမ့္မယ္။
အဲဒီ shell ထဲမွာ ကိုယ္ run ေစခ်င္တဲ့ job ကို ရိုက္ထည့္ ေပးရမွာပါ။
at > echo "hello world" >> ~/file1
ခုလို ရိုက္ထည့္ၿပီးလို႔ရွိရင္ ctrl + d ကို ႏွိပ္ၿပီး ျပန္ထြက္ရပါမယ္။
ေနာက္ ၅ မိနစ္ ေနတဲ့အခါ current user's home directory ~/ ေအာက္က file1 ထဲမွာ hello world ဆိုတဲ့
စာသားေလး ေရာက္ေနပါလိမ့္မယ္။
၂။ ဒီလို ခိုင္းေစရာမွာ ဒီ job အတြက္ cpu နဲ႔ ram ပမာဏကို priority သတ္မွတ္ေပးႏိုင္ပါေသးတယ္။ prioriry a ကေန z
အထိ ရွိၿပီး ဘာမွ မသတ္မွတ္ရင္ default priority a နဲ႔ run ပါတယ္။
ဥပမာ၊ ေစာေစာက job ကို priority b နဲ႔ run ေစခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
at -q b now+5min
၃။ ဒီလို အခ်ိန္ဇယားနဲ႔ run ခိုင္းထားတဲ့ job ေတြ ရွိမရွိ ၾကည့္ခ်င္ရင္ atq ဆိုတဲ့ command ကို သံုးရပါတယ္။ at -l
လို႔လည္း သံုးႏိုင္ပါတယ္။ ဒီအခါ schedule ဆြဲထားတဲ့ job ေတြကို id နံပါတ္န႔ဲ ေဖၚျပေပးပါလိမ့္မယ္။
at -l
၄။ job တစ္ခု ဘယ္လို run မလဲ သိခ်င္ရင္ေတာ့ at ေရွ့မွာ -c နဲ႔ task id ကိုထည့္ enter ေခါက္ၿပီး ၾကည့္ႏိုင္ပါတယ္။
ဥပမာ၊ atq နဲ႔ ၾကည့္လိုက္လို႔ job id 10 ကို ေတြ႔တယ္။ ဒီ job id 10 သည္ ဘယ္လို run မလဲ ၾကည့္မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
at -c 10
၅။ job တစ္ခု ကို ျပန္ၿပီး cancel လုပ္ခ်င္တဲ့အခါ atrm ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ task id 10 ကို
cancel လုပ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
atrm 10
အားလံုးပဲ အဆင္ေျပၾကပါေစ။
at အသံုးျပဳရင္ job တစ္ခုကို ၁ ခါပဲ run လိ႔ု ရပါတယ္။ one time ေပါ့။ ေန႔စဥ္ လစဥ္ ပံုမွန္ ခိုင္းေစထားလို႔ မရပါဘူး။
ေန႔စဥ္ လစဥ္ ပံုမွန္ ခိုင္းေစထားလိုတဲ့အခါ crontab ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။
သူ႔ရဲ့ package name က cronie ျဖစ္ၿပီး service name က crond .. command က crontab ပါ။
job တစ္ခုကို အခ်ိန္ဇယားနဲ႔ ပံုမွန္ ခိုင္းေစထားလိုတဲ့အခါ crontab -e ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ crontab
-e လို႔ ရိုက္ enter ေခါက္လိုက္ရင္ vi နဲ႔ file တစ္ခု ပြင့္လာပါလိမ့္မယ္။
အဲဒီ ပြင့္လာတဲ့ file ထဲကို အပိုင္း ၆ ပိုင္းနဲ႔ အစဥ္လိုက္ configure လုပ္ေပးရပါတယ္။ အဲဒီ အပိုင္း ၆ ပိုင္းကေတာ့ -
၁။ မိနစ္ (0 to 59)
၂။ နာရီ (0 to 23)
၃။ day of month (1 to 31)
၄။ month (1 to 12)
၅။ day of week (0 [sunday] to 6 [saturday]) { * = ဘယ္ေန႔မဆို }
၆။ job script (run မယ့္ job)
ဥပမာ၊ ဂ်ဴလိုင္လ ၁၉ ရက္ေန႔ မနက္ ၇ နာရီ ၃၀ မိနစ္ ေရာက္တိုင္း current user's home directory ေအာက္က
Desktop ေအာက္က aungsan.mp3 ဆိုတဲ့ သီခ်င္းကို ပြင့္လာေစခ်င္တယ္ ဆိုပါစို႔။
crontab -e လိ႔ု ရိုက္ enter ေခါက္ၿပီး ေအာက္ပါအတိုင္း configure လုပ္ရပါမယ္။ i ကို ႏွိပ္ insert mode နဲ႔ ဝင္ၿပီး
ေအာက္ကအတိုင္း ေရး။
30 7 19 7 * ~/Desktop/aungsan.mp3
အားလံုးပဲ အဆင္ေျပၾကပါေစ။
at တို႔ crontab တို႔ စတဲ့ command ေတြကို အသံုးျပဳၿပီး job ေတြကို အခ်ိန္ဇယားနဲ႔ ေစခိုင္းတဲ့အေၾကာင္းကေတာ့
ေရးၿပီးခဲ့ပါၿပီ။
ခုတစ္ခါ တင္ဆက္မွာက system အေနနဲ႔ တခ်ိဳ႔ job ေတြကို သူ႔ဖါသာ အခ်ိန္ဇယားနဲ႔ ဘယ္လို run ေနသလဲဆိုတာပါပဲ။
သေဘာတရားေလးေပါ့။
၁။ system cron job နဲ႔ ဆိုင္တဲ့ file ေတြဟာ /etc/cron.d ေအာက္မွာ ရွိပါတယ္။
၂။ system အေနနဲ႔ job ေတြကို run တဲ့အခါ run-parts ဆိုတဲ့ program က ေနာက္ကြယ္ကေန အလုပ္လုပ္ေပးပါတယ္။
run တဲ့ ပံုစံကို /etc/anacrontab ထဲမွာ ေဖၚျပထားပါတယ္။ vi နဲ႔ ဝင္ၾကည့္ႏိုင္ပါတယ္။
ေန႔ရက္အလိုက္ run ရမယ့္ job ေတြကို /etc/cron.daily ဆိုတဲ့ directory ေအာက္မွာ သြား run ပါတယ္။
အပတ္စဥ္ run ရမယ့္ job ေတြကို /etc/cron.weekly ဆိုတဲ့ directory ေအာက္မွာ သြား run ပါတယ္။
လစဥ္ run ရမယ့္ job ေတြကို /etc/cron.monthly ဆိုတဲ့ directory ေအာက္မွာ သြား run ပါတယ္။
၃။ နာရီ အလိုက္ run ရမယ့္ job ေတြကိုေတာ့ /etc/cron.d/0hourly ဆိုတဲ့ file က /etc/cron.hourly ဆိုတဲ့ directory
ေအာက္မွာ သြား run ပါတယ္။u /etc/cron.d/0hourly ဆိုတဲ့ file ကို vi text editor နဲ႔ ဖြင့္ၾကည့္ရင္ ျမင္ႏိုင္ပါတယ္။
အားလံုးပဲ အဆင္ေျပၾကပါေစ။
SELinux ရဲ့ အရွည္က Securiry Enhance Linux ပါ။ SELinux ကို ေကာင္းေကာင္း အသံုးခ်ႏိုင္ဖို႔အတြက္
policycoreutils-python ဆိုတဲ့ package နဲ႔ setroubleshoot-server ဆိုတဲ့ package လိုအပ္ပါတယ္။ မရွိရင္ yum
install နဲ႔ သြင္းေပးရပါမယ္။
ကဲ ! ေလ့လာၾကည့္ရေအာင္။
အရင္ဆံုး root account နဲ႔ login ဝင္ၿပီး mkdir dir1 ဆိုတဲ့ directory ေလး ၁ ခု touch file1 နဲ႔ file ေလး ၁ ခု
ေဆာက္လိုက္ပါ။
file နဲ႔ directory ေတြမွာ SELinux က သတ္မွတ္ေပးထားတဲ့ label ေလးေတြ ရွိပါတယ္။ ဒါကို context လို႔ ေခၚပါတယ္။ ဒီ
context ေလးေတြေပၚ မူတည္ၿပီး access လုပ္ခြင့္ေတြ ေျပာင္းလဲသြားတာပါ။
ls -lZ file1
ls -ldZ dir1
ps -auxZ
ဟုတ္ၿပီ။ ဆက္သြားၾကရေအာင္။
1. enforcing
2. permissive
3. disabled
တိ႔ပ
ု ါပဲ။
SELinux သည္ ဘယ္ mode မွာ ရွိေနသလဲ ၾကည့္ခ်င္ရင္ getenforce ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။
getenforce
SELinux ရဲ့ mode ကို ေျပာင္းခ်င္ရင္၊ setenforce ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။
ကဲ ! ဆက္လိုက္ရေအာင္။
file နဲ႔ directory ေတြ အတြက္ context ေတြကို ယာယီ (temporary) နဲ႔ အၿမဲ (permanent) ဆိုၿပီး
သတ္မွတ္ေပးႏိုင္ပါတယ္။
3. context တစ္ခုကို permanent သတ္မွတ္ၿပီးရင္ update ျဖစ္သြားေအာင္ restorecon -RFv ကို run ေပးရပါတယ္။
ဒီေနရာမွာ httpd_sys_content_t သည္ contexr ပါ။ ဒီလို သတ္မွတ္ျခင္းအားျဖင့္ http ကေနတစ္ဆင့္ ဒီ directory ကို
access လုပ္ခြင့္ ရသြားပါတယ္။
ကဲ ! ထပ္ဆက္လိုက္ရေအာင္။
1. policy ေတြကို ၾကည့္ခ်င္ရင္ getsebool -a နဲ႔ ၾကည့္ႏိုင္ပါတယ္။ policy ေပါင္း ၂၈၀ ရွိပါတယ္။
getsebool -a
semanage boolean -l
2. policy ေတြကို ျပင္မယ္ဆို setsebool ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ ယာယီ ျပင္မယ္ဆို setsebool ကို
သံုးရံုပါပဲ။
setsebool httpd_enable_homedirs on
setsebool -a
setsebool -p httpd_enable_homedirs on
file တစ္ခုခု directory တစ္ခုခုကို access လုပ္လို႔ မရရင္ error တက္တတ္ပါတယ္။ ဒါဟာ SELinux က ပိတ္ထားလိ႔ပ
ု ါ။
ဒီအခါ system log ကို tail -f -n 30 နဲ႔ ဝင္ဖတ္ၿပီး sealert ဆိုတဲ့ code ကို ရွာၿပီး run ေပးရပါတယ္။ ဒီအခါ SELinux နဲ႔
ဘယ္လို ျပင္ဆင္ေပးဖို႔ လိုအပ္ေနသလဲဆတ
ို ာ ျမင္ေတြ႔ရပါလိမ့္မယ္။
tail -f -n 30 /var/log/messages
အားလံုးပဲ အဆင္ေျပပါေစ။
LDAP ကို windows server ရဲ့ (AD) Active Directory Object ေတြန႔ဲ ခ်ိတ္ဆက္ရာမွာ user authentication နဲ႔
authorization အတြက္ အသံုးျပဳပါတယ္။ network ေပၚမွာ credential data ေတြကို သိမ္းဆည္းရာမွာလည္း LDAP ကို
အသံုးျပဳပါတယ္။
ဆိုရရင္ linux မွာ Active Directory (AD) မရွိပါဘူး။ AD ကို လိုခ်င္ရင္ windows server ကို အသံုးျပဳရပါမယ္။
အာ့လို ေပးထားတဲ့အခ်က္ေတြကို photo မွာ ျမင္ရတဲ့အတိုင္း linux ရဲ့ graphical user interface မွာ ျဖည့္ၿပီး apply
လုပ္ရမွာပါ။ လြယ္ကူ ရိုးရွင္းပါတယ္။
စလိုက္ၾကရေအာင္။
system-config-authentication
၅။ Advanced options tab ကို သြားပါ။ Create home directories on the first login ကို အမွန္ျခစ္ေပးလိုက္ပါ။ Apply
ကို ႏွိပ္ပါ။
၁။ အရင္ဆံုး getent ဆိုတဲ့ command ကို အသံုးျပဳရပါမယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၂။ ssh ကေနတစ္ဆင့္ LDAP user name နဲ႔ login ဝင္ႏိုင္ပါၿပီ။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ssh xerocool@localhost
အားလံုး အဆင္ေျပၾကပါေစ။
HD (hard disk) အား partition ပိုင္းျခင္း format ခ်ျခင္း mount လုပ္ျခင္း
ဒီတစ္ခါေတာ့ linux မွာ HD ကို
၁။ partition ပိုင္းတာ
၃။ format ခ်ထားတဲ့ partition ကို မိမိ သတ္မွတ္ထားတဲ့ directory မွာ mount လုပ္ တပ္ဆင္တာ
စသျဖင့္ ေလ့လာၾကည့္ရေအာင္။
HD က
စသျဖင့္ ျမင္ရပါလိမ့္မယ္။
၂။ Command (m for help) : လို႔ ေပၚလာပါလိမ့္မယ္။ partition အသစ္ ပိုင္းမွာျဖစ္တဲ့အတြက္ n လို႔ ရိုက္ enter
ေခါက္ေပးလိုက္ပါ။
၃။ Partition type ကို ေရြးခိုင္းပါလိမ့္မယ္။ primary partition အေနနဲ႔ ပိုင္းမွာျဖစ္လို႔ p လိ႔ု ရိုက္ enter
ေခါက္ေပးလိုက္ပါ။
၄။ Partition number ျဖည့္ခိုင္းပါလိမ့္မယ္။ ပထမဆံုး partition ျဖစ္တာေၾကာင့္ 1 လို႔ ရိုက္ enter ေခါက္ေပးလိုက္ပါ။
၆။ Last sector ထည့္ခိုင္းပါလိမ့္မယ္။ ဒီဥပမာမွာ 2G ပိုင္းမွာ ျဖစ္တဲ့ အတြက္ +2G လိ႔ု ရိုက္ enter ေခါက္ေပးလိုက္ပါ။
၉။ Command (m for help) : ဆီ ျပန္ေရာက္လာပါလိမ့္မယ္။ w လို႔ ရိုက္ enter ေခါက္ၿပီး save လိုက္ပါ။
၁၀။ ဒါဆို partition တစ္ခု ဖန္တီးၿပီးသြားပါၿပီ။ partition အသစ္ကို system က သိေအာင္ partprobe လို႔ ရိုက္ enter
ေခါက္ေပးလိုက္ပါ။
၁၁။ lsblk ဆိုတဲ့ command ကို သံုးၿပီး ျပန္ၾကည့္လိုက္ပါ။ /dev/sdb1 ဆိုတဲ့ partition တစ္ခု တိုးလာတာကို
ျမင္ရပါလိမ့္မယ္။
ဒီလို အသံုးျပဳရပါတယ္။
ေစာေစာက ပိုင္းထားတဲ့ /dev/sdb1 ကို ext4 နဲ႔ format ခ်မယ္ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
mkfs.ext4 /dev/sdb1
ဒါကေတာ့ format ခ်တဲ့အၾကာင္းပါပဲ။ format ခ်ၿပီးတဲ့ေနာက္ အသံုးျပဳဖို႔ file ေတြ ထည့္ႏိုင္ဖို႔ directory တစ္ခုခုမွာ
mount လုပ္ တပ္ဆင္ရပါတယ္။
format ခ်ၿပီးသား partition ကို hd1 ဆိုတဲ့ directory ဆီ mount လုပ္မယ္ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၁။ vi /etc/fstab
၂။ i ကို ႏွိပ္ insert mode ကို ဝင္
ဒါဆို အၿမဲ mount ျဖစ္သြားပါၿပီ။ cd /hd1 ကို ဝင္ၿပီး file ေတြ သိမ္းဆည္းႏိုင္ပါၿပီ။
ကဲ ! HD ကို partition ပိုင္း၊ format ခ်၊ directory မွာ mount လုပ္ တပ္ဆင္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုး အဆင္ေျပၾကပါေစ။
virtual memory
linux မွာ Hard Disk (HD) ကို partition ပိုင္းတာ format ခ်တာ၊ directory မွာ mount လုပ္တာေတြကို တင္ခဲ့ၿပီးပါၿပီ။
physical ram မေလာက္တဲ့အခါ virtual memory ဟာ ram လိုပဲ အလုပ္လုပ္ေပးပါတယ္။ linux မွာ virtual memory
ကို swap လို႔ ေခၚပါတယ္။
၁။ HD ကို partition ပိုင္းကတည္းက type ID ကို 82 လို႔ သတ္မွတ္ေပးလိုက္ပါ။ ဒီေနရာမွ နမူနာအျဖစ္ partition ကို
/dev/sdb1 လိ႔ု ဆိုၾကပါစို႔။ size က 1G ထားပါစို႔။
၂။ sdb1 ရလာၿပီးတဲ့ေနာက္ သူ႔ကို format ခ်ရပါမယ္။ storage အေနနဲ႔ မဟုတ္ပဲ virtual memory ဖန္တီးမွာ ျဖစ္လို႔
mkswap ဆိုတဲ့ command ကို အသံုးျပဳရပါမယ္။
၃။ swap ကို virtual memory အျဖစ္ တပ္ဆင္ဖို႔ swapon ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။
၄။ free -h လို႔ ရိုက္ enter ေခါက္လိုက္ပါ။ ram ေနရာမွာ swap အေနနဲ႔ 1G ထက္တိုးလာတာ ေတြ႔ရပါလိမ့္မယ္။
၅။ virtual memory အျဖစ္ တပ္ဆင္ထားတဲ့ swap ကို ျပန္ျဖဳတ္ခ်င္တယ္ ဆိုပါစို႔။ swapoff ဆိုတဲ့ command ကို
အသံုးျပဳရပါတယ္။
swapoff /dev/sdb1 လို႔ ရိုက္ enter ေခါက္လိုက္ပါ။
၂။ mkswap /dev/sdb1
၃။ swapon /dev/sdb1
၄။ free –h
လို႔ ေတြ႔ရမွာပါ။
linux မွာ swap တစ္ခု ဖန္တီးၿပီး virtual memory အျဖစ္ တပ္ဆင္ အသံုးျပဳတဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
swap နဲ႔ ပတ္သက္တာေတြ မျပဳလုပ္ခင္ ယခင္ post မွာ တင္ထားတဲ့ HD ကို partition ပိုင္းတာ၊ type ID
သတ္မွတ္တာေတြကို နားလည္ထားဖို႔ေတာ့လိုပါတယ္။
အားလံုးပဲ အဆင္ေျပၾကပါေစ။
LVM - Logical Volume Management
linux မွာ hard disk (HD) ကို ပံုမွန္ partition ပိုင္းတာ၊ virtual memory ဖန္တီးတာေတြ ၿပီးခဲ့ပါၿပီ။
ဘာ့ေၾကာင့္ ရိုးရိုး partition မပိုင္းပဲ logical volume (LV) ေတြ ဖန္တီးမွာလဲ။ ဘာ့ေၾကာင့္လဲ ဆိုေတာ့ LVM မွာ
အားသာခ်က္ေတြ ရွိလို႔ပါ။
၂။ partition တစ္ခုကေန တစ္ခုကို data ေတြ မထိခိုက္ေစပဲ down time zero နဲ႔ ေရြ႔ပစ္တာ
ကဲ ! စလိုက္ၾကစို႔။
၁။ pvcreate
၂။ pvs
၃။ vgcreate
၄။ vgs
၅။ lvcreate
၆။ lvs
အရင္ဆံုး HD ကို fdisk ဆိုတဲ့ command အသံုးျပဳၿပီး partition ပိုင္းရာမွာ type ID ကို 8e လို႔ သတ္မွတ္ေပးလိုက္ပါ။
type ID သတ္မွတ္ေပးတဲ့ အေၾကာင္းကို ယခင္ status မွာ ေရးသားခဲ့ၿပီးပါၿပီ။
ဟုတ္ၿပီ။ size 2G စီ ရွိတဲ့ /dev/sdb1 နဲ႔ /dev/sdb2 ဆိုတဲ့ partition ၂ ခု ရၿပီဆိုပါေတာ့။ ဒီ partition ၂ ခုကို
အရင္းျပဳၿပီး logical volume (LV) ေတြ ဖန္တီးလိုက္ရေအာင္။
၁။ အရင္ဦးဆံုး partition ေတြကို physical volume (PV) ေတြ အျဖစ္ ေျပာင္းလဲရပါမယ္။ partition ၂ ခုကို PV အျဖစ္
ေျပာင္းလဲဖို႔ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၂။ ရရွိလာတဲ့ physical volume ၂ ခုကို ျပန္ၾကည့္ခ်င္ရင္ pvs လို႔ ရိုက္ enter ေခါက္ရပါမယ္။
၃။ ရရွိလာတဲ့ physical volume ၂ ခုကို အရင္းျပဳၿပီး volume group (VG) ၁ ခု ေဆာက္ေပးရပါမယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
၄။ ရရွိလာတဲ့ volume group ကို ျပန္ၾကည့္ခ်င္ရင္ vgs လို႔ ရိုက္ enter ေခါက္ရပါမယ္။
၅။ ခုဆိုရင္ physical volume >> sdb1 နဲ႔ sdb2 ႏွစ္ခုေပါင္း 4G ရွိတဲ့ my_vg လို႔ အမည္ရတဲ့ volume group ၁ ခု
ရလာပါၿပီ။
ဒီ vg ကေနမွ 1G စီ ရွိတဲ့ logical volume (LV) ၂ ခု ဖန္တီးပါမယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
ဒါဆို lv ၁ ခု ရပါၿပီ။
ဒါဆို lv ၂ ခု ရပါၿပီ။
၆။ ရရွိလာတဲ့ logical volume ေတြကို ျပန္ၾကည့္ခ်င္ရင္ lvs လို႔ ရိုက္ enter ေခါက္ရပါမယ္။
ဥပမာ၊ ေစာေစာက my_lv ဟာ 1G နဲ႔ မေလာက္ဘူး ဆိုပါေတာ့။ သူ႔ကို 1G ထပ္တိုးမယ္ ဆိုပါစို႔။ lvextend ဆိုတဲ့
command ကို အသံုးျပဳရပါတယ္။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
lvs လို႔ ရိုက္ enter ေခါက္ၿပီး ျပန္ၾကည့္ပါ။ my_lv1 မွာ 1G ထပ္တိုးေနတာ ေတြ႔ရပါလိမ့္မယ္။
ကဲ ! ဟုတ္ၿပီ။
ဒီ logical volume ျဖစ္တဲ့ my_lv1 ကို format ခ်ၾကည့္ရေအာင္။ xfs နဲ႔ format ခ်မယ္ ဆိုပါစို႔။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
mkfs.xfs /dev/my_vg/my_lv1
ဒါဆို my_lv1 ကို xfs type နဲ႔ format ခ်ၿပီးပါၿပီ။ directory တစ္ခုခုမွာ mount လုပ္ၿပီး storage အျဖစ္ အသံုးျပဳလိ႔ု
ရၿပီေပါ့။
my_lv1 ကို storage ဆိုတဲ့ directory (folder) ဆီ mount လုပ္ဖို႔ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါပဲ။
အားလံုးပဲ အဆင္ေျပၾကပါေစ။
server ဘက္က storage ၁ ခုကို share မယ္။ ဒါကို ကိုယ့္စက္ကေန လွမ္းခ်ိတ္ယူမယ္။ ဒါပါပဲ။
server ဘက္ကေန mount လုပ္ရမယ့္ source လမ္းေၾကာင္းေတြ option ေတြ ေပးထားပါလိမ့္မယ္။ ဥပမာ၊
စသျဖင့္ေပါ့။
source ဆိုတာကေတာ့ ဒီေနရာမွာ server ဘက္က ေပးထားတဲ့ root directory ေအာက္က share ေအာက္က public
ဆိုတဲ့ storage (server:/share/public) ကို မိမိဘက္မွာ mount လုပ္ တပ္ဆင္ေပးရမွာပါ။
keytab ဆိုတာကေတာ့ security နဲ႔ ဆိုင္တဲ့ key ကို download လုပ္ရမယ့္ link ပါ။
ကဲ ! စလိုက္ၾကရေအာင္။
၃။။ keytab ကို download ဆြဲၿပီး root directory ေအာက္က etc ေအာက္ (/etc/) မွာ ေနရာခ်ပါ။
mkdir mountpoint
၅။ server ဘက္က share ထားတဲ့ storage ကို ေအာက္ပါ command နဲ႔ ၾကည့္ပါ။
showmount -e serveraddress
၆။ server ဘက္က storage ကို ယာယီ mount ဖို႔ အတြက္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
၇။ server ဘက္က storage ကို အၿမဲ parmanent mount ထားခ်င္ရင္ /etc/fstab ကို vi နဲ႔ ဖြင့္ၿပီး ေအာက္ပါအတိုင္း
ေရးသြင္းပါ။
အားလံုးပဲ အဆင္ေျပၾကပါေစ။
auto mount ကို အသံုးျပဳႏိုင္ဖို႔ autofs ဆိုတဲ့ package ကို အရင္ဆံုး သြင္းထားရပါမယ္။ ေအာက္ပါအတိုင္းေပါ့။
ဟုတ္ၿပီ။ ေရွ့ဆက္ၾကရေအာင္။
ဟုတ္ၿပီ။ server ဘက္က share ထားတဲ့ /share/ ေအာက္က public ဆိုတဲ့ directory ကို မိမိ ဘက္ျခမ္းမွာ auto
mount လုပ္ၾကည့္ရေအာင္။
၁။ direct mount
၂။ indirect mount
အရင္ဆံုး ေပးထားတဲ့ security key ကို download ခ်ၿပီး /etc/ ေအာက္မွာ krb5.keytab အမည္န႔ဲ သိမ္းပါ။
ေအာက္ပါအတိုင္းေပါ့။
mkdir /mnt
mkdir /mnt/public
#direct_mount
၁။ /etc/auto.master.d ဆိုတဲ့ directory ေအာက္ကို သြားပါ။ .autofs နဲ႔ ဆံုးတဲ့ file ၁ ခု ေဆာက္ပါ။ file အမည္ကို
ႏွစ္သက္သလို ေပးလို႔ရပါတယ္။ .autofs နဲ႔ ဆံုးဖို႔က အဓိကပါ။ ေအာက္ပါအတိုင္းေပါ့။
touch direct.autofs
အဲဒီ direct .autofs ဆိုတဲ့ file ကို direct map file သို႔မဟုတ္ master map file လို႔ ေခၚပါတယ္။
/- /etc/auto.direct
auto.direct ဆိုတာ မၾကာခင္ ေဆာက္မယ့္ map file ရဲ့ အမည္ပါ။ map file ရဲ့ လမ္းေၾကာင္းပါ။
touch auto.direct
။ auto.direct ထဲမွာ mount လုပ္မယ့္ mount point ရယ္ options ရယ္ source ရယ္ကို vi နဲ႔ ဝင္ၿပီး ေရးသြင္းပါ။
ဒီေနရာမွာ mount point က /mnt/public ဆိုပါစို႔။ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။
၅။ systemctl enable autofs လိ႔ု ရိုက္ enter ေခါက္ပါ။ systemctl start autofs လို႔ ရိုက္ enter ေခါက္ပါ။ systemctl
restart autofs လို႔ ရိုက္ enter ေခါက္ပါ။
ဒါဆိုရင္ server ဘက္က share ထားတဲ့ storage ကို direct နဲ႔ auto mount တဲ့အပိုင္းၿပီးဆံုးပါၿပီ။ indirect auto mount
တဲ့ အေၾကာင္း ဆက္သြားၾကရေအာင္။
#inditect_mount
၁။ /etc/auto.master.d ဆိုတဲ့ directory ေအာက္ကို သြားပါ။ .autofs နဲ႔ ဆံုးတဲ့ file ၁ ခု ေဆာက္ပါ။ file အမည္ကို
ႏွစ္သက္သလို ေပးလို႔ရပါတယ္။ .autofs နဲ႔ ဆံုးဖို႔က အဓိကပါ။ ေအာက္ပါအတိုင္းေပါ့။
touch indirect.autofs
အဲဒီ indirect .autofs ဆိုတဲ့ file ကို indirect map file သို႔မဟုတ္ master map file လို႔ ေခၚပါတယ္။
/mnt/ /etc/auto.indirect
auto.indirect ဆိုတာ မၾကာခင္ ေဆာက္မယ့္ map file ရဲ့ အမည္ပါ။ map file ရဲ့ လမ္းေၾကာင္းပါ။
touch auto.indirect
auto.indirect ထဲမွာ mount လုပ္မယ့္ mount point ရယ္ options ရယ္ source ရယ္ကို vi နဲ႔ ဝင္ၿပီး ေရးသြင္းပါ။
ဒီေနရာမွာ mount point က /mnt/public ဆိုပါစို႔။ * လို႔ ေရးပါ။ source ရဲ့ အဆံုးမွာ & လို႔ ေရးပါ။ ေအာက္ပါအတိုင္းေပါ့။
သို႔မဟုတ္
၅။ systemctl enable autofs လိ႔ု ရိုက္ enter ေခါက္ပါ။ systemctl start autofs လိ႔ု ရိုက္ enter ေခါက္ပါ။ systemctl
restart autofs လိ႔ု ရိုက္ enter ေခါက္ပါ။
ဒါဆိုရင္ server ဘက္က share ထားတဲ့ storage ကို indirect နဲ႔ auto mount တဲ့အပိုင္းၿပီးဆံုးပါၿပီ။
mount လုပ္ထားတာ မွန္မမွန္ mount –a ဆိုတဲ့ command အသံုးျပဳၿပီး ျပန္စစ္ၾကည့္ႏိုင္ပါတယ္။ mount –a ရိုက္
linux မွာ server ဘက္က share ထားတဲ့ storage ကို auto mount တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုး အဆင္ေျပၾကပါေစေနာ္။
mounting a SMB File System
ဒီတစ္ခါ ေရးမွာက ေတာ့ SMB Server ဘက္ကေန share ထားတဲ့ storage directory ကို client side မွာ ခ်ိတ္ဆက္တဲ့
အေၾကာင္းပါ။
mounting/mount လုပ္တယ္ဆိုတာ တစ္ဘက္က share ထားတဲ့ storage ကို မိမိ ဘက္ျခမ္း client side မွာ
တပ္ဆင္တာကို ဆိုလိုတာပါ။
mount လုပ္တာနဲ႔ ပတ္သက္လ႔ို ယခင္ post ေတြမွာလည္း ေရးခဲ့ဘူးပါၿပီ။ mount လုပ္နည္းေတြက တစ္ခုန႔တ
ဲ စ္ခု
အခ်က္အလက္ေရးသြင္းတဲ့ အပိုင္းမွာ အနည္းငယ္ လြဲရံုမွအပ အေျခခံ concept ခ်င္းက အတူတူပါပဲ။
SMB မွာဆိုရင္ mount လုပ္ရာမွာ uaer name နဲ႔ password ေလး ထည့္ေပးရတာ ၁ ခ်က္ ပိုလာတာ တစ္ခုပါပဲ။
ကဲ ! စလိုက္ရေအာင္။
စတာေတြကို ေပးထားပါလိမ့္မယ္။
အာ့ဒီေပးထားတဲ့ အခ်က္ေတြကို အသံုးျပဳၿပီး smb server ဘက္က share ထားတာကို မိမိ ဘက္မွာ mount
လုပ္ေပးရမွာပါ။
mount လုပ္ရာမွာ
၁။ ယာယီ mount
၂။ permanent mount
၃။ auto mount
မစတင္မီ အရင္ဆံုး cifs-utils ဆိုတဲ့ package ကို အရင္ဆံုး install လုပ္ပါ။ ေအာက္ပါအတိုင္းေပါ့။
၁။ root ေအာက္မွာ share ဆိုတဲ့ directory ေအာက္မွာ student1 အမည္န႔ဲ mount point တစ္ခု ေဆာက္ပါ။
mkdir /share
mkdir /share/student1
touch /secure.smb
username=tom
password=redhat
domain=MYGROUP
ဒါဆို server ဘက္က share ထားတဲ့ student ဆိုတဲ့ directory ကို ယာယီ mount ႏိုင္ပါၿပီ။
#auto_mount
၁။ /etc/auto.master.d ေအာက္မွာ indirect.autofs လိ႔ု ေဆာက္ေပးပါ။ indirect.autofs ထဲမွာ mount point နဲ႔ map
file လမ္းေၾကာင္းကို ေအာက္ပါအတို္င္း ေရးသြင္းပါ။
/share /etc/auto.indirect
ကဲ ! SMB server ဘက္က share ထားတဲ့ directory ကို မိမိဘက္ျခမ္းမွာ mount လုပ္ ခ်ိတ္ဆက္တဲ့
အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။
အားလံုး အဆင္ေျပၾကပါေစ။
controlling boot process/changing target
ဒီတစ္ခါ linux မွာ boot process နဲ႔ ဆိုင္တာေတြကို ေလ့လာၾကတာေပါ့။
linux မွာ power off ဖို႔ အတြက္ systemctl poweroff ဆိုတဲ့ command ကို သံုးပါတယ္။
စက္ကို restart ခ်ဖိ႔ု အတြက္ systemctl reboot ဆိုတဲ့ command ကို သံုးပါတယ္။
system တစ္ခုလံုးကို ရပ္တန္႔လိုက္ဖို႔ အတြက္ systemctl halt ဆိုတဲ့ command ကို သံုးပါတယ္။
ၿပီးေတာ့ linux system ကို target ၄ မ်ိဳးနဲ႔ ဝင္ေရာက္ႏိုင္ပါတယ္။ target ဆိုတာ boot တက္ၿပီးတာနဲ႔ graphical နဲ႔
ဝင္သံုးတာ command line နဲ႔ ဝင္သံုးတာ၊ စသျဖင့္ ဆိုလိုတာပါ။ target ၄ မ်ိဳးကေတာ့ …
စသျဖင့္ ရွိပါတယ္။
မိမိဟာ လက္ရွိ ဘယ္ target မွာ သံုးေနသလဲ သိခ်င္ရင္ ေအာက္ပါ command နဲ႔ ဝင္ၾကည့္ႏိုင္ပါတယ္။
systemctl get-default
မိမိ ရဲ့ အသံုးျပဳေနတဲ့ target ကို reboot လုပ္ပီးတာနဲ႔ permanent ေျပာင္းခ်င္ရင္ ေအာက္ပါအတိုင္း ေျပာင္းႏိုင္ပါတယ္။
ဥပမာ၊ CLI ကို ေျပာင္းမယ္ ဆိုပါစို႔။
မိမိ ရဲ့ အသံုးျပဳေနတဲ့ target ကို reboot မလုပ္ပဲ ခ်က္ခ်င္း ယာယီ ကူးေျပာင္းခ်င္တယ္ ဆိုပါစို႔။ isolate ဆိုတဲ့ option နဲ႔
တြဲၿပီး ေအာက္ပါအတိုင္း ကူးေျပာင္းႏိုင္ပါတယ္။
ကဲ ! ေနာက္တစ္မ်ိဳးကေတာ့။
systemd.unit=rescue.target
အားလံုး အဆင္ေျပၾကပါေစ။
root password recovery
linux မွာ root account ရဲ့ password ဟာ အေရးႀကီးပါတယ္။ အဲဒီ root password ကို ေမ့သြားၿပီ ဆိုပါေတာ့။
ဘယ္လို လုပ္ၾကမလဲ?
ကဲ ! စလိုက္ၾကရေအာင္။
လုပ္ရမယ့္ အဆင့္ေတြက …
၂။ ျပန္တက္လာလိ႔ု boot menu ေပၚလာရင္ ႀကိဳက္တဲ့ key တစ္ခုကို ႏွိပ္ၿပီး brake ဖမ္းလိုက္ပါ။
၄။ up down arrow key ေတြ သံုးၿပီး linux16 ဆိုတဲ့ စာေၾကာင္းကို ရွာပါ။ ေတြ႔ရင္ linux16 စာပိုဒ္ရဲ့ အဆံုးကို သြားပါ။
ဒါပါပဲ။
အားလံုး အဆင္ေျပၾကပါေစ။
linux firewall
linux system administration နဲ႔ ပတ္သက္လ႔ို ဒါက ေနာက္ဆံုး post ပါ။ ဒီ post ေလးနဲ႔ နိဂံုးခ်ဳပ္ပါရေစ။
firewall ၁ ခု အေနနဲ႔ အၾကမ္းအားျဖင့္ service ေတြကို ဖြင့္/ပိတ္ port ေတြကို ဖြင့္/ပိတ္၊ စတာေတြကို
ေဆာင္ရြက္ေပးပါတယ္။
firewall ကို graphical နဲ႔ လြယ္ကူစြာ အသံုးျပဳႏိုင္သလို၊ command line ကေနလည္း အသံုးျပဳႏိုင္ပါတယ္။
ကဲ ! စလိုက္ရေအာင္။
#graphical_user_interface
terminal ထဲမွာ firewall-config လို႔ရိုက္ enter ေခါက္လိုက္ပါ။ ဒါဆိုရင္၊ main firewall confifuration screen
ပြင့္လာပါလိမ့္မယ္။
default အေနနဲ႔ zone မွာ public zone ကို သတ္မွတ္ထားေပးပါတယ္။ လက္ရွိ မိမိ active ျဖစ္ေနတဲ့ zone ေပါ့။
services ထဲမွာ မိမိ ဖြင့္ခ်င္တဲ့ service ေတြကို အမွန္ျခစ္ေပးရံုပါပဲ။ ပိတ္ထားခ်င္ရင္ အမွန္ျခစ္ ျဖဳတ္ေပးရံုေပါ့။
port ေတြကို ဖြင့္ပိတ္လုပ္ခ်င္ရင္ port ဆိုတဲ့ tab ကိုသြားၿပီး အမွန္ျခစ္တာ ျဖဳတ္တာေတြ ျပဳလုပ္ေပးရံုပါပဲ။
ၿပီးရင္ မိမိ ေျပာင္းလဲလိုက္တာကို permanent သတ္မွတ္ဖို႔ အတြက္ အေပၚ menu မွာ ရွိတဲ့ Options > Reload
Firewalld ကို ႏွိပ္ေပးလိုက္ပါ။
လြယ္ကူပါတယ္ေနာ္။
#command_line_interface
firewall-cmd --get-active-zones
၂။ မိမိ ဖြင့္ေစခ်င္တဲ့ service ေတြကို ေအာက္ပါအတိုင္း သတ္မွတ္ႏိုင္ပါတယ္။ ဥပမာ၊ public zone မွာ http, https, ftp
စတာေတြကို permanent ဖြင့္ေပးမယ္ ဆိုပါစို႔။
161 ဆိုတာ ဥပမာေပးထားတဲ့ port number ပါ။ protocol ေနရာမွာ port နဲ႔ သက္ဆိုင္တဲ့ protocol ကို
ထည့္ေပးရပါမယ္။
firewall-cmd --reload
၇။ firewall ကို restart လုပ္ခ်င္ရင္ေတာ့ systemctl restart firewalld လို႔ ရိုက္ enter ေခါက္ေပါ့။
linux မွတ္စု
linux မွာ တခ်ိဳ႔ကိစၥေတြကို configure ခ်ရာမွာ သူ႔ရဲ့ config file ထဲ ဝင္ျပင္ေပးရတဲ့ အခါမ်ိဳးေတြ ရွိပါတယ္။
၁။ linux machine ရဲ့ hostname ကို ျပင္ခ်င္တဲ့အခါ /etc/hostname မွာ ဝင္ေရာက္ ျပင္ဆင္ပါ။
၇။ ဘယ္ user သည္ ဘယ္ group မွာ ပါသလဲ သိခ်င္ရင္ /etc/gshadow မွာ ဝင္ၾကည့္ပါ။
၈။ normal user ကို wheel group ထဲ သြင္းတာေတာင္ sudo သံုးလို႔ မရေသးရင္ /etc/sudoers မွာ ဝင္ျပင္ပါ။
၁၀။ default permission ျဖစ္တဲ့ umask value ေတြကို ျပင္ဆင္လိုရင္ /etc/profile နဲ႔ /etc/bashrc မွာ ဝင္ျပင္ပါ။
၁၂။ ssh connection ကို အသစ္ create ျပန္လုပ္ခ်င္တဲ့အခါ ~/.ssh/known_hosts ကို ဖ်က္ေပးပါ။
၁၄။ rsyslog ေတြကို သီးျခား file တစ္ခုဆီ ညႊန္းခ်င္ရင္ /etc/rsyslog.d ေအာက္မွာ .conf file ေဆာက္ေပးပါ။
၁၅။ systemd-journal log ေတြကို မွတ္သားထားခ်င္ရင္ /var/log ေအာက္မွာ journal ဆိုၿပီး directory တစ္ခု
ေဆာက္ပါ။ ၄င္း directory ကို systemd-journal ဆိုတဲ့ group က ပိုင္ဆိုင္ေၾကာင္း chown root:systemd-journal
journal ; chmod g+s journal ဆိုတဲ့ command ၂ ခု နဲ႔ သတ္မွတ္ေပးပါ။
၁၉။ network time server နဲ႔ ခ်ိတ္ဖို႔ ip ထည့္ဖို႔ /etc/chrony.conf မွာ ဝင္ျပင္ပါ။
၂၀။ time နဲ႔ဆိုင္တာကို restart လုပ္ခ်င္ရင္ systemctl restart chronyd.service ကို သံုးပါ။
၂၃။ direct map file နဲ႔ indirect map file ကို /etc/auto.master.d ေအာက္မွာ ၀င္ေဆာက္ပါ။
၂၄။ firewall ကို ပိတ္ထားခ်င္ရင္ systemctl disable firewalld systemctl stop firewalld။
အားလံုးပဲ အဆင္ေျပပါေစ။
conclusion
ဘယ္အရာမွ ၿပီးျပည့္စံုတယ္လို႔ေတာ့ မရွိပါဘူး။
linux နဲ႔ ပတ္သက္တာေတြကို ပိုမို သိရွိေစဖို႔ internet, google search ကေန ရွာေဖြေလ့လာၾကပါလိ႔ု တိုက္တြန္းပါရေစ
ခင္ဗ်ာ။
https://www.facebook.com/xerocool.99
Mobile : 09778206233
Mobile : 09778206233
https://www.facebook.com/xerocool.99