Friday, December 21, 2007

FingerPrint Reader di Ubuntu Gutsy

Berhubung notebook yang aku gunakan memiliki FingerPrint Reader device, rasanya sayang aja kalau nggak bisa aku gunakan di Ubuntu. Lagipula aku sekarang udah jarang menggunakan Windows di notebook yang biasa aku gunakan. Cuma berhubung notebook Toshiba Portege M600 ku memang dirancang untuk Windows, jadi ada beberapa fitur-fiturnya yang kalau mau digunakan di Ubuntu mesti diutak-atik sendiri, salah satunya ya FingerPrint Reader itu.

Setelah mencoba googling, aku temukan package yang bernama ThinkFinger (dapat dilihat di https://wiki.ubuntu.com/ThinkFinger). Menurut sumber tersebut package tersebut dapat digunakan di hampir semua notebook Lenovo/Thinkpad, Dell, dan Toshiba. Beruntung notebook punyaku masuk daftar :P

Instalasi
Menggunakan Package
Versi terakhir package Thinkfinger ini adalah 0.3. Versi 0.3 ini dapat diunduh dengan menambahkan

deb http://ppa.launchpad.net/jldugger/ubuntu gutsy main restricted universe multiverse
deb-src http://ppa.launchpad.net/jldugger/ubuntu gutsy main restricted universe multiverse

di /etc/apt/sources.list lalu kemudian jalankan

sudo apt-get install thinkfinger-tools libpam-thinkfinger

untuk melakukan proses instalasi

Menggunakan Source

  1. Unduh source Thinkfinger dari http://sourceforge.net/project/showfiles.php?group_id=179573


  2. Install package-package yang diperlukan untuk proses kompilasi:

  3. sudo apt-get install build-essential libtool libusb-dev libpam0g-dev pkg-config

  4. Membuat direktori yang akan menyimpan informasi biometric user:
  5. sudo mkdir /etc/pam_thinkfinger

  6. Extract source thinkfinger, lalu jalankan perintah berikut pada direktori thinkfinger untuk melakukan proses kompilasi dan instalasi:

  7. sudo ./configure --prefix=/usr --sysconfdir=/etc --with-securedir=/lib/security --with-birdir=/etc/pam_thinkfinger

    sudo make

    sudo make install

  8. Jika semuanya berjalan dengan lancar, akan ditemukan file pam_thinkfinger.so di /lib/security

Menguji FingerPrint Reader
Untuk menguji apakah driver FingerPrint telah terinstall dengan sempurna, dapat digunakan aplikasi tf-tool. Perintah yang digunakan adalah tf-tool --acquire untuk melakukan scan sidik jari dan tf-tool --verify untuk menguji hasil scan yang diproses dari perintah tf-tool --acquire.

amphie@amphie:~$ sudo tf-tool --acquire

ThinkFinger 0.3 (http://thinkfinger.sourceforge.net/)
Copyright (C) 2006, 2007 Timo Hoenig

Initializing... done.
Please swipe your finger (successful swipes 3/3, failed swipes: 0)... done.
Storing data (/tmp/test.bir)... done.
amphie@amphie:~$ sudo tf-tool --verify

ThinkFinger 0.3 (http://thinkfinger.sourceforge.net/)
Copyright (C) 2006, 2007 Timo Hoenig

Initializing... done.
Please swipe your finger (successful swipes 1/1, failed swipes: 0)... done.
Result: Fingerprint does match.

Konfigurasi PAM (Pluggable Authentication Modules)
Agar dapat digunakan untuk proses autentikasi, maka perlu dilakukan konfigurasi pada PAM agar menggunakan Thinkfinger.
  1. Modifikasi file /etc/pam.d/common-auth sehingga isinya seperti berikut:
  2. auth sufficient pam_thinkfinger.so
    auth required pam_unix.so try_first_pass nullok_secure

  3. Menambahkan data sidik jari ke database dengan menggunakan perintah sudo tf-tool --add-user [nama-user]
  4. amphie@amphie:~$ sudo tf-tool --add-user amphie

    ThinkFinger 0.3 (http://thinkfinger.sourceforge.net/)
    Copyright (C) 2006, 2007 Timo Hoenig

    Initializing... done.
    Please swipe your finger (successful swipes 3/3, failed swipes: 0)... done.
    Storing data (/etc/pam_thinkfinger/amphie.bir)... done.

  5. Untuk melakukan verifikasi sidik jari dari database, dapat menggunakan perintah sudo tf-tool --verify-user [nama-user]

  6. amphie@amphie:~$ sudo tf-tool --verify-user amphie

    ThinkFinger 0.3 (http://thinkfinger.sourceforge.net/)
    Copyright (C) 2006, 2007 Timo Hoenig

    Initializing... done.
    Please swipe your finger (successful swipes 1/1, failed swipes: 0)... done.
    Result: Fingerprint does match.


Nah, sekarang FingerPrint Reader nya sudah dapat digunakan untuk login dari GDM atau ketika diminta password pada saat mengeksekusi perintah dengan menggunakan priveledge su seperti dibawah ini:

amphie@amphie:~$ sudo tf-tool --acquire
Password or swipe finger:
.
.
.

Beberapa masalah pada Tinkfinger-0.3
  1. gksu/gksudo tidak berfungsi dengan benar. Ketika aplikasi dijalankan menggunakan priveledge su, seperti misalnya synaptic, tidak akan muncul prompt untuk memasukkan password di layar. Namun, pengguna harus melakukan autentikasi sidik jari agar aplikasi yang dijalankan bisa tampil di layar.

  2. Konon katanya masalah ini disebabkan karena gksu/gksudo 'tidak mengenali' prompt "Password or swipe finger:", tetapi hanya mengenali prompt "Password:".

    Masalah ini dapat diselesaikan dengan menyunting file /pam/pam_thinkfinger.c dari source dan mengubah isi dari baris 181-184 menjadi seperti berikut:

    if (pam_thinkfinger->isatty)
    pam_prompt (pam_thinkfinger->pamh, PAM_PROMPT_ECHO_OFF, &resp, "Password or swipe your finger: ");
    else
    pam_prompt (pam_thinkfinger->pamh, PAM_PROMPT_ECHO_OFF, &resp, "Password: ");

    Kemudian compile ulang source nya menggunakan cara yang telah dijelaskan diatas.

  3. Fingerprint tidak digunakan untuk meng-unlock screen yang telah di-lock. Untuk melakukan unlock pengguna harus mengetikkan password. Masalah ini terjadi karena direktori /etc/pam_thinkfinger tidak dapat diakses oleh pengguna selain root. Sementara itu aplikasi gnome-screensaver yang digunakan untuk me-lock screen tidak berjalan dengan priveledge root. Solusi dari masalah ini adalah sebagai berikut :

    • Menambahkan group baru, misalnya fingerprint:
    • sudo groupadd fingerprint


    • Menyimpan baris-baris berikut ke dalam file /etc/udev/rules.d/60-thinkfinger.rules (perlu dilakukan reboot):

    • # SGS Thomson Microelectronics Fingerprint Reader
      SYSFS{idVendor}=="0483", SYSFS{idProduct}=="2016", SYMLINK+="input/thinkfinger-%k", MODE="0660", GROUP="fingerprint"

      # the also-needed uinput device
      KERNEL=="uinput", MODE="0660", GROUP="fingerprint"

    • Menambahkan user ke dalam group fingerprint:

    • sudo gpasswd -a [nama_user] fingerprint


    • Membuat user menjadi owner file biometric nya (file [nama_user].bir):

    • sudo chown [nama_user]:root /etc/pam_thinkfinger/[nama_user].bir

    • Memberikan akses readonly pada file biometric untuk user:

    • sudo chmod 400 /etc/pam_thinkfinger/[nama_user].bir

    • Memberikan akses executeonly kepada setiap user untuk mengakses direktori /etc/pam_thinkfinger/:

    • sudo chmod o+x /etc/pam_thinkfinger






0 comments: