Архива за 'unix' категорију

Zombirana deca na sistemu…

September 26, 2007

Kada posmatrate aktivnost na UNIX ili UNIX sličnom sistemu videćete određen broj procesa od kojih su neki ativni a neki spavaju. Ponekad će vam se desiti da se na listi nađe i određen broj zombiranih procesa. Nije potrebno previše mašte da shvatite šta može biti zombi proces. Za one koji ne žele puno da maštaju na datu temu evo kratkog objašnjenja: kada određen proces završi ono što radi ali ostane u tabeli procesa on postaje nemrtav ili zombi. Dete proces je umrlo (died) ali još uvek ga Smrt nije pokupila(reaped). U normalnim okolnostima bi roditeljski proces (parent) trebalo da pročita izlaznu informaciju svog deteta (child) izvršavanjem sistemske komande wait pri čemu se zombi uklanja. Ukoliko sve ne ide po planu mali zombi ostaje u listi procesa. Ovo ponekad može biti poželjno ukliko roditeljski proces pravi nove procese koji ne bi trebalo da imaju iste ID kao prethodna deca. Opet, ovo ponekad može biti loše..posebno kada se zombirana deca prenamnože.

Evo kratkog ali slatkog uputstva kako da pobijete svu zalutalu decu…(divna terminologija, zar ne?)

Prvo pokrenite komandu ps aux da biste videli svu tu zalutalu decu. Izaberite bilo koje od njih (PID) pošto će ih biti podosta.

ps axo ppid -p <pid deteta> | grep -v PPID | sed 's/ //g'

Ovo će nam dati PID roditelja. Ukoliko nemate pojma koji je to program evo kako ćete saznati:

which `ps axo command -p <pid roditelja> | grep -v COMMAND | cut -d' ' -f1`

Ok, sad znamo ko je vudu vrač koji podiže sve te zombije. Šta ćete sa njim raditi je na vama. Prosto restartovanje programa će pobiti sve zombije. Ukoliko želite da vidite šta se to desilo možete uraditi sledeće:

gdb /putanja/do/programa PID-roditelja

Srećno ubijanje dece…zombija…zombirane dece:-)

Easy way to read MBR?

September 5, 2007

10$ question. Sometime ago you have created backup of your systems Master Boot Record (MBR). Now, after some change, you noticed you did a fatal mistake and your partition table is corrupted and you need to recover it from the backup you created, but you are not sure if it is the correct version. The question is, what is the easiest way to read partition table from the backup of your MBR? No, Hex editor is not the easiest way to do it (and it is bad for your eyes :)). I wonder how many of you said ‘file’ command? Yes, magical file command is able to read the data from the mbr dump and prints you the actual partition table. Here is an example from my laptop.

# file mbr.bin mbr.bin: x86 boot sector; partition 1: ID=0×83, active, starthead 1, startsector 63, 40949622 sectors; partition 2: ID=0×82, starthead 254, startsector 40949685, 2088450 sectors; partition 3: ID=0×8e, starthead 254, startsector 43038135, 74172105 sectors, code offset 0×48

As you can see I have only 3 partitions on the disk. First one has type 0×83, which is HEX id for ext3 type of partition and it is my / partition (you don’t see it here, but I know it :)). It is also active partition, it means that it is used for booting the system. You can also see the size of the partition in sectors. Knowing that one sector has length of 512 bytes you can easily find out the size of the partition.

# echo $(((40949622/2)/1024)) 19994 # df -k / Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 19833488 6504676 12305072 35% /

That’s it, correct. :)

Next partition is 0×82 which is swap partition. And last partition is 0×8e which is id for Linux LVM partition.

While I am here, I could also explain what is MBR and how it is used.

Main Boot Record resides in first 512 bytes of your bootable disk. Besides partition table it also holds bootloader and something called a magic number. As you can see on the picture, bootloader takes the biggest part of MBR, whole 446 bytes. During the boot process BIOS search for a bootable devices attached to your system and once it finds it it looks at the MBR and loads the bootloader, also called primary bootloader. Primary bootloader looks at the partition table inside MBR (next 64 bytes after the bootloader) and searches for an active partition. When it finds active partition it loads the secondary boot loader from that partitions boot record which, in turn, loads the kernel, and so on.

Magic number is used for sanity check of your MBR. It holds only 2 bytes and should be 0xAA55.

So, in short words, MBR is used to easily locate and load kernel from the correct device. (It is also used by your operating system to find the layout of the disk, but that is another story.)

PS: You can create a dump of your MBR by issuing next command:

# dd if=/dev/sda of=mbr.bin bs=512 count=1

Replace /dev/sda with the correct address to your disk.

PS 2: Sorry for bad quality of the MBR scheme, but I didn’t have much time to work on it and I am not a graphic designer. :D

HP-UX UNIX95 Compatibility

July 26, 2007

HP-UX is well known for the ease of patch and product manipulation. These operations are done via software called Software Distributor (SD). Situations where SD fails are very rare but they can be very strange.

One of those weird situations happened to me last week. I downloaded patch bundle from HP site and tried to create a depot. Very simple action - untar the bundle, run the create_depot_hp-ux_11 script and the script and SD will do all the necessary things. But, here comes the weird part - checksum error for all patches in the bundle.

# create_depot_hp-ux_11 DEPOT: /var/depot BUNDLE: BUNDLE TITLE: Patch Bundle UNSHAR: y PSF: depot.psf Expanding patch shar files… x - PHCO_23651.text x - PHCO_23651.depot [compressed] ERROR: wc results of PHCO_23651.depot are 7082 23582 522240 should be 7082 18520 522240 x - PHKL_18543.text x - PHKL_18543.depot [compressed] ERROR: wc results of PHKL_18543.depot are 146386 592281 20377600 should be 146386 524212 20377600

I checked the checksum of the bundle itself and it seemed perfectly fine. What a puzzle, a?

Here is the story. HP-UX was supposed to be compatible with UNIX95 specification, but the problem is that, for some reason, this compatibility breaks SD. This compatibility is enforced by environment variable called UNIX95. So if you ever notice problem like this, check first if this variable is active on your server and if that is the case just simply unset it and your SD will be fully functional again.

# set|grep UNIX95 UNIX95=yes # unset UNIX95 # create_depot_hp-ux_11 DEPOT: /var/depot BUNDLE: BUNDLE TITLE: Patch Bundle UNSHAR: y PSF: depot.psf Expanding patch shar files… x - PHCO_23651.text x - PHCO_23651.depot [compressed] x - PHKL_18543.text x - PHKL_18543.depot [compressed]

Happy patching! :)

AIX 6 ready for download!

July 12, 2007

Like I previously announced, IBM AIX 6 Beta will be openly available for free download and testing. This time has come and you can start downloading it right now from this page. More info here.

AIX 6 should bring a lot of new stuff especially when it comes to virtualization and high-availability issues. Some new features are ported directly from fault-tolerant systems which should provide even more stable and reliable systems. There will be no official support for Beta testing, but you can ask for help on one of the IBM forums.

Openness of IBM is a pretty new thing. This change in IBM policy is probably influenced by SUN’s opening of Solaris to the community. But even though some changes started, IBM is still far away from OpenSource and from opening code of it’s product to the OpenSource community. And that is a pity because I would really like to see the same usability features on some other UNIX operating systems. Sadly, even Linux is far behind AIX when it comes to usability.

32 * 2 = 16h

July 8, 2007

Last week I had an interesting assignment, upgrading one AIX 5.2 server from 32bit to 64bit kernel. Process should be pretty straight forward and is very nicely explained in AIX documentation, but as usual, all actions that require application stopping have to be done after working hours - in this case after 9pm. Considering that all changes, system reboot and application start/stop sequence should not take more than 45 minutes this is not a big problem. As many times before, I didn’t count on good ol’ friend of all system administrators - Murphy.

But, let’s start from the start. First thing I did was to check if the server supports 64bit environment and what version of the kernel is currently running.

# bootinfo -y 64 # bootinfo -K 32

So, the hardware on this server is 64bit (as expected) and active kernel is 32bit. Now, let’s stop applications. Only important application on this server is a production Oracle database. We have to stop it before reboot. (Important thing to note at this moment is the version of database, it is old 8.1.7.4 release of Oracle.)

# su - oracle % sqlplus /nolog     SQL*Plus: Release 8.1.7.0.0 - Production on Wed Jul 4 21:01:20 2007     (c) Copyright 2000 Oracle Corporation. All rights reserved.     SQL> conn / as sysdba Connected.( SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> exit Disconnected from Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production JServer Release 8.1.7.4.0 - Production

In order to be able to execute 64bit binaries we must edit /etc/inittab so the syscall64 kernel extension is loaded during the boot.

# mkitab “load64bit:2:wait:/etc/methods/cfg64 >/dev/console 2>&1″

The switch to 64bit kernel is done by simply relinking paths to the kernel and modules, and updating boot image on the boot device. Followed by a reboot. Simple as that.

# ln -sf /usr/lib/boot/unix_64 /unix # ln -sf /usr/lib/boot/unix_64 /usr/lib/boot/unix # bosboot -a # shutdown -Fr

After the reboot, I checked the version of running kernel to see if the change actually took place.

# bootinfo -K 64

Perfect! so simple isn’t it. I just love when things go so smoothly. Now let’s start Oracle.

# su - oracle % sqlplus /nolog Could not load program sqlplus: Symbol resolution failed for sqlplus because: Symbol pw_post (number 272) is not exported from dependent module /unix. Symbol pw_wait (number 273) is not exported from dependent module /unix. Symbol pw_config (number 274) is not exported from dependent module /unix. Symbol aix_ora_pw_version3_required (number 275) is not exported from dependent module /unix. Examine .loader section symbols with the ‘dump -Tv’ command.

“Argh, this can’t be happening!” I was thinking, so I tried again. Surprisingly, that didn’t help. After the initial shock, I looked at the message more carefully and tried to figure out what the hell it meant. Kernel doesn’t support necessary Oracle symbols - so maybe the Oracle kernel extension is not loaded, let’s check.

# loadext -r     Oracle Kernel Extension Loader for AIX Copyright (c) 1998,1999 Oracle Corporation     sh: /usr/sbin/crash: not found No Kernel Extension is currently running.

I was on a right trail. But this is strange, Oracle kernel extension is loaded from /etc/inittab during the boot, it SHOULD be loaded. Maybe the inittab got corrupted.

# lsitab -a|grep ora orapw:2:wait:/etc/loadext -l /etc/pw-syscall

It is there. In the agony I thought maybe syscall64 extension was not loaded so it failed (although it should not matter).

# genkex|grep syscall 4635e70 390 /usr/lib/drivers/syscalls64.ext

It is there. Let’s try to call it manually, maybe it will work now.

# loadext -l /etc/pw-syscall     Oracle Kernel Extension Loader for AIX Copyright (c) 1998,1999 Oracle Corporation     Kernel Extension Version: 3 SYS_SINGLELOAD: Exec format error kmid: 0 (0×0) path: ‘/etc/pw-syscall’ libpath: ”

Maybe, this extension does not support 64bit environment?

# strings /etc/pw-syscall|head -3 Kernel Extension Version: 3 $Revision: 1.9 $ Supported Oracle Instances: 32-bit & 64-bit

Now I am puzzled even more.

At this point I felt stuck. Reverting back to 32bit kernel was not even an option as this was only one part of the big migration process on this server. But, on the other hand Oracle has to be up and running by morning - this is a very important production server. As I am not an Oracle guru and there was no one from DB team around to ask for advice, I asked Google for help. As many times before, it proved to be wise choice. People already had this problem and solved it by applying small patch for Oracle.

Important thing here is that Oracle version 8 does not support 64bit kernel on AIX. It requires patch number 2896876 in order to do so.

After applying this patch you get a new kernel extension which loads without complaining.

# genkex|grep syscall 466c850 1218 /etc/pw-syscall64 4641ec0 390 /usr/lib/drivers/syscalls64.ext

Now, let’s try to start Oracle.

# su - oracle % sqlplus /nolog     SQL*Plus: Release 8.1.7.0.0 - Production on Thu Jul 5 00:47:45 2007     (c) Copyright 2000 Oracle Corporation. All rights reserved.     SQL> conn / as sysdba Connected to an idle instance. SQL> startup ORACLE instance started.     Total System Global Area  178704276 bytes Fixed Size                    73620 bytes Variable Size             135630848 bytes Database Buffers           41943040 bytes Redo Buffers                1056768 bytes Database mounted. Database opened. SQL> exit Disconnected % ^D

Nice. :) Next thing is to change inittab to load new Oracle kernel extension,

# chitab “orapw:2:wait:/etc/loadext -l /etc/pw-syscall64″

stop oracle and reboot server again to see how it will behave after the reboot. Luckily everything works fine so at 01am I can finally go home. It was about time since I was there for almost 16 hours (hence the subject of the post.) Ah, the pleasures of being a system administrators are flexible working hours, isn’t it? :)

Usability… WTF is that?

July 1, 2007

One of the very important things when it comes to software development is usability. Software should be user friendly and easy to use. Despite sustained opinion software for system administration should not be an exception. After all, system administrators are still humans (although some people don’t agree with that :). So it was always a mystery to me why some OS developers, or at least developers of user space tools, try to complicate it as much as they can.

Perfect example for this is Veritas Volume Manager. Other UNIX LVM technologies provide very logical and simple to use tools for LVM administration, but seems that VxVM has “the more confusing - the better” philosophy. Perfect example for this is simple activity of checking how much free space is left in Disk Group (Volume Groups are called Disk Groups in Veritas Volume Manager :)).

# vxdg -g rootdg free GROUP  DISK     DEVICE   TAG    OFFSET   LENGTH  FLAGS rootdg rootdisk c1t0d0s2 c1t0d0 46595904 96722880 -

Now, all fields are self explanatory, but WTF are Offset and Length?! Well, Offset is the number of the block where free space begins and Length is size of the free space in blocks. I agree this is very informative and useful output, but why naming fields like this? Why not use simple names like for example “Used space” and “Free space”? Hm, beats me.

But fun doesn’t end there. In case you don’t have free space in your Disk Group vxdg command will not inform you about that, it will just output the header and exit. Very user friendly, isn’t it? :)

Don’t get me wrong, I am not saying VxVM is a bad piece of software. I think it is very powerful and with features that many other Volume Manager software lacks. But, people at Symantec could really hire some usability expert to work on VxVM, it would be a challenge of a lifetime. :)

OpenSSH chroot paranoja

April 15, 2007

Kada je u pitanju administracija servera i bezbednost istih ni jedan stepen paranoje nije dovoljno visok. Posebno kada je u pitanju shell pristup koji ponekad jednostavno moramo dati svojim korisnicima iako to zaista ne želimo(BOFH). Najbolji način da se zaštitimo od potencijalnih nevolja koje taj shell pristup može da izazove jeste da ih nekako zatvorimo u neki virtuelni kavez iz kog ne mogu da pobegnu te da jedina šteta koju mogu da načine jeste šteta nad sopstvenim podacima(BOFH).

Uzmimo FreeBSD kao prvu žrtvu ovih paranoičnih izmena. Ovde je procedura donekle lakša. Prvo ćemo zameniti sistemski SSH server onim koji možete naći pod:

/usr/ports/security/openssh-portable/

U pitanju je port verzija OpenSSH servera koji možete naći kod OpenBSD-a. Lično, uvek koristim tu verziju. Kada počnete instalaciju dobićete mogućnost da podesite malo taj OpenSSH. Ukoliko instalacija odmah počne bez ikakvih ponuđenih opcija (desi se i to ponekad) sve što treba da uradite je da je prekinete i ukucate komandu:

make config

Stavka na listi koja nas zanima je OPENSSH_CHROOT. Onda se vratite starom dobrom make install clean i to je to. Sada je potrebno da ubijete sistemski SSH i da malo izmenite /etc/rc.conf:

sshd_enable="NO" # OpenSSH server openssh_enable="YES" # OpenBSD OpenSSH-portable

Sada će se pri pokretanju sistema startovati OpenBSD verzija OpenSSH servera. I sada to sve radi..malo sutra. Jedva sam našao kako to zapravo treba da se podesi.

OpenSSH koji se kompajlira sa OPENSSH_CHROOT zakrpom čita putanju do home DIR malo drugačije. Tačnije, čita ”.” u putanji tako što je za njega ona / sistema. Malo sam zakomplikovao ovu rečenicu? Moguće.:) Dakle, ako je putanja do korisničkog home DIR recimo ovako nešto:

/home/./jail/home/user

kada se korisnik uloguje na sistem i kuca “cd /” neće dobiti pravu root particiju već /jail i neće moći iz nje da izađe. Jako korisno, zar ne?

Problem nastaje što onda korisnik nema gotovo ništa od komandi..tačnije, ne može ni ući na sistem jer nema ni jedan shell. Ono ”/bin/csh” u njegovim podacima sada neće imati smisla. Šta sad? Napravimo mu onda “zatvor” koji ima neke od komandi.

cd /home/jail mkdir bin lib etc cp /bin/csh bin/

Vodite računa da programi i komande koje kopirate u ”/bin” imaju i sve potrebne biblioteke. To ćete učiniti tako što ćete kucati:

ldd /home/jail/bin/csh

Dobićete nešto ovako:

/bin/csh: libncurses.so.6 => /lib/libncurses.so.6 (0x280bd000) libcrypt.so.3 => /lib/libcrypt.so.3 (0x280fc000) libc.so.6 => /lib/libc.so.6 (0x28114000)

Aha, dakle potrebne su nam i neke biblioteke. Dobro, iskopirajte ih sve u naš “jailovan” /lib/” direktorijum. Sada će sve raditi kako treba.Šta sesve valja naći u “bin” direktorijum? To od vas zavisi. Ako korisniku date samo csh neće moći da radi ništa do da se uloguje na sistem. Korisno je dati mu komande: cd, ls,cp, mv, rm…odlučite već sami, ovo je samo predlog.

I to je to. Kada vaši korisnici uđu na sistem najdalje što će moći da odu jeste /jail. Ukoliko već imate korisnike koje želite da smestite u kavez:

chpass username

te izmenite samo putanju do /home/ direktorijuma. Putanju do shell-a ne dirajte. I to je to. NAPOMENA: Ovo ima smisla samo ako je korisnik na sistem ušao preko SSH veze…ukoliko ima fizički pristup mašini onda chroot ne radi.:)

OpenBSD zahteva za nijansu drugačije korake. Iako su rekli da je zakrpa koja omogućava chroot ubačena to nije tačno jer čitanje ”.” u putanji ne radi dok sami ne dodate zakrpu koja sledi. No, to nije teško. Pretpostavimo da imate najnoviji OpenBSD (4.0). Vreme je da stavimo novu verziju OpenSSH-a na njega. Svoj paket možete naći na http://www.openssh.org/openbsd.html Tamo ćete naći i uputstvo koje kaže sledeće:

cd /usr/src/usr.bin tar xvfz .../openssh-4.6.tar.gz cd ssh make obj make cleandir make depend make make install cp ssh_config sshd_config /etc/ssh

To je OK ako samo želite novu verziju SSH-a- Mi ćemo ovo uraditi malkice drugačije. Prva tri koraka su sasvim OK. Tu stanite. Ono što ćete uraditi jeste izmena datoteke session.c.

cp session.c session_backup.c vim session.c

I dodajte ispred funkcije do_setusercontext sledeći kod:

/* do chroot / void do_chroot(struct passwd *pw){ char *user_dir; char *new_root; user_dir = xstrdup(pw->pw_dir); new_root = user_dir + 1; while((new_root = strchr(new_root, '.')) != NULL) { new_root--; if(strncmp(new_root, "/./", 3) == 0) { *new_root = '\0'; new_root += 2; if(chroot(user_dir) != 0) fatal("Couldn't chroot to user directory %s", user_dir); pw->pw_dir = new_root; break; } new_root += 2; } } / do_chroot /

Zatim dodajte:

/ Set login name, uid, gid, and groups. / void do_setusercontext(struct passwd *pw) { / OVO DODAJETE / do_chroot(pw); / OVO DODAJETE */ if (getuid() 0 || geteuid() 0) { #ifdef HAVE_LOGIN_CAP

Naznačio sam vam šta tačno dodajete. Ono ispred i iznad mog komentara je tu da lakše nađete tačnu lokaciju za dodatnu funkciju.

I sad se vratite koracima za instalaciju OpenSSH-a. Sve bi trebalo da prođe OK. Restartujete OpenSSH server a ostatak je isti kao kod FreeBSD-a. Srećno zlostavljanje korisnika.:-)

OpenSSH chroot paranoja

April 15, 2007

Kada je u pitanju administracija servera i bezbednost istih ni jedan stepen paranoje nije dovoljno visok. Posebno kada je u pitanju shell pristup koji ponekad jednostavno moramo dati svojim korisnicima iako to zaista ne želimo(BOFH). Najbolji način da se zaštitimo od potencijalnih nevolja koje taj shell pristup može da izazove jeste da ih nekako zatvorimo u neki virtuelni kavez iz kog ne mogu da pobegnu te da jedina šteta koju mogu da načine jeste šteta nad sopstvenim podacima(BOFH).

Uzmimo FreeBSD kao prvu žrtvu ovih paranoičnih izmena. Ovde je procedura donekle lakša. Prvo ćemo zameniti sistemski SSH server onim koji možete naći pod:

/usr/ports/security/openssh-portable/

U pitanju je port verzija OpenSSH servera koji možete naći kod OpenBSD-a. Lično, uvek koristim tu verziju. Kada počnete instalaciju dobićete mogućnost da podesite malo taj OpenSSH. Ukoliko instalacija odmah počne bez ikakvih ponuđenih opcija (desi se i to ponekad) sve što treba da uradite je da je prekinete i ukucate komandu:

make config

Stavka na listi koja nas zanima je OPENSSH_CHROOT. Onda se vratite starom dobrom make install clean i to je to. Sada je potrebno da ubijete sistemski SSH i da malo izmenite /etc/rc.conf:

sshd_enable="NO" # OpenSSH server openssh_enable="YES" # OpenBSD OpenSSH-portable

Sada će se pri pokretanju sistema startovati OpenBSD verzija OpenSSH servera. I sada to sve radi..malo sutra. Jedva sam našao kako to zapravo treba da se podesi.

OpenSSH koji se kompajlira sa OPENSSH_CHROOT zakrpom čita putanju do home DIR malo drugačije. Tačnije, čita ”.” u putanji tako što je za njega ona / sistema. Malo sam zakomplikovao ovu rečenicu? Moguće.:) Dakle, ako je putanja do korisničkog home DIR recimo ovako nešto:

/home/./jail/home/user

kada se korisnik uloguje na sistem i kuca “cd /” neće dobiti pravu root particiju već /jail i neće moći iz nje da izađe. Jako korisno, zar ne?

Problem nastaje što onda korisnik nema gotovo ništa od komandi..tačnije, ne može ni ući na sistem jer nema ni jedan shell. Ono ”/bin/csh” u njegovim podacima sada neće imati smisla. Šta sad? Napravimo mu onda “zatvor” koji ima neke od komandi.

cd /home/jail mkdir bin lib etc cp /bin/csh bin/

Vodite računa da programi i komande koje kopirate u ”/bin” imaju i sve potrebne biblioteke. To ćete učiniti tako što ćete kucati:

ldd /home/jail/bin/csh

Dobićete nešto ovako:

/bin/csh: libncurses.so.6 => /lib/libncurses.so.6 (0x280bd000) libcrypt.so.3 => /lib/libcrypt.so.3 (0x280fc000) libc.so.6 => /lib/libc.so.6 (0x28114000)

Aha, dakle potrebne su nam i neke biblioteke. Dobro, iskopirajte ih sve u naš “jailovan” /lib/” direktorijum. Sada će sve raditi kako treba.Šta sesve valja naći u “bin” direktorijum? To od vas zavisi. Ako korisniku date samo csh neće moći da radi ništa do da se uloguje na sistem. Korisno je dati mu komande: cd, ls,cp, mv, rm…odlučite već sami, ovo je samo predlog.

I to je to. Kada vaši korisnici uđu na sistem najdalje što će moći da odu jeste /jail. Ukoliko već imate korisnike koje želite da smestite u kavez:

chpass username

te izmenite samo putanju do /home/ direktorijuma. Putanju do shell-a ne dirajte. I to je to. NAPOMENA: Ovo ima smisla samo ako je korisnik na sistem ušao preko SSH veze…ukoliko ima fizički pristup mašini onda chroot ne radi.:)

OpenBSD zahteva za nijansu drugačije korake. Iako su rekli da je zakrpa koja omogućava chroot ubačena to nije tačno jer čitanje ”.” u putanji ne radi dok sami ne dodate zakrpu koja sledi. No, to nije teško. Pretpostavimo da imate najnoviji OpenBSD (4.0). Vreme je da stavimo novu verziju OpenSSH-a na njega. Svoj paket možete naći na http://www.openssh.org/openbsd.html Tamo ćete naći i uputstvo koje kaže sledeće:

cd /usr/src/usr.bin tar xvfz .../openssh-4.6.tar.gz cd ssh make obj make cleandir make depend make make install cp ssh_config sshd_config /etc/ssh

To je OK ako samo želite novu verziju SSH-a- Mi ćemo ovo uraditi malkice drugačije. Prva tri koraka su sasvim OK. Tu stanite. Ono što ćete uraditi jeste izmena datoteke session.c.

cp session.c session_backup.c vim session.c

I dodajte ispred funkcije do_setusercontext sledeći kod:

/* do chroot / void do_chroot(struct passwd *pw){ char *user_dir; char *new_root; user_dir = xstrdup(pw->pw_dir); new_root = user_dir + 1; while((new_root = strchr(new_root, '.')) != NULL) { new_root--; if(strncmp(new_root, "/./", 3) == 0) { *new_root = '\0'; new_root += 2; if(chroot(user_dir) != 0) fatal("Couldn't chroot to user directory %s", user_dir); pw->pw_dir = new_root; break; } new_root += 2; } } / do_chroot /

Zatim dodajte:

/ Set login name, uid, gid, and groups. / void do_setusercontext(struct passwd *pw) { / OVO DODAJETE / do_chroot(pw); / OVO DODAJETE */ if (getuid() 0 || geteuid() 0) { #ifdef HAVE_LOGIN_CAP

Naznačio sam vam šta tačno dodajete. Ono ispred i iznad mog komentara je tu da lakše nađete tačnu lokaciju za dodatnu funkciju.

I sad se vratite koracima za instalaciju OpenSSH-a. Sve bi trebalo da prođe OK. Restartujete OpenSSH server a ostatak je isti kao kod FreeBSD-a. Srećno zlostavljanje korisnika.:-)

NFS+Windows klijenti

March 30, 2007

Network File System(NFS) je tehnologija koju je razvio Sun Microsystem 1985. i predstavlja prvi široko prihvaćen mrežni fajl sistem. Ovaj tekst nema za cilj da vas upozna sa istorijom NFS-a već da bude jako precizno uputstvo za upotrebu NFS-a na Windows mašinama. Pretpostavimo da imate omanju firmu gde deo korisnika ima neki UNIX-like OS a deo Windows OS. Jedan d načina da vaši korisnici nesmetano dele datoteke međusibno je verovatno FTP server. To i nije tako loše rešenje.Ipak, budimo iskreni…to rešenje je očajno. Daleko je lakše imati mogućnost da sena jedno mesto upisuju svi podaci a da korisnici ni ne znaju da to nije na njihovom računaru. Imaće još jednu particiju kojoj će pristupati kao bilo kojoj particiji na svom računaru. Pisati po njoj, brisati,čitati sa nje…sve ono što korisnici inače rade.

U te svrhe je daleko lakše postaviti NFS server koji će opsluživati čitavu firmu. Procedura će biti laka kada imamo homogenu UNIX-oliku mrežu sastavljenu od BSD, Solaris i Linux mašina. Ali šta činiti kada želimo da i Windows korisnici imaju pristup deljenim podacima? Možemo postaviti Samba server. No, Samba može biti naporna za podešavanje a nama je potrebno čisto i brzo rešenje.

NSF server

Prvo moramo podesiti mašinu koja će nam biti server i na koju će se podaci zaista smeštati. U mom slučaju to je FreeBSD 6.2. Evo uputstva u nekoliko koraka kako osposobiti NFS na BSD mašini:

1) U /etc/rc.conf dodajemo sledeće linije:

rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r"

Ovo će aktivirati tri neophodna servisa potrebna za rad NFS-a.

2) Pretpostavimo da želimo da korisnici upisuju u DIR /home/mod koji je particija od 200GB. Da bi ta lokacija postala dostupna korisnicima potrebno je da u datoteku /etc/exports dodamo jednu liniju:

/home/mod -alldirs -maproot=root 10.0.0.2 10.0.0.3

Ovo će omogućiti da korisnici sa navedenim IP adresama mogu da montiraju /home/mod particiju i da nad njom imaju “root” privilegije.Napomena: kada god dodajete nešto u /etc/exports potrebno je da mountd demonu kažete da ponovo učita tu datoteku. To ćete učiniti na dva načina:

kill -HUP `cat /var/run/mountd.pid`

ili

/etc/rc.d/mountd onereload

Naravno, uvek možete restartovati sistem i sva podešavanja koja smo upravo izveli će biti prihvaćena. Ali kakav je to server ako ga zbog ovako nečeg morate restartovati?:-) Umesto toga uradite sledeće:

rpcbind nfsd -u -t -n 4 mountd -r

I to je to. Vaš NFS server je spreman za upotrebu.

Windows kao NFS klijent

Zanimljivo je kako je malo resursa na Netu na ovu temu. Dosta ljudi mi je reklo da je to nemoguće. Valjda niko od njih nije probao te zato zaključuje da je nemoguće. Ali kako Marfi kaže: “Ukoliko želiš da otkriješ granice mogućeg probaj nemoguće”. Meni nije potrebno dva puta govoriti. Kako se ispostavilo procedura je neviđeno laka a svodi se na izor između dva softverska rešenja i nekoliko klikova.

Prvo softversko rešenje jeste ono koje nudi Micro$oft u vidu paketa koji se zove Windows Services for UNIX version 3.0. Kompletno uputsvo za instalaciju kao i sam paket možete naći na—> http://support.microsoft.com/kb/324055

Drugo predstavlja paket pod nazivom ProNFS i on je taj za koji sam se odlučio pri rešavanju ovog problema. Paket je znatno manji za preuzimanje od onog prvog I takođe jednostavan za instalaciju…4 klika.:-) ProNFS možete naći na: http://pronfs.com/

O otvorenosti i slobodi ova dva programska rešenja ovom prilikom neću govoriti.:-)

Kada instalirate ProNFS neće vam biti jasno zašto nema NFS-a nigde već ste u meniju dobili brdo nekih alatki. NFS je tu samo što se klijent ne instalira sam pri prvom instaliranju. ProNFS je zamišljen kao NFS server za Windows! Instalacija klijenta se nalazi unutar ProNFS direktorijuma u Program Files DIR:

Kada ga pokrenete nfssetup.exe sve bude završeno za par sekundi. Ovog puta restartujete računar jer ovaj OS nije tako napredan da dozvoljava igrarije kao UNIX-oliki sistemi.Kada se vaš sistem konačno podigne vreme je da dodate svoju NFS particiju Windowsu. To se može postići na dva načina. Prvi je da NFS particiju dodate kao Network place kroz My Network places. Drugi da je mapirate kao Network drive. Slede vizuelna uputstva:

Network place

Map network drive

I to bi bilo to. Kao što sam već napomenuo, rešenje je NEVIĐENO jednostavno. Sada Windows korisnici na mreži mogu da dele podatke sa ostalim kolegama na mreži…ukoliko im vi to dozvolite.:-)

NFS+Windows klijenti

March 30, 2007

Network File System(NFS) je tehnologija koju je razvio Sun Microsystem 1985. i predstavlja prvi široko prihvaćen mrežni fajl sistem. Ovaj tekst nema za cilj da vas upozna sa istorijom NFS-a već da bude jako precizno uputstvo za upotrebu NFS-a na Windows mašinama. Pretpostavimo da imate omanju firmu gde deo korisnika ima neki UNIX-like OS a deo Windows OS. Jedan d načina da vaši korisnici nesmetano dele datoteke međusibno je verovatno FTP server. To i nije tako loše rešenje.Ipak, budimo iskreni…to rešenje je očajno. Daleko je lakše imati mogućnost da sena jedno mesto upisuju svi podaci a da korisnici ni ne znaju da to nije na njihovom računaru. Imaće još jednu particiju kojoj će pristupati kao bilo kojoj particiji na svom računaru. Pisati po njoj, brisati,čitati sa nje…sve ono što korisnici inače rade.

U te svrhe je daleko lakše postaviti NFS server koji će opsluživati čitavu firmu. Procedura će biti laka kada imamo homogenu UNIX-oliku mrežu sastavljenu od BSD, Solaris i Linux mašina. Ali šta činiti kada želimo da i Windows korisnici imaju pristup deljenim podacima? Možemo postaviti Samba server. No, Samba može biti naporna za podešavanje a nama je potrebno čisto i brzo rešenje.

NSF server

Prvo moramo podesiti mašinu koja će nam biti server i na koju će se podaci zaista smeštati. U mom slučaju to je FreeBSD 6.2. Evo uputstva u nekoliko koraka kako osposobiti NFS na BSD mašini:

1) U /etc/rc.conf dodajemo sledeće linije:

rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r"

Ovo će aktivirati tri neophodna servisa potrebna za rad NFS-a.

2) Pretpostavimo da želimo da korisnici upisuju u DIR /home/mod koji je particija od 200GB. Da bi ta lokacija postala dostupna korisnicima potrebno je da u datoteku /etc/exports dodamo jednu liniju:

/home/mod -alldirs -maproot=root 10.0.0.2 10.0.0.3

Ovo će omogućiti da korisnici sa navedenim IP adresama mogu da montiraju /home/mod particiju i da nad njom imaju “root” privilegije.Napomena: kada god dodajete nešto u /etc/exports potrebno je da mountd demonu kažete da ponovo učita tu datoteku. To ćete učiniti na dva načina:

kill -HUP `cat /var/run/mountd.pid`

ili

/etc/rc.d/mountd onereload

Naravno, uvek možete restartovati sistem i sva podešavanja koja smo upravo izveli će biti prihvaćena. Ali kakav je to server ako ga zbog ovako nečeg morate restartovati?:-) Umesto toga uradite sledeće:

rpcbind nfsd -u -t -n 4 mountd -r

I to je to. Vaš NFS server je spreman za upotrebu.

Windows kao NFS klijent

Zanimljivo je kako je malo resursa na Netu na ovu temu. Dosta ljudi mi je reklo da je to nemoguće. Valjda niko od njih nije probao te zato zaključuje da je nemoguće. Ali kako Marfi kaže: “Ukoliko želiš da otkriješ granice mogućeg probaj nemoguće”. Meni nije potrebno dva puta govoriti. Kako se ispostavilo procedura je neviđeno laka a svodi se na izor između dva softverska rešenja i nekoliko klikova.

Prvo softversko rešenje jeste ono koje nudi Micro$oft u vidu paketa koji se zove Windows Services for UNIX version 3.0. Kompletno uputsvo za instalaciju kao i sam paket možete naći na—> http://support.microsoft.com/kb/324055

Drugo predstavlja paket pod nazivom ProNFS i on je taj za koji sam se odlučio pri rešavanju ovog problema. Paket je znatno manji za preuzimanje od onog prvog I takođe jednostavan za instalaciju…4 klika.:-) ProNFS možete naći na: http://pronfs.com/

O otvorenosti i slobodi ova dva programska rešenja ovom prilikom neću govoriti.:-)

Kada instalirate ProNFS neće vam biti jasno zašto nema NFS-a nigde već ste u meniju dobili brdo nekih alatki. NFS je tu samo što se klijent ne instalira sam pri prvom instaliranju. ProNFS je zamišljen kao NFS server za Windows! Instalacija klijenta se nalazi unutar ProNFS direktorijuma u Program Files DIR:

Kada ga pokrenete nfssetup.exe sve bude završeno za par sekundi. Ovog puta restartujete računar jer ovaj OS nije tako napredan da dozvoljava igrarije kao UNIX-oliki sistemi.Kada se vaš sistem konačno podigne vreme je da dodate svoju NFS particiju Windowsu. To se može postići na dva načina. Prvi je da NFS particiju dodate kao Network place kroz My Network places. Drugi da je mapirate kao Network drive. Slede vizuelna uputstva:

Network place

Map network drive

I to bi bilo to. Kao što sam već napomenuo, rešenje je NEVIĐENO jednostavno. Sada Windows korisnici na mreži mogu da dele podatke sa ostalim kolegama na mreži…ukoliko im vi to dozvolite.:-)

FreeBSD, CD-ROM(DVD) i običan korisnik

March 28, 2007

Opšte je poznato da BSD sistemi teže visokom stepenu sigurnosti koji ponekad prelazi u potpunu paranoju. No, kada se radi o serverima i administraciji istih ni jedan stepen paranoje nije dovoljno visok. Ipak, kada koristite FreeBSD kao desktop mašinu normalno je da vam ta paranoja smeta pri svakodnevnim aktivnostima. Jedna od takvih je i upotreba optičkih uređaja. Postoje dva načina da koristite svoj CD-ROM.

Prvi je da ga montirate kao root koristnik. To jako brzo dosadi. Drugi način je upotreba programa SUDO (/usr/ports/security/sudo). Sudo je sjajna aplikacija ukoliko svakog dana morate koristiti razne aplikacije kao root korisnik. Sudo, opet, možete koristiti na dva načina. Prvi način će od vas tražiti da stalno kucate svoju šifru i to ćete postići dodavanjem sledećeg reda u datoteku /usr/local/etc/sudoers:

nightweaver ALL=(ALL) ALL

Ukoliko pak želite da izbegnete kucanje šifre (potpuno suluda ideja ali dobro..ima nas raznih) taj red će izgledati ovako:

nightweaver ALL=(ALL) NOPASSWD: ALL

I sve je ovo smor…znam…zbog toga postoji strašno jednostavan način da sistemu kažete da dozvoli upotrebu CD-ROM-a običnom korisniku. Evo uputstva u četiri koraka:

1) edit /etc/sysctl.conf

vfs.usermount=1

2) edit /etc/devfs.conf

perm xpt0 0660 perm pass0 0660 perm cd0 0660 perm acd0 0660 link cd0 cdrom link acd0 dvd #(ukoliko posedujete DVD)

3) chown $username /cdrom && chmod 655 /cdrom (ili DIR u koji će običan korisnik montirati disk)

4) Dodate korisnika u grupu operator ili grupu koja je vlasnik uređaja /dev/cd0.

I to je to. Sada običan korisnik bez problema može u potpunosti da koristi optičke uređaje – montoranje, rezanje itd.

FreeBSD, CD-ROM(DVD) i običan korisnik

March 28, 2007

Opšte je poznato da BSD sistemi teže visokom stepenu sigurnosti koji ponekad prelazi u potpunu paranoju. No, kada se radi o serverima i administraciji istih ni jedan stepen paranoje nije dovoljno visok. Ipak, kada koristite FreeBSD kao desktop mašinu normalno je da vam ta paranoja smeta pri svakodnevnim aktivnostima. Jedna od takvih je i upotreba optičkih uređaja. Postoje dva načina da koristite svoj CD-ROM.

Prvi je da ga montirate kao root koristnik. To jako brzo dosadi. Drugi način je upotreba programa SUDO (/usr/ports/security/sudo). Sudo je sjajna aplikacija ukoliko svakog dana morate koristiti razne aplikacije kao root korisnik. Sudo, opet, možete koristiti na dva načina. Prvi način će od vas tražiti da stalno kucate svoju šifru i to ćete postići dodavanjem sledećeg reda u datoteku /usr/local/etc/sudoers:

nightweaver ALL=(ALL) ALL

Ukoliko pak želite da izbegnete kucanje šifre (potpuno suluda ideja ali dobro..ima nas raznih) taj red će izgledati ovako:

nightweaver ALL=(ALL) NOPASSWD: ALL

I sve je ovo smor…znam…zbog toga postoji strašno jednostavan način da sistemu kažete da dozvoli upotrebu CD-ROM-a običnom korisniku. Evo uputstva u četiri koraka:

1) edit /etc/sysctl.conf

vfs.usermount=1

2) edit /etc/devfs.conf

perm xpt0 0660 perm pass0 0660 perm cd0 0660 perm acd0 0660 link cd0 cdrom link acd0 dvd #(ukoliko posedujete DVD)

3) chown $username /cdrom && chmod 655 /cdrom (ili DIR u koji će običan korisnik montirati disk)

4) Dodate korisnika u grupu operator ili grupu koja je vlasnik uređaja /dev/cd0.

I to je to. Sada običan korisnik bez problema može u potpunosti da koristi optičke uređaje – montoranje, rezanje itd.

Бесплатна књига UNIX i Linux

September 11, 2006

Драган Плескоњић, аутор књиге Оперативни системи: Unix и Linux је понудио електронску верзију ове књиге за бесплатно преузимање, након попуњавања кратког упитника. (весић.орг

microsoft, serbia, unix