Friday, 20 December 2013

LDAP

Mostani terv: leváltani a jelenlegi LDAP authentikációt egy személyre szabottabbra.
Követelmények:
  • központi adattárolás - adott mezők legyenek kötelezőek (pl mail)
  • autentikáció és autorizáció  linux rendszerekre, weboldalakra, portálokra, és később talán Radius, esetleg windows
  • emberi módon kezelhető adminisztrációs felület 
  •  fusson linuxon
Jelenlegi tudásom alapján a fenti igényeknek csak az LDAP felel meg, szóval neki is álltam jól egy tesztrendszer összerakásának. Az egyik legnagyobb problémát az adminisztrációs felület okozza. Eddig az alábbiakkal próbálkoztam több-kevesebb sikerrel:

  • gosa - már a telepítése is elég macerás volt, mert a slapd átállt dinamikus konfigurációra, amit a gosa alapesetben nem vesz fel
  • lam - memberOf overlay és kötelező mail mező probléma, nagyon sok dolgot csak a fizetős verzió támogat
  • zentyal - először meg sem találtam, hova dugták az LDAP szervert (Users and Groups), másrészt szintén a kötelező mail mező ami eddig akadályt okoz.
 Update:
Belefutottam a csoporttagság problémájába. Nekem ugye az kell, hogy linux rendszereken működjenek a csoporttagságok. Ehhez egyrészt a csoportoknak kell
Kétféle csoportséma van, az egyik a posixGroup, a másik a groupOfNames. A probléma abból adódik, hogy a két séma együtt nem használható, valamint máshogy tárolják a csoporttagokat.

Monday, 9 December 2013

Oracle RDBMS telepítés Oracle Linuxra

Feladat: telepítsek Oracle RDBMS-t. Az első lépés a host oprendszer kiválasztása. Gondoltam ha már Oracle, akkor bepróbálom az Oracle Linuxot, hátha fájdalommentesebb lesz, mint korábban CentOS-re. Tévedtem.
Korábban az alábbi útmutató alapján telepítettem már egyet grafikus munkaállomásra, köszönet érte a Tecmintnek.

Letöltések listája:

Oprendszer install

Alapvetően olyan, mint bármelyik OS install,kivéve 1-2 dolgot:
  • Hostname beállításnál a Configure Network-panelen állítsuk be a Connect automatically opciót
  • A szerver típusnál ne válasszunk database server opciót, mert az nem Oracle Database-t tesz fel. Én mindent hagytam alapértelmezetten.
Install után pár dolog amit be kell állítani:
  • system-config-network - Device configuration - eth0 - beállít - Ok - Save - Save&Quit
  • /etc/sysconfig/networking/devices/ifcfg-eth0 fájlban: ONBOOT=yes
  •  állítsuk be az ip-t, és hostnevet az /etc/hosts fájlban
  • ellenőrizzük a hostnevet a /etc/sysconfig/network fájlban HOSTNAME=<hostnév>
  • kapcsoljuk ki az IPv6-ot (különben IPv6 localhoston fog csak figyelni):
    • /etc/modprobe.d könyvtárban hozzunk létre egy fájlt (pl. disable-ipv6.conf) a következő tartalommal: install ipv6 /bin/true
    • /etc/syconfig/network fájlba írjuk be a következőket:
      • NETWORKING_IPV6=no
      • IPV6INIT=no
  • állítsuk át az selinuxot engedékenyre (ez most csak teszt, éles esetén lehet konfigurálgatni az selinuxot): /etc/selinux/config: SELINUX=permissive
  • yum update
  • reboot
  • ellenőrizzük a bállításokat
Mivel én virtualboxon csináltam, feltettem a guest additionst is:
  • yum install kernel-uek-devel
  • reboot, hogy az uj kernelt hasznalja a rendszer
  • guest additions cd felcsatol
  • mount /dev/scd0 /media
  • /media/VBoxLinuxAdditions.run
  • umount /media

Java install

Igaz, hogy csak tesztrendszer, de a béke kedvéért maradjunk az Oracle javanál.
  • gépre felmásol (én wgettel húztam le a host webszerverről)
  • rpm -Uvh jdk-7u45-linux-x64.rpm
  • állítsuk be a rendszernek, hogy az oracle linuxot használja alapértelmezetten
  • alternatives --install /usr/bin/java java /usr/java/latest/bin/java 200000
  • alternatives --install /usr/bin/javaws javaws /usr/java/latest/bin/javaws 200000
  • alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 200000
  • alternatives --install /usr/bin/jar jar /usr/java/latest/bin/jar 200000
  • váltás Oracle javara: alternatives --config java - latest-et kiválaszt
  • ellenőrzés: java -version

Oracle Database install

Függőségek telepítése: nagy örömömre az Oracle database 64bites verziója igényli a 32bites csomagokat is, és a hivatalos oracle preinstall package ezeket nem tartalmazza. Az alábbi csomaglista a tartalmazza a függőségeket (van pár csomag, ami már telepítve van, de azt a yum úgyis kihagyja):
yum install oracle-rdbms-server-12cR1-preinstall binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 gcc gcc-c++ glibc.i686 glibc glibc-devel glibc-devel.i686 ksh libgcc.i686 libgcc libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libaio libaio.i686 libaio-devel libaio-devel.i686 make sysstat unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686

A preinstall csomag létrehozza az oracle usert, és az orainstall csoportot, valamint állít jópár kernel paramétert. A leginkább fájdalommentes telepítési megoldás X11-forwardos ssh-n keresztül megoldható. Ehhez hálózati kofiguráció kell (NAT portforward, vagy bridge, vagy hostonly).
  • állítsunk be jelszót az oracle felhasználónak: passwd oracle
  • lépjünk át az oracle felhasználóra (su - oracle, vagy ssh)
  • állítsuk be az oracle usernél az alábbi változókat a /home/oracle/.bash_profile-ban:
    export TMP=/tmp
    export TMPDIR=$TMP
    export ORACLE_HOSTNAME=<hostnév>
    export ORACLE_UNQNAME=DB12cR1
    export ORACLE_BASE=/opt/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1
    export ORACLE_SID=orcl
    export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH;
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
    export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    
  • reboot
  • hozzuk létre a megadott könvytástruktúrát, és adjuk át az oracle user tulajdonába
    • mkdir -p /opt/app/oracle/product/12.1.0/dbhome_1
    • chown -R oracle:oinstall /opt/app
  • másoljuk fel az adatbázis telepítő zipeket  a gépre, és csomagoljuk ki (unzip)
    . Az egész installert egy database mappába csomagolja ki.
  • hostról lépjünk be X11-forwarddal: ssh -X oracle@<IP>
  • lépjünk be a kicsomagolt database mappába, és onnan indítsuk el a telepítőt: ./runInstaller
  • telepítés után módosítsuk a /etc/oratab fájlban az adatbázis instance indítását (N->Y)
  • dbstart $ORACLE_HOME
  • állítsunk a tűzfalon, hogy el tudjuk érni az adatbázist. A /etc/sysconfig/iptables fájlba az első REJECT sor elé vegyük fel az alábbi sort: -A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT

Oracle adatbázis indítása automatikusan

A neten több indítóscriptet is találni, én az ezt a scriptet módosítottam kissé.
 #!/bin/sh  
 # chkconfig: 345 99 10  
 # description: Oracle auto start-stop script.  
 #  
 # Set ORA_HOME to be equivalent to the $ORACLE_HOME  
 # from which you wish to execute dbstart and dbshut;  
 #  
 # Set ORA_OWNER to the user id of the owner of the   
 # Oracle database in ORA_HOME.  
 ORA_HOME=/opt/app/oracle/product/12.1.0/dbhome_1  
 ORA_OWNER=oracle  
 if [ ! -f $ORA_HOME/bin/dbstart ]  
 then  
   echo "Oracle startup: cannot start"  
   exit  
 fi  
 case "$1" in  
   'start')  
     # Start the Oracle databases:  
     # The following command assumes that the oracle login   
     # will not prompt the user for any values  
     # Remove "&" if you don't want startup as a background process.  
     su $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME &"  
     touch /var/lock/subsys/dbora  
     ;;  
   'stop')  
     # Stop the Oracle databases:  
     # The following command assumes that the oracle login   
     # will not prompt the user for any values  
     su $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"  
     rm -f /var/lock/subsys/dbora  
     ;;  
   *)  
      echo $"Usage: $0 {start|stop}"  
     ;;  
 esac  
  1. Ahhoz, hogy ez automatikusan lefusson, másoljuk be a /etc/init.d könyvtáron belül egy új fájlba (pl. dbora).
  2. Tegyük futtathatóvá: chmod 750 /etc/init.d/dbora
  3. Adjuk hozzá az indulásnál lefuttatott scriptekhez: chkconfig --add dbora
Újraindítás után ellenőrizzük, hogy minden rendben elindult-e, és elérjük-e a db-t tábolról (pl. Oracle SQL Developerrel).

Friday, 6 December 2013

Felhasználók, csoportok, avagy jogosultságkezelés

Linux rendszereken ha valami nem működik megfelelően, akkor sok esetben a megfelelő jogosultság hiánya miatt van.
A unixokat alapvetően többfelhasználós rendszereknek tervezték, emiatt elég szerteágazó a jogosultságkezelése. Szinte minden szolgáltatásnak külön felhasználója, és csoportja van, és csak akkor tudjuk használni az adott erőforrást, ha van megfelelő jogosultságunk (pl: tagjai vagyunk az adott csoportnak).
 Korábban már említettem, hogy linuxban minden dolog file. A file-ok típusát pl az ls -l paranccsal tudjuk kideríteni. ilyenkor megjelenik soksok információ a file-név előtt (pl: lrwxrwxrwx 1 root root 8 Nov 22 16:47).

File tulajdonságok:

 példa: lrwxrwxrwx 1 root root 8 Nov 22 16:47 net -> self/net
  • lrwxrwxrwx - típus, és jogok (Read,Write,eXecute)
  • 1 - méret
  • root - tulajdonos felhasználó
  • root - tulajdonos csoport
  • 8 Nov 22 16:47 - utolsó módosítás dátuma
 Minden fájlnak van egy tulajdonos felhasználója, és egy tulajdonos csoportja. a típus és jogok rész ehhez kapcsolódik.
  • első karakter: file típusa
  • 2-4. karakter: tulajdonos felhasználó jogai (user rights)
  • 5-7. karakter: tulajdonos csoport jogai (group rights)
  • 8-10. karakter: bárki más jogai (other rights)

File típusa:

Mivel linuxon minden file-ra képződik le, valahogy meg kell különböztetni őket, erre van a típus.
  • - : nincs speciális típusa, ez a hagyományos értelemben vett file
  • b : blokkos eszköz
  • c: karakteres eszköz
  • d: könyvtár/mappa
  • l: link 

Jogosultságok: 

 A típusjelző utáni 9 karakter a jogokat jelöli 3x3-as blokkban.
  • 2,5,8. karakterek: van-e olvasási joga a felhasználónak/csoportnak/bárki másnak
  • 3,6,9. karakterek: van-e írási joga a felhasználónak/csoportnak/bárki másnak
  • 4,7,10. karakterek: van-e végrehajtási joga a felhasználónak/csoportnak/bárki másnak. A végrehajtási jog típusonként eltérő dolgot jelent. Fájl esetén futtatás, könyvtár esetén belépés a könyvtárba.

 Felhasználók, csoportok

Linuxon többféle felhasználó létezik a legfontosabb a root, akinek mindenhez van joga,  és mindig létezik ( windows-on az Administrator felhasználó a megfelelője). Léteznek system felhasználók, ezek valamilyen szolgáltatáshoz tartoznak (adatbázis, webszerver, naplózás, stb.). A normál felhasználók 500-tól, vagy 1000-től szoktak kezdődni.
A rendszer helyi felhasználóinak listáját leggyorsabban a /etc/passwd file-ban tudjuk megnézni. Ennek struktúrája:
eff:x:1000:1000:eff,,,:/home/eff:/bin/bash
  • felhasználónév: az a név amivel azonosít a rendszer
  • authentikációs indikátor: általában x, ami azt jelenti sok rendszeren, hogy máshol van a jelsző/authentikáció tárolva. Ez tipikusan a shadow fájl.
  • uid (user identifier): a felhasználó azonosító száma. több féle felhasználó van, a 0-100 értékek tipikusan speciális rendszerszintű felhasználókat jelölnek (pl: root=0), más rendszerekben 0-499-ig, debian és ubuntu esetén pedig 0-999-ig.
  • gid (group identifier): a felhasználó elsődleges csoportjának szonosítója
  • felhasználói adatok: név,kapcsolattartó,telefonszám,egyéb elérhetőségek
  • home könyvtár: a felhasználó saját könyvtárának elérési útja
  • shell: az alapértelmezett shell
A rendszer általt használt csoportok a /etc/group fájlban vannak felsorolva. Ennek struktúrája:
sudo:x:27:eff
  • csoportnév: a csoport neve
  • jelszó: általában x, ami külső authentikációt jelent. Én még soha nem láttam csoportjelszót beállítva
  • gid (group id): csoport azonosító
  • felhasználók: ide kerülnek azoknak a felhasználóknak a nevei vesszővel elválasztva, akik beletartoznak a csoportba, de nem ez az elsődleges csoportjuk
A jelszavakat a linuxok legtöbbször az úgy nevezett shadow fájlban tárolják. Ez a /etc/shadow, amihez csak a root felhasználó,  és a shadow csoport fér hozzá.