Tampilkan postingan dengan label nfs. Tampilkan semua postingan
Tampilkan postingan dengan label nfs. Tampilkan semua postingan

31 Agustus 2009

Password reminder

Gue mau menerapkan rutinitas ganti password. Dan ini penting di network gue. Karena sebelumnya dengan netware server, semua user diberi blank password. Dan bertahun-tahun nggak pernah diganti. Aneh kan? Tapi itulah yang terjadi. Dan itu kecurigaan gue kenapa mail server lama pernah di obok2 orang dari internet.

User akan langsung menikmati proses pergantian password. Setiap 100 hari, baek client Windows maupun Linux akan langsung disodorin proses ganti password. Dan ini nggak jadi masalah.

Problemnya user suka lupa saja. Setelah weekend atau beberapa libur dari kerja, ternyata accountnya udah nggak bisa dipake lagi. Alias sudah non aktif karena lupa ganti password. Dan seperti biasa mereka akan lapor ke MIS untuk bantu di resetin password.

Dari beberapa solusi bagus, akhirnya gue pilih password reminder. Sekitar 28 hari sebelum passwordnya expired, email peringatan akan langsung terkirim ke mailbox mereka. Dan ini lebih gampang ngeceknya. Karena kita sebagai admin juga dapat list user yang passwordnya bakal expire atau udah expire setiap minggunya.

Cukup gunakan software passwd_exp untuk melakukannya. Karena mail server udah tersambung ke LDAP server, akhirnya gue install di mail server. Tinggal compile dan install "Text-Tokenizer" dari website yang sama, lalu compile dan install "passwd_exp" juga.

tar zxvf Text-Tokenizer-0.4.2.tar.gz
cd Text-Tokenizer-0.4.2
perl Makefile.PL
make
make test
make install

tar zxvf passwd_exp-1.2.10.tar.gz
cd passwd_exp-1.2.10
./configure
make
make install


Software ini langsung menginstall scheduler di cron. Secara harian akan check password yang hampir expired (minimal 28 hari sebelumnya). Dan mingguan akan check semua user dan listnya dikirim ke administrator. Configure aja di passwd_exp.conf.

/usr/local/etc/passwd_exp/passwd_exp.conf:
module                = shadow.linux
module opt[getent]    = 1
module opt[host]      = myserver.mydomain.com
module opt[shell]     = 1
module opt[uid_min]   = 30000
module opt[uid_max]   = 40000


Untuk check manually di console, cukup lakukan perintah ini:

# passwd_exp -l



07 Juni 2009

Generate otomatis Logon script di Samba

Sebenernya idenya udah dari tahun lalu pengen bikinnya. Tapi karena melihat keadaan user sini yang nggak terlalu komplek waktu itu, cukup bikin 1 departemen 1 macem logon script saja. Dan MIS udah terbiasa dengan hal ini. Maklum, mereka baru kenal Linux. Banyak nggak taunya kalo sebenernya server Linux bisa di customize untuk kebutuhan macem-macem. Dan kali ini loe akan liat hasilnya ;-)

Setelah baca artikel Vavai (link), baru inget lagi. Dan tepat juga dengan keluhan beberapa bos sini. Mereka pengen akses di banyak departemen folder. Maunya semuanya langsung muncul seperti Linux user. Well ... Ubuntu (Gnome) client di sini menikmati logon script juga loh :-D Sekali login ke Gnome, semua folder di server NFS langsung terbookmark otomatis. Baca deh artikel gue tentang ini (link).

Karena mulai banyak user yang maunya akses beberapa folder departemen laen, mau nggak mau harus cari solusi. Setelah baca-baca "samba-doc" muncul ide juga. Sayangnya contoh logon script yang di generate pake Python dan Perl. Dan gue nggak ngerti tuh ke 2 bahasa itu. OK, no problem deh. Pake scripting yang laen juga bisa di Linux. Karena dikit-dikit tahu tentang Bash, akhirnya gue pilih Bash script saja. Dan berhasil :-D

Kondisi sharing di server (Samba)

Setiap user disini, akan langsung menikmati folder-foldernya di server:
  1. Personal (masing-masing username dapat folder sendiri)
    Default Samba pake nama [home], tapi sengaja gue ganti nama sharenya.
  2. Department (semua user di departemen yang bisa akses)
  3. Public (Semua user bisa baca, hanya perdepartemen yang bisa baca/tulis)
  4. Software (software for Linux/Windows untuk kebutuhan MIS support ke client)
  5. Temp (Temporary folder)
Untuk No.1,3,4,5 setiap user akan menikmati mapping folder ini. Kendala munculnya di no.2 di atas. Ada user yang maunya akses folder ke 3 departemen. Padahal logon scriptnya udah kita set ke default department. Mau nggak mau, MIS akan mount manual di Windows. Dan ini akan jadi masalah, saat user pake komputer laen departemen selain default nggak muncul lagi.

Pake logika yang sama seperti bikin script untuk Gnome, disini ada perbedaan cara kerja. Windows client memiliki fasilitas logon script saat udah join ke Windows/Samba server. Jadi tanpa perlu nambah apa-apa di client. Murni generate script dan deteksi group semuanya dilakukan di server Linux/Samba. Sama skali tanpa perlu nambah software di client.

Bandingkan dengan Ubuntu/Gnome client di artkel sebelumnya (link). Script emang ada di NFS server. Tapi setiap user login via GDM, script di server tersebut harus di load. Jadi autostart programnya akan bermanfaat disini. Cukup buat 1 shortcut yang sangat simple dan copy ke semua client Ubuntu. Siapapun yang login ke Ubuntu client, shortcut itu akan meload script di NFS server dan langsung folder di NFS akan terbookmarks di File Browser (Nautilus). Solusi beres. Baca artikel di link atas selengkapnya.

Konfigurasi Samba

Ini konfigurasi di Samba server. Terutama bagian yang berkaitan dengan netlogon saja yah:

[global]
logon script = %U.bat

[netlogon]
path = /samba/netlogon
writeable = no
guest ok = no
root preexec = /usr/local/bin/genlogonscript.sh %U
root postexec = rm -f /samba/netlogon/%U.bat


Dan ini adalah script bash untuk mengenerate logon scriptnya. Yang harus di simpan ke /usr/local/bin/genlogonscript.sh dan buat jadi executable. Kalo ragu copy paste, bisa ambil salinan script ini di dropbox gue (link).

#!/bin/bash
# Logon script generator using Bash
# created by Lutfi <lutfi.arab@gmail.com> @2009
#
# Requirement software:
# - tofrodos
#
# Limitation:
# - ldap group have to same with department folder
# - mapping drive from drive L until drive Y
#
# define your server here

servername=SAMBASVR
logonscriptdir=/samba/netlogon
logonscript=$logonscriptdir/$1.bat
user=$1

# starting to generate logon script
# set time on client
echo "NET TIME \\\\$servername /SET /YES" > $logonscript

# delete old mapping
drive=( J K L M N O P Q R S T U V W X Y )
for (( i=0; i<${#drive[@]}; i++ )); do
echo "NET USE /DEL ${drive[$i]}:" >> $logonscript
done

# map personal folder
# default samba using \\<samba-server>\<username>
echo "NET USE J: \\\\$servername\\PERSONAL" >> $logonscript

# map public folder
echo "NET USE K: \\\\$servername\\PUBLIC" >> $logonscript

# map department folder
drive=( L M N O P Q R S T U V W )
let driveno=-1

for i in `/usr/bin/groups $user` ;
do
for j in `/bin/ls /samba/department/` ;
do
if [ $i == $j ] ; then
let driveno++ ;
echo "NET USE ${drive[$driveno]}: \\\\$servername\\$i" >> $logonscript ;
fi ;
done ;
done

# map software folder
echo "NET USE X: \\\\$servername\\SOFTWARE" >> $logonscript

# map temp folder
echo "NET USE Y: \\\\$servername\\TEMP" >> $logonscript

# add space here
echo >> $logonscript

# convert text to dos format
cd $logonscriptdir
/usr/bin/unix2dos $logonscript
/bin/chmod 644 $logonscript

#finishing
exit

Contoh hasil generate

Misal generate logon script untuk gue, bisa di cek dulu gue masuk groups apa nih? Oya, gue pake sambldap-tools. Jadi groups udah ada di LDAP dan udah terintegrasi dengan sistem. Tapi kalopun nggak pake LDAP server (murni samba), script ini tetep bisa. Karena deteksi groups gunakan sistem Linux. Misal nih gue masuk groups apa aja:

root@sambasvr:~# su lutfi
lutfi@sambasvr:/root$ groups
Domain Users Domain Admins Administrators mis management

Jadi gue masuk di groups (department): "mis" dan "management". Dan ke dua groups ini punya folder di /samba/department. Group yang laen (Domain Users, Domain Admins dan Administrators) adalah default groups dari Samba. Yang mana nggak ada foldernya. Jadi ini akan diabaikan. Jadi untuk yang ini, jangan punya folder department bernama: Domain, Admins, Administrators dan Users. Inget yah!

Berikut contoh hasil script yang di generate:

root@sambasvr:/samba/netlogon# cat lutfi.bat
NET TIME \\SAMBASVR /SET /YES
NET USE /DEL J:
NET USE /DEL K:
NET USE /DEL L:
NET USE /DEL M:
NET USE /DEL N:
NET USE /DEL O:
NET USE /DEL P:
NET USE /DEL Q:
NET USE /DEL R:
NET USE /DEL S:
NET USE /DEL T:
NET USE /DEL U:
NET USE /DEL V:
NET USE /DEL W:
NET USE /DEL X:
NET USE /DEL Y:
NET USE J: \\SAMBASVR\PERSONAL
NET USE K: \\SAMBASVR\PUBLIC
NET USE L: \\SAMBASVR\mis
NET USE M: \\SAMBASVR\management
NET USE X: \\SAMBASVR\SOFTWARE
NET USE Y: \\SAMBASVR\TEMP

Laen-laen

Script ini akan gunakan drive mapping mulai drive J sampe drive Y. Jadi kalo butuh manually mount, sebaiknya jangan gunakan drive itu. Karena setiap login akan di diskonek dan di bikin drive mapping baru.

See pren, dengan Linux semua jadi bisa kan;-)

21 Mei 2009

Sharing folder/printer client Linux untuk client Windows

Kali ini gue bahasa gemana cara paling mudah untuk sharing folder atau sharing printer client Linux untuk client Windows. Sorry, ini bacaan untuk MIS/IT di perusahaan. Bukan untuk user biasa yah. Karena memang ini cocok diterapkan di jaringan komputer dalam perusahaan. Terutama yang ada client Linux atau client Windowsnya.

Semua client Linux (Ubuntu) disini menggunakan NFS+LDAP. Sedangkan client Windows menggunakan Samba+LDAP. Keduanya sudah tersambung ke LDAP dengan baek. Sekarang gemana sharing printer dan folder di client Linux untuk client Windows? Itu akan gue bahas disini.

Sharing printer

Semua client Linux sharing printernya menggunakan CUPS. Sama sekali nggak pake Samba. Ngapain sharing printer pake Samba? CUPS jauh lebih mudah dari teknologi Windows. Check link ini yah untuk tahu detailnya.

Sharing folder

Hal laen yaitu sharing folder client Linux agar bisa diakses client Windows. Gue pernah singgung artikel beberapa bulan yang lalu tentang nautilus-share di link ini yah. Nah ini yang gue pake. Sorry, gue nggak mau ribet ajarin setting Samba secara lengkap panjang lebar ke MIS. Karena mereka masih baru. Dan terus terang itu nggak simple kan? Jadi solusi dengan nautilus-share akan simple untuk mereka.

Walau hampir semua user menyimpan data di server, solusi seperti harus gue sediakan. Karena dengan user sekitar 400 orang, pasti nggak semuanya ngikutin aturan. Dan itu ternyata ada. Tapi sudah kita tegasin, resiko hilang data di client, kita nggak bisa restore. Kalau data di server hilang, kita bisa restore dari backupnya.

Nautilus-Share

Karena setiap client Ubuntu Linux menggunakan NFS+LDAP, ini contoh saja. Home folder gue sendiri. Fokuskan di permission dan ownershipnya.

root@lutfi:~# ls -l /home/lutfi/
total 1740
-rw-rw-r--  1 lutfi Domain Users   8781 2008-11-28 07:39 todo.txt
-rw-rw-r--  1 lutfi Domain Users   3229 2008-10-29 13:27 avahi.txt
drwxrwxrwx  3 lutfi Domain Users   4096 2009-03-11 16:31 Desktop
drwxrwxr-x 24 lutfi Domain Users   4096 2009-03-09 09:59 Documents
drwxrwxr-x 18 lutfi Domain Users   4096 2009-02-23 08:09 Downloads

Jelas dari hasil di atas, group ownership adalah "Domain Users". Ini karena gue buat LDAP server pake smbldap-tools. Yang hasilnya LDAP server bisa digunakan untuk otentikasi terpusat. Dipake untuk Samba dan semua client Ubuntu. Semua client Ubuntu akan masuk dalam group "Domain Users".

Dan masing-masing home folder, ini listnya:

root@lutfi:~# ls -l /home/
total 16
drwxr-xr-x 120 lutfi    Domain Users 12288 2009-03-11 16:17 lutfi
drwxr-xr-x  32 sysadmin sysadmin      4096 2009-02-23 09:19 sysadmin

User "sysadmin" itu di create waktu install Ubuntu. Levelnya root (administrator) tentunya. Jadi bisa gunakan sudo dengan user ini. Sedangkan user "lutfi" hanya sebagai user saja. Tidak bisa gunakan sudo. Jadi tidak bisa melakukan fungsi-fungsi root.

Jadi jelas disini, untuk melakukan perubahan sistem, harus gunakan user "sysadmin". Termasuk untuk melakukan share dengan nautilus-share, gunakan login "sysadmin". Karena login user masing-masing tidak akan diijinkan.

Untuk install nautilus-share, lakukan ini:

sudo apt-get install nautilus-share samba libpam-smbpass

Setting nautilus-share sebenernya nggak beda sama Samba. Cuman udah dibuat sesimple mungkin. Ini contoh settingnya default dari Ubuntu Linux 8.04 LTS:

root@lutfi:~# cat /usr/share/doc/nautilus-share/examples/smb.conf

[global]
workgroup = HOME
security = share

usershare path = /var/lib/samba/usershare
usershare max shares = 100
usershare allow guests = yes
usershare owner only = yes
wins support = no

Dengan memperhatikan permission dan ownership tadi, sekarang kita akan rubah setting defaultnya seperti ini dan simpen ke /etc/samba/smb.conf.

root@lutfi:~# cat /etc/samba/smb.conf

[global]
workgroup = DOMAINKU
security = share

usershare path = /var/lib/samba/usershares
usershare max shares = 100
usershare allow guests = yes
usershare owner only = yes
wins support = no
force group = "Domain Users"
force create mode = 0664
force directory mode = 0775


Oya, ada sedikit bug di sini. Pada bagian "usershare path" defaultnya adalah "/var/lib/samba/usershare". Ganti menjadi "/var/lib/samba/usershares" (hanya menambah satu hurus S saja).

OK. Restart aja service Samba. Dan ready untuk digunakan. Ingat, harus login dengan "sysadmin" dan silakan share folder. GUI untuk sharenya sesimple Windows. Klik kanan foldernya, lalu klik "Sharing options".

Umask penting juga

Client Linux sangat berkaitan dengan umask dalam melakukan penulisan/perubahan baek file dan directory di system. Secara default umask=022. Dan nilai itu akan menjadi masalah kalau menginginkan sharing folder dengan user laen. Baik user Linux laen (dengan NFS) ataupun dengan user Windows. Gue nggak mau jelasin panjang lebar hal ini, tapi ada baeknya dirubah menjadi umask=0002. Silakan rubah di file /etc/profile tentunya root/admistration yang bisa merubah ini.

Spread to all client

Ubah umasknya, copy /etc/samba/smb.conf filenya, install paketnya. Ready deh. Semua client bisa sharing dengan mudah. Tentunya, hanya untuk MIS/IT deh.

Goodluck pren

01 Maret 2009

Pengganti Logon Script di Ubuntu Linux (Gnome)

Satu fasilitas yang sangat memudahkan user Windows mengakses file di server Windows adalah logon script. Biasanya diletakkan di server Windows. Dan setiap client Windows yang sudah join domain, ketika login ke domain tersebut akan menjalankan logon script ini. Semua folder yang diberikan akan langsung muncul di My Computer sebagai map folder.

Fasilitas seperti ini akan sangat memudahkan user Windows mengakses data di server. Sayangnya ini teknologi Windows. Hanya bisa digunakan untuk client Windows dengan server Windows (atau server Linux dengan Samba). Gemana client Linux (terutama Gnome) dengan server Linux (menggunakan NFS)?

Di Linux ada namanya automount (paket autofs). Tapi ini jelas beda. Autofs di mount sebelum user login. Sedangkan logon script di Windows akan dijalan setiap user login. Beda user bisa aja beda logon script. Jadi mapping foldernya akan beda lagi.

Karena NFS udah dimount di salah satu folder. Semuanya biasanya akan jawab, nggak terlalu perlu fasilitas seperti itu. Bener juga. Sayangnya gue nemukan kendala di Linux dengan knowledge user. User yang masih baru. Dan hanya tau menggunakan OpenOffice.org saja. Setelah pegang Linux, gue nggak yakin mereka tau menggunakan File-Browser (Nautilus) dengan baek. Apalagi struktur directory Linux yang jelas beda sama Windows.

NFS diretory

Semua kebutuhan user sebenernya ada di directory /server. Jadi di setiap komputer udah termount NFS ke directory itu melalui file /etc/fstab.

server.mydomain.com:/ /server nfs4 rsize=8192,wsize=8192,timeo=14,intr 0 0

Ada 5 folder dalam directory /server. Dengan struktur seperti ini:

/server/
+ personal/[username]/
+ division/[departement_name]/
+ netlogon/
+ pubic/[department_name]/
+ software/
+ temp/

Untuk memudahkan mereka, beberapa map folder yang selalu mereka dapatkan waktu masih pake Windows, akan digantikan dengan bookmark (gtk-boormarks yang ada dalam File-Browser/Nautilus). Tentu saja, dulunya kita lakukan secara manual waktu install Ubuntu Linux. Berikut beberapa folder dari NFS yang kita bookmark:
  • Folder personal (base on username)
  • Folder departemen (base on departemen name)
  • Folder public (semua user bisa read, tapi read/write hanya pada folder departemennya)
  • Folder software (semua user bisa read, hanya MIS bisa read/write)
  • Folder temp (semua user bisa read/write)
Kendala muncul dengan bookmark ini. Karena banyak komputer yang dipake lebih dari satu user. Bahkan user laen bisa saja pinjem komputer Linux di dekatkan untuk akses datanya di server. Dan karena bookmark manually hanya user tertentu, user baru yang login ke Ubuntu Linux nggak akan nemukan bookmarks tentunya. Mau nggak mau mereka akan kontak MIS. Dan tanya dimana yang di server? Kenapa nggak muncul di bookmarks seperti user laen?

Resiko ini yang pengen kita kurangin. Gemana caranya user bisa login ke Ubuntu Linux, dan bookmark akan langsung muncul secara otomatis. Seperti client Windows lah. Login apa saja usernamenya, map folder dari logon script akan langsung muncul di My Computer. Ini jelas-jelas akan menghemat banyak waktu untuk mereka. Apalagi bookmarks ini akan slalu muncul di hampir semua aplikasi Gnome (Ubuntu). Terutama pada OpenOffice.org yang selalu mereka gunakan tiap hari.

Autostart untuk system

Umumnya user akan menambahkan autostart di menu System - Preferences - Sessions. Tapi penambahan disini hanya untuk user yang aktif. Agar scriptnya bisa diload di semua login user, bisa ditempatkan di /etc/xdg/autostart. Misal dengan nama file "makebookmarks.desktop".

$cat /etc/xdg/autostart/makebookmarks.desktop

[Desktop Entry]
Type=Application
Encoding=UTF-8
Version=1.0
Name=Make Bookmarks Script
Name[en_US]=makebookmarks
Exec=/server/netlogon/makebookmarks
X-GNOME-Autostart-enabled=true
OnlyShowIn=GNOME;


Dengan file makebookmarks.desktop ini, script /server/netlogon/makebookmarks akan diload setiap kali user login. Kalau bookmarks ada yang hapus, akan digenerate lagi.

The script

Kalo diliat dari file .desktop tadi, scriptnya di /server/netlogon/makebookmarks. Jangan lupa set permission 755 agar script bisa dijalankan. Dan file ini ada di server yah. Jadi cukup 1 files aja. Perubahan file ini akan efek ke semua user. Itu yang perlu diingat.

Adapun bookmarks di Gnome (Ubuntu) biasanya disimpan di $HOME/.gtk-bookmarks. File ini akan digenerate otomatis saat pertama kali create/add user. Tentu saja jika belum ada file .gtk-bookmarks di home folder. Dan default bookmarksnya untuk Ubuntu 8.04 LTS (Hardy Heron) adalah:
  • Documents
  • Pictures
  • Music
  • Videos
Tapi kalo udah ada file .gtk-bookmarks, Gnome tidak akan generate lagi. Jadi karena kita pengen generate sendiri, sebaiknya ke 4 bookmarks default di atas disertakan kalo emang perlu. Berikutnya baru generate bookmarks untuk folder-folder di NFS.

Hal laen, semua client Ubuntu disini tersambung ke LDAP. Jadi semua usernamenya dari LDAP. Kecuali satu username "sysadmin" yang local (bukan dari LDAP). Yang biasanya ditanyakan waktu installasi. Login dengan username sysadmin, tentunya akan langsung menjalan script ini juga. Karena sysadmin hanya untuk MIS configure client (bukan untuk akses server), script ini akan menghentikan operasinya. Dan Gnome akan mengenerate bookmarks default saja.

Yang butuh scriptnya, silakan download disini. Di dropbox gue nih (link).

Hasilnya di File Browser (Nautilus):



Dan open dialog OpenOffice.org



Goodluck pren

02 Januari 2009

Mirroring Samba/NFS server dengan rsync

Pernah nggak alamin kehilangan file di server gara-gara pihak MIS salah perintah? Moga-moga jangan sampe yah. Tapi itu mungkin aja bisa terjadi kan. Karena disini MIS nya baru pake Linux. Beberapa perintah dasar terminal, seperti cp (copy) mv (move/rename) rm (remove) rsync (mirroring) dan laennya, kurang satu karakter saja bisa menghasilkan hal yang berlawanan.

So pointnya, data di server harus selalu terbackup atau tersinkron. Jika sewaktu-waktu ada hal seperti itu, gue akan gampang selametin keaadaan seperti ini. Disamping itu, hal yang satu ini juga untuk menghindari beberapa hal berikut:
  • Kesalahan disisi user. Kadang mereka hapus file secara sengaja dan pengen merestorenya di laen waktu.
  • Kesalahan disisi user. Kadang mereka hapus file secara nggak sengaja. Tau deh gemana 1 folder di departmen folder bisa hilang gitu aja. Mungkin aja ada yang salah klik mouse. Namanya juga 1 departemen kemampuannya bisa berbeda-beda.
  • Menghindari user yg resign dengan menghapus semua filenya :-p
  • Proses restore yang cepat dibanding restore dari tape backup
  • Dan laennya ...
Hanya dengan 1 harddisk gede (murah kan sekarang), bisa selametin banyak hal. Asal slalu pantau prosesnya. Gue sih sinkron data di server PDC ke salah satu harddisk di BDC server. Hanya dengan "rsync" saja. Tiap malem tuh. Dan paginya bisa dapat report rsync via email.

PDC gue jalan dengan service Samba dan NFS. Dan gue jalankan rsync di BDC. Loe gak harus taruh di BDC. Itu cuman istilah gue agar pengguna Windows server mudah ngertinya. Karena cara ini bisa backup apa aja kalo mau. Nggak cuman Samba atau NFS. Dan nggak cuman di Linux. Windows juga bisa. Kan rsync bisa jalan di Windows juga ;-)

Untuk gunakan script ini, jangan lupa install openssh-server di PDC dan BDC. Lalu coba gunakan otentikasi public key untuk user root dari BDC ke PDC. Detilnya coba pelajarin di help.ubuntu.com. Dengan cara ini, script di BDC akan running tanpa tanya username & password jika konek ke openssh-server di PDC.

Script ini save ke /etc/cron.daily dan jangan lupa permission set ke 755. Jangan lupa sesuaikan 3 baris definisinya:


#!/bin/bash
#
#Definition of source folder, mirror folder and trash folder
#
# sourcedir => Folder Data di PDC
# backupdir => Mirror folder di BDC
# trashdir  => Archive deleted file di BDC
#
sourcedir="root@pdc.domain.com:/svr/"
backupdir="/svr/mirror/pdc/"
trashdir="/svr/mirror/deleted/"
#
#Process
trashdir2="$trashdir`date +%Y`/`date +%m`/`date +%d`"
/bin/mkdir -p $trashdir2
/usr/bin/rsync -avh --stats --delete \
    --exclude=temp/ \
    --backup --backup-dir=$trashdir2 $sourcedir $backupdir


Agar semua user bisa restore sendiri tanpa harus lewat MIS, tentu saja di BDC harus juga miliki user & grup yang sama dengan PDC. Backend LDAP utk Samba/NFS disini akan menunjang sekali. Tambahkan share folder ini di smb.conf pada BDC.

[mirror]
    comment = Backup Folders
    path = /svr/mirror/
    writeable = no
    guest ok = no
    force group = "Domain Users"

Dan semua user bisa mengaksesnya dari alamat ini:

\\bdc\mirror\pdc\
\\bdc\mirror\deleted\<tahun>\<bulan>\<tanggal>\

Alamat ke 1 di atas adalah data 1 hari sebelumnya. Alamat ke 2 itulah yang berisi semua file yang pernah di hapus user. Karena stiap kali rsync melihat perubahan di PDC, file yang ada di BDC, nggak langsung di hapus. Melainkan di archive ke $trashdir dengan pengelompokan berdasar tanggal, bulan dan tahun.

Ok. Smoga bermanfaat deh




07 Desember 2008

Share TEMP folder

Kebiasaan yang jelek yang gue temukan di company gue adalah kurang memanfaatkan computer. Satu contoh nih. Mereka masih suka pake USB Flashdrive untuk copy file antar PC. Lucu kan? Udah ada computer yang tersambung jaringan, masih juga untuk nyalin file seperti itu. Hal ini karena strategi MIS lama yang gue rasa culun. Maklum deh karena manager MIS lama bukan orang IT. Cuman menang persodaraan aja ma salah satu direktor. Jadi asal jalan aja :-D

Ini semua diperparah dengan banyaknya server yang saling nggak tersambung. Jadi user masing-masing server suka kelimpungan. Itulah kenapa mreka suka pake flashdrive. Dan penggunaan flashdrive harus gue kurangin. Karena resiko virus aja. Walo udah pake antivirus, namanya virus baru perlu jadi perhatiian juga kan?

Disini server samba di Ubuntu Linux 8.04 LTS Edition beraksi. Simple aja. Sediakan share folder TEMP yang bisa diakses siapa aja tanpa perlu masukin username and password. Client yang sudah join ke samba, mapfolder TEMP udah terintegrasi di logon script. Dan yang pake Linux, TEMP folder di NFS server udah ke bookmark. Tinggal kirim email ke semua user yang masih di server-server lama tentang folder TEMP yang bisa diakses dari semua client, cukup dengan:
  1. Start -> Run
  2. Type: \\SERVER\TEMP
  3. Silakan copy file ke folder ini dan bisa diakses dari client mana saja
  4. Kalo udah kelar urusannya, lupain !!! Tanpa perlu repot-repot apusnya
Karena share folder TEMP emang akan dikosongkan tiap malem. Well ... dalam 1 minggu MIS nggak pake USB lagi. Dan dah mulai nyebar ke temen-temen mereka tuh.

Caranya tentunya gampanglah. Pasti ente-ente semua juga tau setting sambanya:

[temp]
    comment = Temporary Folders
    path = /svr/temp
    writable = yes
    guest ok = yes


Setelah itu jangan lupa dibuka permission folder /svr/temp untuk semua:

sudo chmod 777 /svr/temp

Sedang untuk pengosongan folder itu tiap malem, buat script simple ini di /etc/cron.daily/empty-temp saja:

#!/bin/bash
/bin/rm -Rf /svr/temp/*
echo FYI ... >> /svr/temp/README.TXT
echo All files in this folder will delete every night  >> /svr/temp/README.TXT
echo Just for temporary folder only  >> /svr/temp/README.TXT
echo >> /svr/temp/README.TXT
echo MIS >> /svr/temp/README.TXT
/usr/bin/unix2dos /svr/temp/README.TXT
/bin/chown root.root /svr/temp/README.TXT
/bin/chmod 444 /svr/temp/README.TXT


Kalo udah, ubah permissionnya agar bisa jalan di cron:

sudo chmod 755 /etc/cron.daily/empty-temp

Script tadi juga akan menambahkan file README.TXT ke dalam folder TEMP. File text doang, just untuk informasi bagi siapa aja yang akses. File text ini harus bisa dibuka pake notepad. Jadi loe butuh program unix2dos. Intall aja paket "tofrodos" untuk dapetinnya.

sudo apt-get install tofrodos

Oya, jangan gunakan /tmp folder untuk share ini yah. Folder /tmp dipake untuk system Linux. Bahaya :-D
Urusan security chmod 777, wah jangan ngejeplak haram deh. Semua itu ada alasan dan tempatnya. Ini untuk local network. No problem sama skali.

01 Desember 2008

Service Samba dan NFS kerja bareng

Nggak terasa sudah 1 bulan proses migrate client. Dan udah mencapai 30 client using Ubuntu Linux 8.04 LTS Edition. Tentunya lumayan juga nih. Komplain yang masuk nggak terlalu berarti. Kebanyakan hal-hal simple yang udah gue tulis di blog ini. Dan karena udah gue coba di MIS selama 1 bulan sebelumnya, nggak ada perubahan berarti dari cloning image Ubuntu yang gue bikin.

Sekarang gue mo jelasin gemana 1 buah server dengan Ubuntu-Server 8.04 LTS edition gue gunakan untuk layanin semua user Windows and Linux. Dimana service ini sangat berarti dan saling berkaitan. Oya, pake Linux laen sama aja lah. Karena konsepnya emang sama.

Server Otentikasi

Pake paket "slapd" (openldap server). Tapi generate accountnnya gunakan "smbldap-tools". Sebenernya gampang banget. Coba baca file "/usr/share/doc/smbldap-tools/README.Debian.gz". Loe akan tau bikin LDAP server di linux itu gampang. Kalo butuh dokumentasi PDF nya, folder /usr/share/doc/smbldap-tools adalah tempatnya.

Dan ini penting karena semua server and client akan gunakan 1 username and 1 password aja. Baek itu client Linux dan client Windows. Simple aja untuk user. Tapi untuk administrator and programmer, well... kemudahan di user, terpusatnya security, itulah profesionalisme kita kan ;-)

Server Samba

Server ini akan layanin Windows client. Tentunya sambanya harus tersambung ke openldap server di atas. Sekali lagi, dokumetasi di file "/usr/share/doc/smbldap-tools/README.Debian.gz" akan sangat membantu.

Server NFS

Server ini akan layanin Ubuntu Linux client. Tau kan namanya NFS, paling simple banget settingnya. Nggak seperti setting Samba yang ribet dan acakaduk. Tapi urusan account/permission, NFS nggak mau tanggung jawab. Itu akan dihandle system.

Karena account di client and server harus sama. Itu artinya, loe harus pake NIS, NIS Plus atau LDAP. Dan openldap-server adalah pilihan gue. Server LDAP ini akan dipake semua server, client dan hampir semua service. Seperti otentikasi mail server, jabber server, web server, otentikasi CUPS, dan laennya.

Server DNS/DHCP

DNS lokal akan sangat bermanfaat. Karena gue butuh hostname semua client slalu terupdate DNS lokal. Ini karena gue nggak suka cara MIS hadalin ip address. Busyet... gue yang paling merana. Gue paling benci apalin angka :-D Kalo puluhan masih mending. Ini dah dekatin 400 ip address. Emangnya otak gue terbuat dari Intel core duo :-p

Jadi sekarang, DHCP auto update ke DNS udah berfungsi. Kalo ip gantipun, di DNS lokal slalu terupdate. Ganti hostnamepun akan sama terupdate. Efeknya sharing folder and sharing printer, cukup pake hostname. Dan ini lebih gampang and logis untuk diapalin. Juga hal-hal laen disini menggunakan hostname (from DNS). Bukan IP address.

Struktur directory dan ownership/permission

Ini struktur directory di server. Terutama folder /svr yang semua foldernya di share. Terdiri dari :
  • Netlogon folder
    Hanya untuk Windows Client
  • Personal folder
    Masing-masing username dapat 1 folder. Username berbeda nggak bisa akses
  • Division folder
    Masing-masing division dapat 1 folder. Member dalam 1 departemen bisa saling read/write. User dari departemen laen nggak bisa akses
  • Public folder
    Masing-masing division dapat 1 folder. Member dalam 1 departemen bisa saling read/write. User dari departemen laen hanya bisa read only

Dan ini details ownership/permissionnya:

drwxrwxr-x root root netlogon
-rwxr-xr-x root root dep1.bat
-rwxr-xr-x root root dep2.bat

drwxr-xr-x root root personal
drwx------ user1 Domain\ Users user1
drwx------ user2 Domain\ Users user2

drwxrwxr-x root root division
drwxrwx--- root dep1 dep1
drwxrwx--- root dep2 dep2

drwxrwxr-x root root public
drwxrwsr-x root dep1 dep1
drwxrwsr-x root dep1 dep2

Ati-ati untuk folder public/dep1 tuh. Pake chmod 2775. Supaya semua file didalamnya dan subfoldernya juga dimilikin group dep1.

Samba Setting

Settingnya gue sensor yah. Karena emang sama aja sih. Cuman bagian ini akan penting deh.

[global]
...
create mask = 0664
directory mask = 0775
force create mode = 0664
force directory mode = 0775

[personal]
comment = Home Directories of %u
path = /svr/personal/%u
browseable = no
writeable = yes

[dep1]
comment = Dep1 Folders
path = /svr/division/mis
writeable = yes
guest ok = no
force group = "Domain Users"
valid users = @dep1
write list = @dep1

[public]
comment = Public Folders
path = /svr/public
writeable = no
guest ok = yes
write list = "@Domain Users"

NFS export files

File /etc/exports untuk sharing folder /svr detailnya berikut. Gue pake NFS4 nih.

/svr 172.16.0.0/16(rw,async,no_subtree_check,fsid=0,crossmnt)
/svr/personal 172.16.0.0/16(rw,async,no_subtree_check)
/svr/division 172.16.0.0/16(rw,async,no_subtree_check)
/svr/public 172.16.0.0/16(rw,async,no_subtree_check)

Create account LDAP

Setiap username di LDAP server, udah di set login scriptnya. Jadi 1 departmen 1 login script saja. Ini contohnya:

#smbldap-useradd -a -m -E dep1.bat -M user1@domain.fqdn -N Namadepan -S Namakluarga user1
#smbldap-passwd user1
#smbldap-groupadd -a dep1
#smbldap-groupmod -m user1 dep1

Additional features

Antivirus sangat sangat bagus deh. Coba pake aja dazuko+clamav. Bisa layanin ke 2 OS di client. Sayangnya harus gue harus disable karena servernya kurang gegas aja. Kalo server-server generasi baru yg multi processor, harddisk SCSI, dah memori gede sebaiknya aktifkan aja. Karena virus dari USB Flashdrive musimnya nih.


Fokus client

Karena ada 2 jenis OS (Windows and Linux), gue bagis fokusnya ke 2 OS itu deh. Walau ada 1 user kadang bawa notebook Mac-nya. Tapi no problem. Karena Mac bisa pake protocol SMB:// seperti di Linux.

Windows client

Cukup dengan join ke domain. Ini akan mendapatkan kemudahan map folder dari server ke My Computer. Mereka akan mudah mengaksesnya folder:

Drive P: \\server.fqdn\personal\<username>
Drive Q: \\server.fqdn\division\<department_name>
Drive R: \\server.fqdn\public\<department_name>

Linux client

Juga harus join domain (istilah M$ :-p). Sebenernya nggak sih. Cukup join ke LDAP server. Sehingga semua account di LDAP server bisa login ke Ubuntu tanpa perlu create masing-masing account di semua Ubuntu client lah. Dan NFS akan sangat terbantu dengan samanya account di client dan di server.

Install aja paket "ldap-auth-client" di semua Ubuntu client. Sehabis restart, Ubuntu client dah tersambung dengan LDAP server. Solusi Ubuntu yang simple and asyik deh. Kalo pake Fedora, system-config-auth kurang lebih sama deh.

Hal laen yang penting adalah default umask di Ubuntu. Defaultnya 022 di baris terakhir file /etc/profile. Gue ganti jadi 002. Ini supaya di folder "<division>" dan "public/<division>", user dalam 1 departemen bisa saling edit file.

File /etc/fstab di user:

server.fqdn:/personal /server/personal nfs4 rsize=8192,wsize=8192,timeo=14,intr 0 0
server.fqdn:/division /server/division nfs4 rsize=8192,wsize=8192,timeo=14,intr 0 0
server.fqdn:/public /server/public nfs4 rsize=8192,wsize=8192,timeo=14,intr 0 0

Untuk memudahkan user, di File-Browser (Nautilus) udah kita bookmarks folders masing:

personal -> /server/personal/<username>
division -> /server/division/<departemen_name>
public -> /server/public/<departemen_name>

Jadi user cukup klik menu Places -> Home, semua folder lokal dan folder di server udah ready.

Kendala

  1. Fresh install Ubuntu, ada kendala dengan Nautilus nggak bisa support umask 002. Selalu saja nyimpan file dengan umask 022. Versi updatenya dah nggak ada problem lagi.
  2. Change password dari Ubuntu client, password Windows nggak terupdate. Di LDAP server, setiap account punya 2 password (posix and LM). Gue sepertinya masih harus belajar penggunaan libpam-smbpass. Kalo dari Windows client, nggak masalah. Ke dua password terupdate dengan baek.
  3. Permission file dari USB flashdrive gak ngikutin umask. Hal yang nggak terlalu penting sih. Tapi kadang bikin ribet kalo harus jelasin ke client cara rubah permission.