A RENDSZER HALADÓ TELEPÍTÉSE ------------------------------------------------ A boot képernyőn F6-al válasszuk a "Szakértő módot" Az Ubuntu szerver telepítésénél válasszuk azt, hogy root-ként ne lehessen bejelentkezni - lásd lentebb, ha admin jelszó elfelejtődik. Az adminisztrátorok a saját felhazsnálónevükkel tevékenykedhetnek, "sudo" parancs kiadásával. Az Óra beállításánál ahnszáljuk az NTP-t szervernek: hu.pool.ntp.org Lemezek particionálásánál válasszuk a "Kézi" módot. A lemezek particionálásánál válasszuk a "GPT" particiókat, ez lehetővé teszi a 2TByte-nál nagyobb particiókat is. A GPT-nél nincs MBR, ezért minden használt lemezen hozzunk létre egy-egy 100MByte-os első particiót, aminek a hszanálata "Fenntartott BIOS boot terület" legyen, neve pedig legyen például "biosgrub". A többi partició már szabadon választott, érdemes egy particiót a rendszernek, és egyet vagy többet az adatoknak. Neveknek érdemes a "system" és "data"-t adni. Minden további partició használati módjánál a "Raid fizikai kötet"-et válasszuk. Arra is ügyeljünk, az adott konkrét fizikai lemezen létrehozott particók közül az utolsó létrehozott partició (és általában ez a legnagyobb terjedelmű) ne az összes maradék területet használja fel, hanem csak annak 99%-át. Ez arra jó, ha a fizikai lemez tönkremegy, és nem pont ugyanaz a márkájú, gyártótől származó lemezzel pótoljuk, nem biztos hogy az új lemez pont ugyanakora lesz... Ha csak 99%-ot használunk fel, bár lesz párszáz MB, vagy néhány GByte veszteség, de nem futink bele abba a problémába, hogy hogyan hozzunk létre pont ugyanakkora particiót az új lemezen, ami a RAID tömbe való beillesztéséhez pontosan kell...! A lemezek szétparticionálása után a particiókból hozzuk létre a RAID-et. RAID 1, vagy 5, 6, vagy 10 javasolt. Ha több lemezünk van, érdemes 1, vagy 2 tartalékdiszket is hagyni, ekkor lemezhiba esetén automatikusan átveszi a hibás lemez helyét a tartalék. Szoftveres RAID esetén a RAID egy kevésbé terheli a CPU-t, míg a RAID 5 és 6 jobban. Hardveres RAID esetén ezt még az installálás előtt állítjuk be. Rendszer számára elég 50GByte méret, a többi mehet majd az adatok számára (/home és /srv stb.) A GRUB számárta fentartot particiókat ne tegyük RAIDbe - mert arról nem tud bootolni a BIOS! Ha készen vannak a RAID-es particiók utána léphetünk tovább a logikai kötetek kialakításához, amellyel a rendszer különböző részeit tudjuk egymástól elkülöníteni. A létrehozáshoz előbb az adott RAID tömböt választva a használat típusánál adjuk meg azt, hogy "LVM fizikai kötet"-ként akarjuk használni az adott RAID tömböt. A logikai kötetet kialakítához az adott RAID tömbön létre kell hozni egy-egy LVM kötet csoportot is - amelyen belül majd a logikai köteteket létrehozhatjuk: Mindezt a "Logikaikötet-kezelő konfigurlása" menünél tudjuk majd elkészíteni, majd ezután a "Kötetcsoport létrehozása" menüponton. Az kötetcsoportok elnevezéseik ezek legyenek: "vg+szervernév+system" és "vg+szervernév+data" (pluszjelek nélkül!) Ha csak egy RAID tömbünk van, akkor mindkettőt ugyanazon a tömbön, értelemszerűen. Amit érdemes külön egy-egy logikai (LVM) (és nem RAID kötetre) kötetre elhelyezni egy 50 Gbyte méretűre tervezettrendszer partició esetén - "Logikai kötet létrehozása": ---rendszer----------- / (root) -- 4 GB, minden jog kell, 5% fenntartott, neve "root" /usr -- 5 GB, minden jog kell, 5% fenntartott, neve "usr" /var -- 2 GB, (nosuid; nodev), 5% fenntartott, neve "var" /var/log -- 2 GB, (nosuid; nodev; noexec), 10% fenntartott, neve "log" /var/tmp -- 1 GB, (nosuid; nodev; noexec), 5% fenntartott, neve "vartmp" /var/cache -- 4 GB, (nosuid; nodev; noexec), 5% fenntartott, neve "cache" /var/spool -- 2 GB, (nosuid, nodev; noexec), 5% fenntartott, neve "spool" /tmp -- 2 GB, (nosuid; nodev; noexec), 5% fenntartott, neve "tmp" /var/spool/postfix -- csak ha használsz postfix-et! Itt kell futtatási jog! swap -- 2-4 GB fizikai memóriától függően, de max 8 GB. "cserehely" típus! ---------------------- Ha van másik külön raid tömbünk is, akkor ezek ide (az ~50 GB rendszerméretbe ez nincs belekalkuláva!): ---adatok------------- /home -- 1 GB telepítéskor, és először a rendszer kötetcsoportban létrehozva opciók: (nosuid; nodev; noexec; usrquota; grpquota; user_xattr) admin futtatandó scripteket ne ide tedd, hanem /usr/bin/local -ba ha felhasználóknak mégis kell valami futtatási jog, akkor ne kapcsold be a "noexec"-et. Fenntartott terület: 1%. Neve: "home". /srv -- telepítéskor még nem állítottuk be. (itt is elég lesz az 1%) ---------------------- Miután készen vannak a logikai kötetcsoportok, akapott listában egyesével végigmenve beállíthatjuk a file-rendszer típusát, egyéb opciókat és neveket, és fenntartott helyet Alapban mindegyik "Ext4 naplózó filerendszer", kivéve a Swap-et, ami "cserehely" típus. A csatolási opcióknál megjegyzés: a "noatime" és "nodirtime" az időbélyegzők írása hozzáférés esetén mellőzi a filok-nál és directoryknál, ez SSD fizikai diszk esetén hasznos, kevesebb írás történik. A "sync" opció bekapcsolása azonnali írást eredményez, lassítja a lemezrendszert, de erre szükség lehet akkor, ha naplózásnál mindenképpen szükséges az, hoyg azonnal kiíródjon rendszerhiba (áramszünet) esetén is az adott naplóbejegyzés, ne legyen cache-elve a lemez I/O. Azaz minden I/O szinkron történik. "discard" - SSD esetén a TRIM-eléshez kell - normál lemez esetén ne használd. A "Jellemző használat"-on belül választhatunk: - normál: alapértelmezett, legtöbb remdszer esetén ez megfelelő - news: levelező szerverek esetén, ahol a levelek külön-külön, sok kis fileban vannak - largefile: ha a fileok túlnyomó többsége 200-500Mbyte méretű - largefile4: ha a fileok méree jellemzőena nagyobb mint 1-2Gbyte... Telepítés folytatása: kernel típusa: linux-generic Initrd file: minden elérhető meghajtót tartalmaz. Hálózati tükör használata: igen, HTTP Csomagkezelő beállítása: korlátozó csomagok elérhetők legyenek: IGEN -- Universe és Multiverse: igen, -- Backports: nem. Frissítések: security updates: igen (from security.ubuntu.com) Biztonsági frissítések automatikus telepítését választva ez után. Rendszeróra UTC szerintjár: igen. RAID ÉS FILERENDSZER KONFIGURÁLÁSA: ------------------------------------------------ cat /etc/mdadm/mdadm.conf -- a létrehozott és működő RAID tömböket mutatja (szoftveres RIAD!) cat /proc/mdstat -- kiírja az egyes RAID tömbök típusát, és a benne résztvevő diszkeket és állapotukat, a tartalék diszkeket is (S) jelöléssel sudo mdadm -Q /dev/md0 -- adott RAID tömb alapinformációi sudo mdadm -D /dev/md0 -- ugyanez, csak részletesebb információkkal (--detail) sudo dpkg-reconfigure mdadm -- az RAID menedzsment-kezelő újrakonfigurálása, telepítéskor alap beállításokkal került fel, ezen lehet változtatni (az alacsony priorítás beállítása kell, lásd a Csomagkezelőnél a "sudo dpkg-reconfigure debconf" parancsot!) :: első kérdés: havonta legyen-e redundancia ellenőrzés? --Igen (diszkterhelés lesz ekkor de a diszkhibák így azonnal kiderülnek!) :: második kérdés: MD monitoringa fusson-e a háttérben? --Igen. :: hova küldje a riasztáskor az e-mailt? --"root"-nak küldje. sudo pvcreate /dev/md1 -- az md1 (második) RAID tömbünk inicializálása LVM számára (formázza is!) (fizikai kötet létrehozása, használatra) sudo pvs -- listázza a fizikai köteteket, PVnév/VGnév/(formátum)/méret/szabad hely A szabad hely itt azt jelenti, ami még nincs valamelyik logikai kötethez még hozzárendelve... :::: meridian@tesztszerver:~$ sudo pvs :::: PV VG Fmt Attr PSize PFree /dev/md0 vgtesztszerversystem lvm2 a-- 18,61g 7,43g /dev/md1 vgtesztszerverdata lvm2 a-- 42,10g 42,10g :::: :::: sudo vgcreate vgtesztszerverdata /dev/md1 -- Csoportkötet (VolumeGroup, VG) létrehozása, paraméterei csoportkötet név és melyik fizikai köteten (/dev/mdXX). több fizikai kötet is tartozhat egy VG-hez, fel kell sorolni. sudo vgs -- információk a létező csoportkötetetkről (VG-kről) :::: meridian@tesztszerver:~$ sudo vgs :::: VG #PV #LV #SN Attr VSize VFree vgtesztszerverdata 1 0 0 wz--n- 42,10g 42,10g vgtesztszerversystem 1 10 0 wz--n- 18,61g 7,43g :::: :::: sudo lvcreate -n srv -L 2G vgtesztszerverdata -- egy 2 GByte méretű logikai kötét létrehozása egy kötetcsoportban (itt: vgtesztszerverdata -ban), "srv" névvel sudo lvs -- a létrehozott LVM-ek (logikai kötetek) listázása: :::: meridian@tesztszerver:~$ sudo lvs :::: LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert srv vgtesztszerverdata -wi-a---- 2,00g cache vgtesztszerversystem -wi-ao--- 1,86g home vgtesztszerversystem -wi-ao--- 952,00m log vgtesztszerversystem -wi-ao--- 952,00m root vgtesztszerversystem -wi-ao--- 1,86g spool vgtesztszerversystem -wi-ao--- 952,00m swap vgtesztszerversystem -wi-ao--- 952,00m tmp vgtesztszerversystem -wi-ao--- 488,00m usr vgtesztszerversystem -wi-ao--- 1,86g var vgtesztszerversystem -wi-ao--- 952,00m vartmp vgtesztszerversystem -wi-ao--- 488,00m :::: :::: ls -lh /dev/vgtesztszerverdata/ -- az általam létrehozott logikai kötetcsoporton belüli simlinkjei ls -lh /dev/mapper/ -- minden LVM listázása sudo mkfs.ext4 -L srv /dev/vgtesztszerverdata/srv -- az előbb létrehozott "../srv" LVM ext4 naplózó filerendszerrel való formázása, és "srv" névvel (címke) ellátása. Mivel külön nem adtuk meg 5% fenntartott blokk lesz. sudo tune2fs -l /dev/vgtesztszerverdata/srv -- az adott LVM filerendszerének a jellemzőinek megtekintése :: Reserved block count: -- ez muttaja a fenntartott blokkok számát (az "5%"...) sudo tune2fs -m 1 /dev/vgtesztszerverdata/srv -- a fenntartott blokkok 1%-ra való beállítása (csak unoumtolt VL esetén) less /etc/mke2fs.conf -- a filerendszerek felhasználási módok alapértelmezett beállításait tartalmazza (normál használat, news, largefile, largefile4) (ez már nagyon "mélyvíz") sudo nano /etc/fstab -- a bootolás után automatikusan felcsatolandó filerendszerek listájának szerkesztése (itt a csatolási opciókat mint pl noexec, nosuid, stb is beállíthatjuk.) A /home -nál itt tudjuk még külön hozzáadni az "acl" opciót, windowsos környezethez! :: # /dev/mapper/vgtesztszerversystem-home /home ext4 nodev,nosuid,noexec,usrquota,grpquota,user_xattr,acl 0 2 /dev/mapper/vgtesztszerverdata-srv /srv ext4 nodev,nosuid,noexec,acl 0 2 :: sudo mount -a -- minden ami az előbbi "fstab"-ben szerepel, azt csaoltja fel (ami már fel van, azzal nem foglalkozik) sudo mount -o remount,acl /home -- a /home újracsatolása, a hiányzó ACL módosítás érvényre juttatása (futás közben, szerver újraindítása nélkül...) sudo vgcfgbackup -- a változtatások elmentése, backupolása. Amikor változtatunk, végül ezzel zárjuk lea változásokat. sudo lvextend -L +1G /dev/vgtesztszerverdata/srv -- az /srv logikai kötetének kapacitásának futtás közbeni növelése pl +1 Gbyte-tal sudo sudo resize2fs /dev/vgtesztszerverdata/srv -- az összes rendelekezésre álló terület kihasználása (a növelés után) (csökkentés unmountolva lehet, és meg kell adni mekkora legyen az új méret) EGYÉB PARANCSOK: ------------------------------------------------ sudo -- rendszergazdaként végrehajtandó parancs sudo -s -- folyamatos root promt használata cd [path] -- belépni ls -l -- file-ok listázása ls -la -- file-ok listázasa tulajjal/csoporttal együtt mkdir [/directory name] -- könyvtár létrehozása rm -- file vagy könyvtár törlése rm -f -- könyvtár törlése a tartalmával együtt touch [filenév] -- új file létrehozása "filenév"-vel cp -- file másolás, copy nano -- egyszerű szövegszerksztő dmesg -- rendszerinformációk lekérdezése grep -i valami -- a VALAMI szövegrészlet kis/karakter érzéketlen kiszűrése text-file-ból :: dmesg | grep -i eth -- példa: hálózati csatolók állapotának kilistázása reboot -- rendszer újraindítása halt -- rendszer leállítása (csak root tudja kiadni) exit -- logout, kilépés clear -- képernyő törlése df -h -- diskek és particíók kilistázása USER/CSOPORT létrehozása, JOGOSULTSÁGOK: ------------------------------------------------ useradd -d -- user hozzáadása jelszó nélkül useradd -m [username] /path -- [username] user létrehozása valamilyen "home" könyvtárral userdel -r -- user törlése "home" könyvtárával együtt passwd [username] -- jelszó beállítása a [username]-hoz adduser [username] -- részletes user hozzáadás groupadd [groupname] -- csoport létrehozása nano /etc/group -- csoport tagság listái usermod -a -G [groupname] [username] -- a [username] nevű user hozzáadása a [groupname] nevű csoporthoz chmod -R 0999 [/path/filename, /directory name] -- user jogosultság beállítása chgrp [groupname] [/path] -- filejogosultságnál a csoport kicserélése [groupname]-ra chown [user] [/path] -- a file tulajdonos kicserélése [user]-re CSOMAGKEZELŐ: ------------------------------------------------ apt-get update -- a csomagkezelő listájának up-to-date állapotra hozása apt-get upgrade -- rendszer frissítése apt-get dist-upgrade -- a teljes rendszert frissít (beleértve a kernelt is) apt-cache search mintaszó -- a csomagadatbázis leírásaiban egy mintaszóra keresés apt-cache search midnight | grep -i "midnight" -- nagyon leszűkített keresés... apt-cache policy csomag-név -- a telepített csomag verziószámaát, elérhető újabb verzió és egyéb kapcsolódó tulajdonságokat írja ki apt-cache policy linux-generic -- a telepített linux kernel verziószáma, neve és van-e újabb apt-get install linux-generic=3.13.0.24.28 -- előző listából kiválasztott linux kernel VERZIÓ(szám) telepítése minden más csomagra és programra is ugyanígy műxik nano /var/lib/dpkg/available -- elérhető csomagok, szolgáltatások nano /var/lib/dpkg/status -- a telepített csomagok bejegyzései, adatai ide beírásra kerülnek apt-get show csomagnév -- adott (telepítendő) csomag információinak lekérése apt-get show mc -- Midnight Commander aktuális legfrissebb csomagjának információi, leírása apt-get install mc ssh -- Midnight Commander és SSH telepítése apt-get install ssmtp -- mailküldő szolgáltatás telepítése (naplózáshoz pl.) apt-get install heirloom-mailx -- parancssor a levélküldő szolgáltatáshoz apt-get install monit -- egyszerű szerver monitorozó program apt-get install samba -- Samba telepítése apt-get install isc-dhcp-server -- isc-dhcp-server telepítése apt-get install smbfs -- linux alá a samba megosztások elérése apt-get install vsftpd -- ftp szerver telepítése apt-get remove mc -- MC eltávolítása (uninstall) apt-get autoremove mc -- az MC és az ehhez függő csomagokat is eltávolítja apt-get purge mc -- MC és ennek a konfig file-jainak együttes eltávolítása apt-get --purge autoremove -- fennmaradt függő csomagok eltávítása, és a konfig file-ok törlése ls -l /var/cache/apt/archives -- a letöltött és telepített csomagok, ezek itt maradnak település után is apt-get autoclean -- a régebbi, már nem aktuális telepítőcsomagok eltávolítása apt-get clean -- a /var/cache/apt/archives könyvtár TELJES kitakarítása /etc/apt/sources.list -- ez a file tartalmazza a csomagok tárolóit (internetes és helyi bejegyzések) /etc/apt/sources.list.d -- ide lehet betenni A SAJÁT(!) tároló helyeket, ahonnan update kereshető /etc/apt/apt.conf.d/20auto-upgrades -- itt lehet beállítani az automata frissítést (alapért) vagy kikapcsolni :: APT::Periodic::Update-Package-Lists "1"; -- automatikusan frissítse a csomaglistát - (1) érték esetén APT::Periodic::Unattended-Upgrade "1"; -- fusson az "unattandent upgrade" is - (1) érték esetén /etc/apt/apt.conf.d/50unattended-upgrades -- ez fut le ha a előbbi fileban a Unattended = 1 ez itt finomhangolható - lásd itt lentebb: :: // Automatically upgrade packages from these (origin:archive) pairs -- automatikusan frissitse az alábbiakat Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; -- biztonsági frissítések fussanak le // "${distro_id}:${distro_codename}-updates"; -- normál frissítések kikommentelve (kapcsold be, ha kell) // "${distro_id}:${distro_codename}-proposed"; -- ez éles szerveren nem javasolt (alapértelmezett) // "${distro_id}:${distro_codename}-backports"; -- egyáltalán nem javasolt éles szerverre - csak tesztelve! }; // List of packages to not update (regexp are supported) -- feketelista, amely csomagnév itt szerepel, azt nem Unattended-Upgrade::Package-Blacklist { -- frissíti sohasem. Kézzel persze lehet frissíteni. // "vim"; // "libc6"; // "libc6-dev"; // "libc6-i686"; }; :: //Unattended-Upgrade::AutoFixInterruptedDpkg "false"; -- a nagyon ritkán karbantartott rendszerekhez a full automata frissítés ki/bekapcsolása (kikommentelve alapértelmezettként - ilyenkor ez nincs) ha valami hiba történik, megpróbálja automatikusan kijavítani, az alábbi paranccsal: " dpkg --force-confold --configure -a " :: //Unattended-Upgrade::MinimalSteps "true"; -- minden egyes frissítésnél a csomagokat egyesével frissíti, külön-külön, a következőt csak akkor ha az előző már iskeres volt. ezzel a hibalehetőségeket próbálja automatikusan kizárni. lassú lesz a frissítés, de hiba esetén csak egy dolog hibásodik meg. Automatikus frissítésnél erőssen javasolt dolog bekapcsolni! (mivel éjjel nem látod mi történik, így kevesebb hiba fogad reggel) :: //Unattended-Upgrade::InstallOnShutdown "true"; -- ez inkább a DESKTOP oprendszerekre való. Amikro leállítja a gépet előbb frissíti. :: //Unattended-Upgrade::Mail "root"; -- a frissítések után automata értesítő e-mail küldése, és kinek küldje. "" között felhasználót vagy e-mailcímet lehet megadni. Célszerű a rootnak küldeni, és átirányítani a neki szánt leveleket az ssmtp-vel - lásd lentebb ha ez a gép nem MAIL szerver, akkor az "ssmtp" csomagot célszerű telepíteni, és saját biztosan működő smtp szervert megadni a küldő szerverhez. :: //Unattended-Upgrade::MailOnlyOnError "true"; -- csak akkor küld levelet, ha valami hiba történt... ez nem javasolt :: //Unattended-Upgrade::Remove-Unused-Dependencies "false"; -- "autoremove" opció bekapcsolása a frissítésekhez, de nem javasolt a bekapcsolása :: //Unattended-Upgrade::Automatic-Reboot "false"; -- automatikus újraindulás, szintén nem javasolt... csak ha nagyon magára hagyott rendszerek setén javasolt... inkább az értesítő e-mail és ha kell, kézzel újraindítani, amikor lehet... :: //Acquire::http::Dl-Limit "70"; -- sávszéálesség limitálása a frissítések letöltésekor. ls -lh /var/log/apt/ -- frissítésekről a naplófile-ok. ("history.log" és "term.log") sudo dpkg-reconfigure debconf -- debconf konfigurálása (a csomagok telepítése közben itt lehet azt bekapcsolni, hogy telepítés közben amit szükséges, konfigurálja telepítés közben (pl ssmtp telepítéséhez javasolt) Ezt itt érdemes "Párbeszédes" és azon belül "Alacsony" opcióra átállítani, így mindent meg fog kérdezni kézi telepítés alkalmával az adott csomagnál... sudo dpkg-reconfigure ssmtp -- a korábban telepített (és automatán semmit be nem állított) ssmtp csomag újrabeállítása -- meridian@teszthalozat.lan - kinek legyen küldve mivel még nincs mailszerverem (én most a meridian@freemail.hu-ra küldök) -- smarthost.teszthalozat.lan - melyik szerverrel küldjön (most: mail.t-online.hu) -- 587-es port (25-ös helyett ez a port a "submission" port - ezt nem szűrik a szolgáltatók!) -- teszthalozat.lan - a feladó domainje (most csak "freemail.hu) -- tesztszerver.teszthalozat.lan (ki küldi? itt a konkrét hostname, szerver neve legyen) nano /etc/ssmtp/ssmtp.conf -- további beállítások az egyszerű e-mail elküldéshez :: # NO - Use the system generated From: address FromLineOverride=NO UseSTARTTLS=YES -- ha kell TLS akkor így lehet beállítani AuthUser=valamiuser -- küldő szerver authenikácójának felhazsnálói neve AuthPass=titok -- jelszó hozzá AuthMethod=LOGIN -- authentikáció módja (lehet még CRAM-MD5) mail -v meridian@freemail.hu -- eggy teszt levélküldés a korábban telepített heirloom-mailx parancssorral (a levél készítésének befejezése ENTER majd . majd ENTER) a küldés során minden lépés listázára kerül, a "-v" paraméter miatt SZOLGÁLTATÁSOK ÚJRAINDÍTÁSA: ------------------------------------------------ service ssh restart -- ssh service újraindítása service ssmtp restart -- ssmtp újraindít service smb restart -- samba újraindítása service isc-dhcp-server restart -- dhcp szerver újraindítása service vsftpd restart -- vsftpd szerver újraindítása GRUB KEZELÉSE (pl többdiszkes környezetben) ------------------------------------------------ sudo grub-install /dev/sda -- GRUB telepítése az első fizikai diszk vagy MBR vagy erre célra fenntartott particíójára (normál esetben itt már telepítve van) sudo grub-install /dev/sdb -- a GRUB teelpítése (átmásolja) a második fizikai diszkre sudo grub-install /dev/sdc -- harmadik diszkre sudo grub-install /dev/sdd -- és így tovább... erre akkor is szükség van, ha a GRUB frissül, ekkor csak az első lemezen frissül, a többit ezzel lehet átvinni /etc/default/ -- itt a "grub" és "grub.d" file található többek között /etc/grub.d/ -- grub konfigmenü template-ek, amik alapján a grubb menüje elkészül /boot/grub/grub.cfg -- a konkrét grub menü ebbe a file-ba kerül beírásra - ne szerkeszd kézzel! sudo update-grub -- ha bármit szerkesztettünk, ezzel tudjuk újragenerálni az előbbi grub.cfg-t sudo /etc/default/grub -- grub configurációjának szerkesztése :: GRUB_DEFAULT=0 -- a legelső elérhető kernel boot-olása (alapértelmezett) #GRUB_HIDDEN_TIMEOUT=0 -- servernél kikommentelve, desktopnál viszont beállítva desktopnál 0 érték esetén azonnal továbbugrik a grub menűről... GRUB_TIMEOUT=2 -- a bootképernyő 2 másodpercig látható, utána az alapértelmeztt választás (grub_default értéke alapján) indul el GRUB_CMDLINE_LINUX="" -- extra parancsok, paraméterek megadása a rendszer indításhoz :: #GRUB_DISABLE_LINUX_UUID=true -- a linux rndszer UUID-val indul el (szükség esetén), alapban kikommentelve, alapban nincs rá szükség :: #GRUB_DISABLE_RECOVERY="true" -- alap telepítés után van egy alap recovery mód, ha ez a sor ki van kommentelve (így alapértelmezett, nem érdemes kikapcsolni) (hibás bootolás, vagy elfelejtett root jelszó visszaszerzéséhez ez kell) ls -lh /boot/ -- itt vannak a kernel file-ok, initrd.img-file (induló driverek) sudo update-initramfs -k 3.13.0-24-generic -u -- az initrd.img file az adott kernelhez való frissítése KÉZZEL... sudo update-initramfs -k all -u -- ugyanez a frissítés, de mindenhez (ritkán van erre szükség) sudo update-initramfs -k 3.13.0-24-generic -c -- nem update, hanem ha valami hiányzik, akkor pótolja az adott verzió szerint AZ ADMINISZTÁROR elfelejtette a jelszavát: ------------------------------------------------ a szervert újraindulásakor a GRUB menüben a 2. menüt választva indulni (Advanced options for Ubuntu) ezután ismét a második menüpont (recovery mode)-tal bootolni. ekkor egy menürendszer jön elő (hasonló a telepítő felületéhez, sok lehetőséggel) itt a "root Drop to root shell prompt" menüt választva a "root" felhasználóval kapsz egy parancssort. Mivel a root az "root", tudsz vele felhasználóknak jelszót változtatni, így az admin userekét is. megjegyzés: ~~~~~~~~~~~ A root jelszó nélkül csak akkor érhető el így, ha telepítéskor a szerveren nem engedélyezted a root-al való bejelentkezést. A root-nak is tudsz itt jelszót adni, de ekkro érvényét veszti az előbbi beállítás, azaz inenntől kezdve tudsz rootként is bejelentkezni normál módon a szerverre... és itt is csak jelszó hazsnálatával kapsz parancssort ha ezt a jelszót is elfejeted, akkor "fejlövés"... viszont értelemszerűen emiatt biztosítani kell azt, hogy a szerverjez fizikailag csak jogosult személyek férhessenek hozzá. Belépéskor csak a gyökér file-rendszert csatolja fel, semmi többet, nem mellesleg csak olvasási joggal cat /proc/mounts -- ez mutatja mi lett felcsatolva és hogyan Mivel csak olvasási jog van, ezért a passwd sem működik, mert nem tudja a userek adatait sem írni ezért mindent újra kell csatolni. mount -o remount,rw / -- A "/"-et (gyökér könyvtárat) újracsatolja, már "rw" azaz írás/olvasási joggal. mount /usr -- a "passwd" parancs a /usr/bin -ben van, ezért még azt is csatolni kell. (ez utóbbi csak akkor érvényes, ha külön (lásd LVM) logikai köteten van az /usr ) ezután már lehet hazsnálni a "passwd" parancsot a szokásos módon. Végezve, unmountolni is célszerű: unmount /usr -- /usr lecsatolása mount -o remount,ro / -- gyökér könyvtár olvasási joggal újracsatolása exit -- visszalépés az indító menüre (itt majd nem lehet újraindítani a rendszert!) reboot -- a rendszer újraindítása HÁLÓZAT BEÁLLÍTÁSA: ------------------------------------------------- dmesg | grep -i eth -- lista a hálókártyák beállításáról netstat -nr -- hálózatok, routing table, gateway lista nano /etc/resolv.conf -- DNS szerverek szerkesztése :: nameserver [IP cím] -- formátumban lehet megadni nano /etc/network/interfaces -- hálókártyák konfigurációja :: allow-hotplug eth0 eth1 -- fizikai csatolók engedélyezése :: iface eth0 inet dhcp -- adott (eth0) csatolóhoz DHCP osszon IP-t static -- adott (itt az eth0) csatolót kézzel állítjuk be address [IPcím] -- IP cím netmask [x.x.x.0] -- alhálózati maszk gateway [IPcím] -- alapértelmezett átjáró ifconfig eth0 -- eth0 állapotának kiiratása ifconfig eth0 down -- eth0 leállítása up -- eth0 elindítása dhclient eth1 -- eth1 DHCP kérése SSH BEÁLLÍTÁSA: ---------------------------------------------------- nano /etc/ssh/sshd_config -- ssh konfigfile szerkesztése :: port 22 -- SSH a 22-es porton való bengedése :: PermitRootLogin: no -- root-al való távoli belépés tiltása :: AllowUsers user1 user2 stb -- ssh-val való belépés engedése a felsorolt felhasználóknak EGYSZERŰ SZERVER MONITORING - MONIT programmal: ----------------------------------------------------- sudo nano /etc/monit/monitrc -- monit program konfig file-ja :: set daemon 120 -- az ellenőrzés ennyi másodpercenként történik :: set logfile /var/log/monit.log -- naplózás helye :: include /etc/monit/conf.d/* -- itt lehet saját konfiggal kiegészíteni az alap konfig file-ját monit -H /usr/sbin/rsyslogd -- egy adott file checksum ellenőrző összegének kiszámítása, kiírása jelen esetben a "rsyslogd" file checksum-ját számolja ki... SHA1 és MD5 értékeket írja ki. sudo touch /etc/monit/conf.d/local.conf -- új local.conf létrehozása, amibe az alábbiakat írjuk majd bele: ------ http://www.taxierden.hu/monit-local.conf.txt sudo monit -t -- a monit konfig file-jának letesztelése sudo service monit restart -- konfig file elkészülte után restart sudo tail -f /var/log/monit.log -- a "monit" működésének naplófile-jának megnézése sudo monit summary -- általános összefoglalás a rendszer állapotáról egy kis magyarázat: :::: levélküldés beállítása - egyedileg konfigurálandó! :::: set mailserver sajátlevelezőszerver-neve port 587 -- szerver neve és portja (submission port: 587) #username felhazsnálóinév password jelszó -- authentikációhoz szükséges user/passw using TLSV1 -- titkosítás módja, ha van with timeout 90 seconds -- timeout using hostname "tesztszerver.teszthalozat.lan" -- felügyelt szerverünk neve set mail-format { -- a küldendő levél formátuma from: monit@$HOST subject: monit alert -- $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Host: $HOST Description: $DESCRIPTION Your faithful employee, Monit } set alert meridian@freemail.hu # minden riasztás megy ide -- minden riasztást ide küld #set alert xxx@xxx.hu only on { timeout } # csak a timeout problĂ©mákrĂłl megy ide riasztás :::: :::: MONIT saját WEBSZERVERE, távolról ránézhetsz erre így - router mögött megfelelő port forward! :::: set httpd port 2812 and -- gyárilag a HTTPD porton figyel use address 192.168.200.10 -- melyik IP-n figyeljen, alapértelmezett: 127.0.0.1 #ssl enable -- ha HTTPS-en keresztül akarnád elérni ezek kellenek #pemfile /etc/monit/https.pem -- tanúsítvány kell a https-hez allow localhost -- honnan lehessen belépni allow 192.168.200.10/24 allow monitadmin:nemtudom -- authentikáció egyszerú user/passw-el #allow @adm -- ha linux PAM auth módszerrel lépsz be, az "adm" csoport tagjai jogosultak" #allow md5 /etc/monit/passwd -- ha nem eygserű, hanem titkosított jelszóval lépsz be, itt keresse #allow operator:titok read-only -- csak lekérdezhetsz, parancsokat már nem adhatsz ki a "Monit"-nak :::: :::: ######### Ellenőrzések ## Helyi erőforrások -- szerver és program terhelések, egyedileg finomhangolandó! check system tesztszerver.teszthalozat.hu if loadavg (1min) > 4 then alert if loadavg (5min) > 2 then alert if memory usage > 75% then alert if swap usage > 25% then alert if cpu usage (user) > 70% then alert if cpu usage (system) > 30% then alert if cpu usage (wait) > 20% then alert check filesystem rootfs with path /dev/mapper/vgtesztszerversystem-root -- filerendszer ellenőrzése if failed permission 0660 then unmonitor -- ha nem 0660 a jogosultság, akkor valami történt... if failed uid root then unmonitor és a monitorozás felfüggesztése if failed gid disk then unmonitor if space usage > 80% for 5 times within 15 cycles then alert -- ha a használt terület több mint 80%, legalább 15 ellenőrzés során keresztül, akkor riasztás :::: további infók: http://mmonit.com/monit/documentation/monit.html#connection_testing ----monithoz külső user/passw hitelesítéésel való hazsnálati jog beállítása--------- apt-get install apache2-utils -- user/pass hitelesítő program telkepítése (http-n keresztül --- htpasswd) htpassw -cm /etc/monit/passwd admin -- új jelszó tároló file létrehozása, és az admin nevű felhazsnáló hozzáadása :: root@tesztszerver:~# cat /etc/monit/passwd -- megnézzük mit hoztunk létre :) admin:$apr1$3etqr.vV$SYo9VfY55/m2JT9gIl.BY1 -- ezt. admin user és az MD5-ös jelszava htpassw -m /etc/monit/passwd admin -- jelszó módosítása (vagy admin helyett mást írva, új user hozzáadása) chown root.root /etc/monit/passwd -- a file tulajdonosa a root-é legyen chmod 600 /etc/monit/passwd -- hozzáférési jogosultság beállítása SAMBA BEÁLLÍTÁSA: ----------------------------------------------------- touch /etc/samba/smb.conf -- egy úja samba konfigurációs file létrehozása (az eredetit előbb törölni kell!) nano /etc/samba/smb.conf -- samba konfigurációs file-jának szerkesztése smbstatus -- Samba működésének lekérdezése, pl. kik vannak bejelentkezve? testparm -- smb konfig file tesztelése ..#### smb.conf file TARTALMA ####.. [global] # global netbios name = SRV-SAMBA-01 # szerver neve ami a winfos hálózaton látszódik server string = Samba-szerver %V # Samba szerver verziószáma, szintén a commentben látszódik workgroup = munkacsoport # munkacsoport alapú megosztás interfaces = eth1 lo # eth1 fizikai csatolón érhető el bind interfaces only = yes # kényszerítse az előbbinek security = user # user alapú, aza csak felhasználók hazsnálhatják [homes] comment = "Sajat konyvtarad" # a saját könyvtár kommentje valid users = %S # csak érvényes felhasználók láthassák writeable = yes # írás/olvasás a saját könyvtárra browseable = no # más könyvtárát ne olvashassa, ne láthassa [adat] # egy "ADAT" nevű könyvtár beállítása a SAMBA-n comment = "Adatok" # a megosztott könyvtár, mappa kommentje path = /adat # elérési útvonala a megosztásnak read only = yes # mindenki számára csak olvasható write list = user1 user2 user3 # felsorolt userek írhatják is browseable = yes # a könyvtárak listázhatóak create mask = 0755 # felhasználói jogosultságok directory mask = 0755 # könyvtár jogogultságok force group = rendszergazda # a csoportjogosultságot a "rendszergazda" nevű csoportnak kényszerítjük ki veto files = /*.avi /*.mp3 # tiltott kiterjesztésű file-ok felsorolása ..#### SAMBA userek beállítása ####.. smbpasswd -a [user] -- SAMBA alatt az 'user' nevű felhasználó password-jének beállítása ..#### linux alatti samba megosztáso csatolása ####.. mount -t smbfs -o username=user1, password=jelszo //192.168.1.1/adat /mnt -- a 192.168.1.1 IP-n lévő szerver "adat" nevű megosztás becsatolása a /mnt könyvtárba DHCP SZERVER BEÁLLÍTÁSA: --------------------------------------------------------- nano /etc/default/isc-dhcp-server -- dhcp alap konfig file szerkesztése INTERFACES = "eth1" -- eth1 fizikai csatolón szórja és fogadja a kérelmeket nano /etc/dhcp/dhcpd.conf -- dhcp konfig file szerkesztése (az eredeti file tartalmának módosítása) # ddns-update-style none; ---- ezt a sort kikommentelni # option domain-name "prefetch.net"; ---- ezt a sort kikommentelni option domain-name-servers 8.8.8.8; -- google name-szerverét hazsnáljuk DNS1-nek (pontos-vesszők zárják a sort) option routers 192.168.1.1; -- alapértelmezett átjáró legyen 192.168.1.1 option subnet-mask 255.255.255.0; -- alapértelmezett alhálózati maszk option broadcast-address 192.168.1.255; -- broadcast cím (nem kötelező megadni) # log-facility local7; ---- ezt a sort kikommentelni, egyébként a log-file lenne ..... # This is a very basic subnet declaration .... --ezt a bejegyzést keresni és alatta az alábbiak. subnet 192.168.1.0 netmask 255.255.255.0 { -- 192.168.1.0/24 hálózat beállítása range 192.168.1.100 192.168.1.200; -- 192.168.1.100-200-ig az IP címek osztása option subnet-mask 255.255.255.0; -- klienseken az alhálózati maszk 255.255.255.0 option broadcast-address 192.168.1.255; -- broadcastcím ezen a hláózaton option routers 192.168.1.1; -- az alapértelmezett átjáró beállítása ezen a hálózaton } ---- scoope-ok beállításának vége FTP SZERVER BEÁLLÍTÁSA: ----------------------------------------------------------- nano /etc/vsftpd.conf LISTEN = yes -- yes = működjön, no = ne működjön # anonymous_enable = yes -- anonim bejelentkezés local_enable = yes local_umask=022 -- jogosultság use_localtime = yes -- helyi idő megjelenítése write_enable = yes -- írási jog connect_from_port_20 = yes -- ftp 20-as port engedélyezése xferlog_enable = yes -- naplózás xferlog_file = /var/log/vsftpd.log dirmessage_enable = yes idle_session_timeout = 600 -- üresjárati idő maximuma ascii_download_enable = yes ascii_upload_enable = yes ftpd_banner = Welcome to blah FTP service. chroot_local_user = yes -- NE lehessen az egész szerver root könyvtártartalmát is olvasni chroot_list_file = /etc/vsftpd secure_chroot_dir = /var/run/vsftpd/empty # pam_service_name = vsftpd # rsa_cert_file = /etc/ssl/private/vsftpd.pem pasv_enable = yes pasv_min_port = 40000 pasv_max_port = 50000 pasv_address = 192.168.1.1 INTERNET MEGOSZTÁS A LINUX SZERVEREN: ------------------------------------------------------------ touch /root/firewall.sh -- ezt a file-t (firewall.sh) magunk készítjük a /root könyvtárba nano /root/firewall.sh -- szerkesszük echo "1" > /proc/sys/net/ipv4/ip_forward -- írjuk bele ezt 2 a sort, majd mentsük el iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE chmod +x /root/firewall.sh -- futtathatóvá tétele nano /etc/rc.local -- ezt a file-t is szerkeszteni kell sh /root/firewall.sh -- és ezt a 2 sort beleírni exit 0 -- ezt is, majd mentsük el cd /etc ---- a szabály elindítása ./rc.local **** config file-ok leszedése WINSCP-vel: ---------------------------------------------------------------- fdisk -l > diszkek.txt -- lemezinformációs adatok lementése diszkek.txt-be df -h > particiok.txt -- particiók méreteinek mentése particiok.txt-be nano /etc/fstab -- hová vannak mountolva du -h /home > home.txt -- home könyvtár tartalma dmesg | grep -i eth > network.txt -- hálózati csatolók állapota egy "network.txt" nevű file-ba cp /etc/network/interfaces [/path] -- hálózati csatolók konfigja (file másolása) cp /etc/ssh/sshd_config [/path] -- ssh konfig file másolása cp /etc/smb/smb.conf [/path] -- samba szerver config file másolása ----------------------------------------------------------------- jogosultságok: tulajdonos // csoport // mások read=4 write=2 execute=1 mindenjog=7 olvas+végrehajt=5 stb ##### Első lap VONAL húzás:
TÁBLÁZAT PÉLDA: Táblázat
Árlista
Zöldségek Répa 10
Retek 50
Mogyoró 20
Gyümölcs Alma 9
Szilva 70
Táblázat
Árlista
Zöldségek Répa 10
Retek 50
Mogyoró 20
Gyümölcs Alma 9
Szilva 70
Új ablakban való megnyitás link esetén: -------------------------------------- Go to Yahoo Kép alapú link: ------------------- E-MAIL: ------------------- Email Me Email Me XML shema: ------------------- Matrix Keanu Reeves Laurence Fishburne Csinibaba Gálvölgyi János Tímár Péter ############# package GDF_gyak_orai; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; import java.util.List; // "felhasználó", mint adat objektum class User implements Serializable { private String nev; private String passwd; User(String nev, String passwd) { this.nev = nev; this.passwd = passwd; } public String getNev() { return nev; } public String getPasswd() { return passwd; } @Override public String toString() { return nev +" : "+ passwd; } } // User class end public class VizsgaFeladat { // alap változók private static final String SEPARATOR = "------------------------------"; private static List name = new ArrayList<>(); private static List password = new ArrayList<>(); private static List userList = new ArrayList<>(); private static File file = new File("emberek.dat"); /** * METÓDUSOK -- a vizsgafeladatban meghatározott feladatok szerint */ // --> alapbeállítások induláskor protected static void init() { // List Nev = new ArrayList<>(); name.add("Szabó"); name.add("Kis"); name.add("Nagy"); name.add("Szász"); // List Password = new ArrayList<>(); password.add("alma"); password.add("barack"); password.add("dinnye"); // List userLista = new ArrayList<>(); } // --> Felhasználók legenerálása a userListába protected static void generate() { for (int i = 0; i < 10; i++) { String nm = (String)name.get ((int)(Math.random() * 4)); String pw = (String)password.get((int)(Math.random() * 3)); userList.add(new User(nm, pw)); } } // --> Userek kiírása fáljba protected static void write2file() { try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file)); for (User user : userList) oos.writeObject(user); oos.close(); System.out.println("A " + file.getAbsolutePath() + " állományba a User lista kiíródott"); } catch(IOException e) { System.out.println("Nem tudtam létrehozni a file-t!\n" + e.getMessage()); } } // --> Generált felhasználók kilistázása a konzolra protected static void list2console() { System.out.println("Név : Password"); for (User user : userList) System.out.println(user.toString()); } // --> File-ból beolvasás protected static void read2list() { try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file)); for (int i = 1; i <= 10; i++) userList.add((User)ois.readObject()); ois.close(); System.out.println("A " + file.getAbsolutePath() +" állomány be lett olvasva"); } catch(ClassNotFoundException e) { System.out.println("Hibás osztály!"); } catch(IOException e) { System.out.println("I/O hiba: " + e.getMessage()); } } // --> Ha egy jelszó többször is szerepel, azt kiírjuk protected static void showMultiplePwd() { System.out.println("A következő jelszavakat osztottok ki többször:"); for (String pass : password) { int count = 0; for (User user : userList) { if(count < 2) { if(user.getPasswd().equals(pass)) count++; } else { System.out.println("- " + pass); break; } } } } // --> Melyik jelszó nem lett kiosztva? protected static void wichPwdOut() { System.out.println("A következő jelszókat használtuk:"); for (User user : userList) { String pwd = user.getPasswd(); if(password.contains(pwd)) { password.remove(pwd); System.out.println("- " + pwd +","); } } if (password.size() > 0) { System.out.println("de a következő " + (password.size() > 1 ? "jelszavak nem lettek" : "jelszó nem lett") + " felhasználva:"); for (String pwd : password) System.out.println("- " + pwd); } else System.out.println("és így minden jelszó fel lett használva!"); } /** * A program indítása */ // --> MAIN program public static void main(String[] args) { init(); generate(); write2file(); System.out.println(SEPARATOR); list2console(); System.out.println(SEPARATOR); userList.clear(); // userLista törlése read2list(); // az üres lista feltöltése a file-ból visszaolvasással System.out.println(SEPARATOR); showMultiplePwd(); System.out.println(SEPARATOR); wichPwdOut(); } // main end } // Vizsfeladat class end