Sekilas Tentang Mount Permission

Untuk bisa menggunakan media penyimpanan dalam sistem operasi Linux (dan sistem operasi Unix lain bahkan Mac OSX), kita perlu melakukan proses mount terlebih dahulu. Beberapa distro Linux yang dilengkapi dengan desktop environment (tampilan grafis) melakukan proses mounting secara otomatis. Jadi misalnya kita ingin menyalin data ke dalam USB flash disk, kita menyalin data ke dalam direktori yang dipakai sebagai mountpoint perangkat USB tersebut. Ilustrasi berikut saya ambil dari mesin Ubuntu saya :

Pada contoh di atas USB saya di-mounting otomatis pada direktori /media/ttirtawi/TTIRTAWI. Dari Terminal saya bisa lihat statusnya seperti tampilan berikut :

ttirtawi@ubuntu1404:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        12G  7,2G  4,0G  65% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            492M  4,0K  492M   1% /dev
tmpfs           101M  976K  100M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            501M  200K  501M   1% /run/shm
none            100M   36K  100M   1% /run/user
/dev/sdb1        29G   26G  3,5G  88% /media/ttirtawi/TTIRTAWI
ttirtawi@ubuntu1404:~$ 

OS mengenali flash disk tadi dengan nama perangkat /dev/sdb1. Opsi mount yang digunakan dapat dilihat dengan menggunakan perintah mount seperti contoh berikut ini :

ttirtawi@ubuntu1404:~$ mount | grep sdb
/dev/sdb1 on /media/ttirtawi/TTIRTAWI type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks2)
ttirtawi@ubuntu1404:~$ 

Tanpa proses mount saya tidak bisa langsung menyalin data ke dalam perangkat /dev/sdb1.

Nah ada kalanya OS Linux yang saya gunakan tidak melakukan proses mount secara otomatis. Misalnya yang saya alami saat menggunakan Oracle Linux 6.5. Di sistem ini saya tidak memiliki desktop environment. Saya cuma bisa mengakses command line console saja. Oleh karenanya saat saya perlu menggunakan USB flash disk, saya lakukan proses mounting secara manual dengan perintah seperti berikut ini :

ttirtawi@uimtest-X220:/$ sudo mount  /dev/sdb1 /mnt

Saya lakukan mount USB-nya pada direktori /mnt. Saat saya cek statusnya dengan perintah df -h, nampak USB tersebut siap digunakan :

ttirtawi@uimtest-X220:/$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
/dev/mapper/vg_uimtest-lv_root   30G  8.4G   21G  30% /
tmpfs                           3.8G  420K  3.8G   1% /dev/shm
/dev/sda1                       477M   55M  397M  13% /boot
/dev/mapper/vg_uimtest-lv_home   44G   19G   24G  45% /home
/dev/mapper/vg_uimtest-lv_opt   212G   52G  150G  26% /opt
/dev/sdb1                        29G   21G  8.7G  71% /mnt
ttirtawi@uimtest-X220:/$ 

Lalu saya coba tes membuat sebuah berkas kosong dalam direktori /mnt tadi.

ttirtawi@uimtest-X220:/$ touch /mnt/testing
touch: cannot touch `/mnt/testing': Permission denied
ttirtawi@uimtest-X220:/$

Ternyata saya belum bisa mengisikan data apapun ke dalam USB flash disk tadi. Saya mendapati error Permission denied. Ternyata saya lupa mengatur hak akses user ttirtawi, jadi hanya user root saja yang bisa mengakses USB flash disk tersebut. Saya perlu mengulangi proses mount tadi dengan opsi yang benar. Pertama saya lakukan proses umount dulu, proses ini melepaskan USB flash disk tadi dari mountpoint /mnt.

ttirtawi@uimtest-X220:/$ sudo umount /mnt

Sebelum mengulang proses mount saya cek dulu User ID & Group ID user ttirtawi dengan menggunakan perintah id seperti contoh berikut ini :

ttirtawi@uimtest-X220:/$ id
uid=500(ttirtawi) gid=500(ttirtawi) groups=500(ttirtawi),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
ttirtawi@uimtest-X220:/$ 

Informasi uid & gid tersebut perlu ditambahkan pada perintah mount supaya user ttirtawi bisa menyalin/membaca data dari dalam USB flash disk tadi. Kira-kira perintahnya menjadi seperti berikut ini :

ttirtawi@uimtest-X220:/$ sudo mount -o uid=500,gid=500 /dev/sdb1 /mnt

Dengan tambahan opsi “-o uid=500,gid=500”, saya memberi tahu kernel Linux bahwa user ttirtawi dengan ID 500 diperkenankan mengakses USB flash disk yang terpasang pada direktori /mnt. Setelah itu saya sudah bisa membuat/menghapus berkas ke dalam USB flash disk tadi :

ttirtawi@uimtest-X220:/$ touch /mnt/testing
ttirtawi@uimtest-X220:/$ rm /mnt/testing
ttirtawi@uimtest-X220:/$

Tips ini berlaku tidak hanya untuk USB flash disk, tapi berlaku juga pada setiap jenis media penyimpanan (SSD, harddisk eksternal, SD Card, dsb).

Proxy APT-GET

Untuk memasang aplikasi di Ubuntu saya biasanya menggunakan perintah apt-get install. Dengan perintah ini Ubuntu akan mengambil berkas sumber aplikasi dari repositori online. Sering kali saat berada di kantor saya tidak bisa menggunakan perintah tadi, misalnya seperti contoh tampilan di bawah ini :

ttirtawi@ubuntu1404:~$ sudo apt-get install meld
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following extra packages will be installed:
  libgtksourceview2.0-0 libgtksourceview2.0-common python-glade2 python-gtksourceview2
Suggested packages:
  python-gtk2-doc libgtksourceview2.0-dev
The following NEW packages will be installed:
  libgtksourceview2.0-0 libgtksourceview2.0-common meld python-glade2 python-gtksourceview2
0 upgraded, 5 newly installed, 0 to remove and 320 not upgraded.
Need to get 1.017 kB of archives.
After this operation, 7.572 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
0% [Connecting to id.archive.ubuntu.com (2001:67c:1360:8c01::18)]
^C
ttirtawi@ubuntu1404:~$

Perintah apt-get install tadi berhenti begitu saja karena apt-get tidak bisa mengakses repositori id.archive.ubuntu.com. Hal tersebut terjadi karena di kantor tempat saya bekerja, akses Internet harus melalui proxy server. Solusi yang saya temukan dari Google adalah dengan mengatur apt-get supaya menggunakan proxy juga. Pengaturan proxy untuk apt-get dilakukan dengan membuat berkas konfigurasi seperti berikut ini :

ttirtawi@ubuntu1404:~$ sudo vi /etc/apt/apt.conf.d/10proxy
Acquire::http::Proxy "http://proxy.contoh.com";

ttirtawi@ubuntu1404:~$

Nama proxy server pada contoh di atas hanya sekadar contoh, aslinya saya menggunakan alamat proxy server kantor saya. Setelah menambahkan berkas tadi saya langsung bisa menjalankan perintah apt-get untuk menginstal paket dari repositori online.

ttirtawi@ubuntu1404:~$ sudo apt-get install meld
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following extra packages will be installed:
  libgtksourceview2.0-0 libgtksourceview2.0-common python-glade2 python-gtksourceview2
Suggested packages:
  python-gtk2-doc libgtksourceview2.0-dev
The following NEW packages will be installed:
  libgtksourceview2.0-0 libgtksourceview2.0-common meld python-glade2 python-gtksourceview2
0 upgraded, 5 newly installed, 0 to remove and 320 not upgraded.
Need to get 1.017 kB of archives.
After this operation, 7.572 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://id.archive.ubuntu.com/ubuntu/ trusty/universe libgtksourceview2.0-common all 2.10.5-1ubuntu2 [434 kB]
Get:2 http://id.archive.ubuntu.com/ubuntu/ trusty/universe libgtksourceview2.0-0 i386 2.10.5-1ubuntu2 [142 kB]                                                                                                                               
Get:3 http://id.archive.ubuntu.com/ubuntu/ trusty/main python-glade2 i386 2.24.0-3ubuntu3 [8.328 B]                                                                                                                                          
Get:4 http://id.archive.ubuntu.com/ubuntu/ trusty/universe meld all 1.8.4-1 [342 kB]                                                                                                                                                         
Get:5 http://id.archive.ubuntu.com/ubuntu/ trusty/universe python-gtksourceview2 i386 2.10.1-2build1 [90,2 kB]                                                                                                                               
Fetched 1.017 kB in 18s (55,7 kB/s)                                                                                                                                                                                                          
Selecting previously unselected package libgtksourceview2.0-common.
(Reading database ... 174967 files and directories currently installed.)
Preparing to unpack .../libgtksourceview2.0-common_2.10.5-1ubuntu2_all.deb ...
Unpacking libgtksourceview2.0-common (2.10.5-1ubuntu2) ...
Selecting previously unselected package libgtksourceview2.0-0.
Preparing to unpack .../libgtksourceview2.0-0_2.10.5-1ubuntu2_i386.deb ...
Unpacking libgtksourceview2.0-0 (2.10.5-1ubuntu2) ...
Selecting previously unselected package python-glade2.
Preparing to unpack .../python-glade2_2.24.0-3ubuntu3_i386.deb ...
Unpacking python-glade2 (2.24.0-3ubuntu3) ...
Selecting previously unselected package meld.
Preparing to unpack .../archives/meld_1.8.4-1_all.deb ...
Unpacking meld (1.8.4-1) ...
Selecting previously unselected package python-gtksourceview2.
Preparing to unpack .../python-gtksourceview2_2.10.1-2build1_i386.deb ...
Unpacking python-gtksourceview2 (2.10.1-2build1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for shared-mime-info (1.2-0ubuntu3) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
Processing triggers for bamfdaemon (0.5.1+14.04.20140409-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.54ubuntu1) ...
Setting up libgtksourceview2.0-common (2.10.5-1ubuntu2) ...
Setting up libgtksourceview2.0-0 (2.10.5-1ubuntu2) ...
Setting up python-glade2 (2.24.0-3ubuntu3) ...
Setting up meld (1.8.4-1) ...
Setting up python-gtksourceview2 (2.10.1-2build1) ...
Processing triggers for libc-bin (2.19-0ubuntu6) ...
ttirtawi@ubuntu1404:~$ 

Contoh di atas saya sedang perlu memasang aplikasi “Meld”, aplikasi ini berguna untuk membandingkan 2 buah teks dalam format berdampingan. Ini tampilan Meld saat sedang digunakan :

meld-diff-viewer