iOS Apps

Jika sebuah atau beberapa aplikasi bawaan iOS maupun yang berasal dari pihak ketiga pada iDevice Anda tidak muncul, atau secara tiba-tiba menghilang, mungkin saja itu karena masalah permission.

Biasanya masalah seperti ini terjadi pada iDevice yang telah terjailbreak, tapi Anda tidak perlu panik, karena hilangnya aplikasi iOS secara misterius dari Home screen karena masalah permission ini bisa dengan mudah di atasi. Ingat, hanya kalau penyebabnya adalah masalah permission.

File system permission

Permission maksudnya?

Permission itu… dalam istilah komputer adalah hak akses atau ijin akses terhadap sebuah file atau direktori, atau yang Anda kenal dengan folder.

Jadi gini, aplikasi-aplikasi iOS yang berasal dari App Store maupun Cydia itu terinstall pada direktori masing-masing pada file system iOS (bayangkan memori internal). Namun, karena aplikasi App Store dan Cydia asalnya berbeda, maka lokasi direktorinya pun berbeda.

  • Aplikasi-aplikasi bawaan iOS dan yang terinstall dari App Store atau iTunes berada pada direktori /private/var/mobile/Applications.
  • Aplikasi-aplikasi yang terinstall dari Cydia berada pada direktori /private/var/stash/Applications. Direktori stash bukanlah direktori bawaan iOS, tetapi dibuat oleh Cydia.

Karena iOS merupakan UNIX-like, jadi sistem permissionnya juga sama dengan UNIX. File system permission adalah metode pengontrolan hak akses untuk pengguna atau kelompok pengguna tertentu. Sistem permission dapat mengatur kemampuan pengguna untuk melihat (read) atau mengubah isi (write) dari file system.

Jenis-jenis hak akses (permission) ada tiga:

  1. read: Kemampuan membaca isi sebuah file.
  2. write: Kemampuan untuk mengubah isi sebuah file.
  3. execute: Kemampuan untuk mengeksekusi sebuah file.

Sebuah file atau direktori bisa saja diberikan ijin dengan tipe read saja (read-only), read dan write (read-write) atau ketiga-tiganya.

Untuk kepemilikan (owner), pada iOS kita mengenal user mobile dan root. User mobile pada dasarnya adalah tipe user bawaan iOS yang mengontrol file-file atau direktori yang dibuat oleh pengguna biasa. Aplikasi-aplikasi yang terinstall dari App Store atau iOS, serta konten di dalamnya diatur oleh user dengan tipe mobile.

User root adalah tipe user yang bertindak sebagai administrator pada iOS, dapat mengontrol segala jenis file dan direktori pada iOS. User root lebih tinggi kedudukannya dari user mobile, dan oleh karena itu jika Anda bisa mendapatkan hak akses root, maka Anda bisa mengontrol segala isi iDevice Anda.

Salah permission

Secara default, aplikasi-aplikasi bawaan iOS maupun aplikasi yang terinstall dari App Store atau iTunes dan aplikasi dari Cydia akan dikendalikan oleh user mobile, yang merupakan user default. Namun terkadang ada saja kesalahan-kesalahan kecil yang terjadi baik pada saat proses jailbreak maupun instalasi aplikasi dari Cydia. Salah satu akibat dari kesalahan ini adalah berubahnya hak akses (permission) atau user pengendali terhadap sebuah direktori yang berisi sebuah aplikasi. Misalnya, yang awalnya dimiliki oleh user mobile, tiba-tiba dimiliki oleh user root.

Perubahan ijin akses ini bisa membuat sebuah aplikasi “menghilang” dari SpringBoard.

Sebagai contoh, misalkan saja aplikasi XXX terinstall direktori /private/var/mobile/Applications/XXX.app. Jika XXX.app yang tadinya dimiliki oleh user mobile berubah menjadi root, maka aplikasi XXX bisa saja menghilang dari Home screen karena direktorinya tidak terdeteksi secara normal (bukan mobile). Begitupun jika hak aksesnya berubah. Jika tadinya aplikasi XXX dimiliki oleh user mobile dengan hak akses read-write dan kemudian tiba-tiba berubah menjadi read-only, maka aplikasi XXX tidak akan bisa menyimpan perubahan yang dibuat oleh pengguna, karena hak aksesnya telah berubah.

Contoh lain dari masalah permission ini adalah ikon aplikasi yang berubah menjadi blank putih. Masalah ini mungkin terjadi karena file ikon untuk sebuah aplikasi tidak dapat terbaca, atau dieksekusi.

Fix permission

Cara umum untuk mengembalikan aplikasi yang hilang dari Home screen adalah dengan melakukan respring (restart SpringBoard) yang caranya sangat mudah untuk iDevice yang sudah dijailbreak. Tetapi terkadang respring tidak bisa membantu sama sekali, aplikasi yang hilang tetap tidak muncul.

Cara satu-satunya adalah dengan mengambalikan hak akses dari direktori yang bermasalah menjadi seperti semula.

Dari iFile
iFile adalah aplikasi yang sangat berguna untuk menelusuri direktori pada iOS. iFile juga memiliki kemampuan untuk mengatur hak akses dan jenis user pada iOS.

  1. Dari iFile, telusuri kedua direktori berikut:
  2. /private/var/mobile/Applications
    /private/var/stash/Applications

  3. Tap pada tanda panah biru ( > ) di samping nama direktori, kemudian scroll ke bawah dan perhatikan jenis user dari direktori tersebut. Pastikan kalau owner dari direktorinya mobile dan bukan root.
  4. Pastikan juga kalau Read, Write, dan Execute telah tercentang.
  5. Setelah itu, reboot iDevice.

Dari SSH
Jika Anda memiliki akses SSH ke iDevice Anda, Anda hanya perlu menjalankan perintah berikut ini:

Ada apa dengan perintah-perintah di atas?

  • chown: chown (change owner) adalah perintah untuk mengubah kepemilikan (untuk user dan group) dari sebuah file atau direktori.
  • chmod: chmode (change mode) adalah perintah untuk mengubah mode atau jenis hak akses dari sebuah file atau direktori.
  • -R: Proses perubahan dilakukan secara rekursif, yaitu direktori utama dan direktori di dalamnya.
  • 775: Mengubah hak akses menjadi read dan execute untuk semua jenis user, dan write untuk owner atau siapa saja yang berada dalam satu grup dengan pemilik file.
  • /var/mobile/Applications dan /var/stash/Applications: Direktori yang ingin diubah jenis hak akses atau ownernya.
  • mobile:mobile: Jenis owner untuk user dan group.

Dari SBSettings
Cara ketiga ini adalah yang paling mudah, yang penting SBSetting sudah terinstall dari Cydia.

Buka SBSettings, masuk ke System Wide Options > System Options dan pilih Fix User Dir Permissions lalu tap Fix Me.

Semoga cara-cara di atas berhasil mengatasi masalah Anda.

Referensi:
Menggunakan SSH (iOS)