Sebagai seorang pemula, Anda tentu kadang merasa bingung dengan
beberapa pesan kesalahan di shell command line Linux yang cukup singkat
tanpa penjelasan. Misalnya, saat ingin menjalankan sebuah perintah,
hasilnya “Permission denied”. Tapi kenapa tepatnya permission denied,
padahal Anda sudah login sebagai root, yang mana seharusnya sudah bisa
melakukan apapun? Atau “command not found”. Kok bisa? Padahal nama
perintahnya sudah benar sesuai yang ada di buku/manual, tidak salah
ketik.
Artikel ini menjelaskan beberapa pesan kesalahan umum secara lebih
mendetil: maksud pesan kesalahan, beberapa penyebab umum munculnya pesan
kesalahan tersebut, disertai tip-tip yang relevan.
Command not found
Pesan kesalahan ini muncul jika shell tidak bisa menemukan perintah yang Anda inginkan.
Salah satu penyebab yang paling umum bagi pemula, memang, adalah
salah ketik atau lupa apa nama persis perintahnya. Nama-nama perintah di
Linux kadang “kriptik” atau aneh, sehingga sulit diingat. Sebagian nama
perintah amat disingkat-singkat berupa 2-3 huruf saja, karena dulu
memang di Unix ruang memori dan disk amat amat terbatas sehingga semua
serba superpendek. Contohlah: ls, pwd, du, df. Jangankan pemula,
pengguna veteran pun kadang lupa dengan berbagai perintah atau skrip
yang jumlahnya ribuan itu. Katakanlah a2ensite atau a2dismod, dua skrip
helper di Debian yang sering sekali saya lupa sampai sekarang. Belum
lagi kadang tiap distro memiliki nama perintah yang berbeda: di distro
yang satu “useradd”, di yang lain “adduser”.
Penyebab lain adalah memang program yang Anda inginkan belum
terinstal. Saat Anda menginstal sebuah sistem baru, kadang setting
default dari distro adalah minimalis. Sebuah kebijakan yang cukup baik
sebetulnya. Contohnya, saat menginstal sebuah sistem Debian tanpa GUI
dan berbagai embel-embel, bahkan perintah seperti less pun belum ada.
Apalagi utilitas popular seperti mc atau wget atau editor favorit Anda,
yang harus diinstal dulu. Cara menginstalnya tentu di luar bahasan
artikel ini, karena berbeda-beda sesuai distro (apt-get, yum, klik, dll)
dan selera (GUI, TUI, atau command line).
Penyebab lain yang umum adalah, programnya ada tapi berada di lokasi
yang tidak dicari oleh shell. Perlu dicatat bahwa saat Anda mengetikkan
nama sebuah perintah di shell seperti ini:
$ ketuk
Maka shell seperti bash biasanya mencari ketuk ini di daftar fungsi
atau alias yang telah didefinisikan sebelumnya, atau program atau skrip
bernama ketuk yang ada di filesystem. Untuk program atau skrip yang ada
di filesystem, shell akan mencari hanya di lokasi tertentu saja yaitu
sesuai yang didefinisikan di variabel lingkungan PATH. Mari kita lihat
isi PATH:
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/bin/X11:/bin
Artinya adalah, shell hanya akan mencari di direktori /usr/local/bin,
/usr/bin, /usr/bin/X11, dan /bin, dalam urutan tersebut.
Program-program yang berada di lokasi yang lain, seperti /sbin,
/usr/sbin, /opt/VirtualBox-1.3.8, bahkan di direktori yang saat ini Anda
berada (current directory) pun akan diabaikan. Jadi Anda mungkin
bingung, kok program yang berada di depan mata, yang jika di-”ls” sudah
jelas-jelas ada, ketika ingin dieksekusi kok tetap saja dianggap “not
found”?
Untuk mengeksekusi program-program di luar lokasi standar yang ada di
PATH, Anda dapat menyebutkan lokasinya sebelum nama program, misalnya:
$ /opt/Ketuk-1.2/bin/ketuk
Atau jika Anda saat ini sedang berada di direktori /opt/Ketuk-1.2/doc, Anda bisa menggunakan lokasi relatif:
$ ../bin/ketuk
Salah satu kasus yang umum terjadi adalah: di beberapa distro jika
Anda berubah menjadi root (menggunakan perintah “su”), maka PATH tetap
belum berubah. Akibatnya, jika Anda mencoba menjalankan perintah:
# traceroute http://www.google.com
maka shell tidak menemukan program traceroute ini, yang mana umumnya
berada di lokasi /usr/sbin, yang tidak terdaftar dalam PATH standar user
normal. Untuk memperoleh PATH milik root yang mengandung lokasi-lokasi
sbin: /sbin, /usr/sbin, /usr/local/sbin maka saat berganti menjadi root
Anda perlu menggunakan perintah “su -”.
Ngomong-ngomong, mengapa kelakuan shell seperti itu, hanya mencari
program di PATH? Yang pertama, jelas, supaya proses pencarian program
tidak memakan waktu terlalu panjang. Di dalam sebuah sistem bisa ada
ratusan hingga ribuan direktori dan tidak ada indeks yang sifatnya real
time, terlalu memakan waktu jika shell mencoba menelusuri semua
direktori ini satu per satu.
Alasan lain adalah, dalam kasus current directory, demi keamanan.
Program hanya akan dicari di lokasi yang sudah tertentu dan diketahui
aman (/usr/bin, /bin, dll). Current directory kadang “tidak aman”. Anda
bisa saja sedang berjalan-jalan ke /tmp atau direktori milik user lain.
Bisa aja ada nama program bernama “ls”, “cat”, “less” di direktori
tersebut tapi isinya sama sekali lain. Sekarang bayangkan Anda seorang
admin atau staf shared hosting, dan salah satu user Anda berpura-pura
meminta bantuan Anda untuk melihat sebuah direktori miliknya, dengan
tujuan agar Anda “tak sengaja” menjalankan program “ls”, syukur-syukur
sebagai root. Program ini bisa saja bertujuan untuk menginstal malware
atau memasang backdoor bagi si user. Nah, sudah mengerti bukan mengapa
secara defaultnya shell tidak memasukkan current directory dalam PATH?
Sebagai catatan, untuk mengeksekusi sebuah perintah yang berada di current directory, gunakan sintaks:
$ ./ketuk
Dan jika Anda tetap ngotot ingin agar dapat mengeksekusi
program-program yang ada current directory secara polos, maka Anda dapat
menambahkan current directory ini (“.”) ke dalam PATH, contoh:
$ export PATH=”$PATH:.”
Perintah tadi dapat ditambahkan misalnya ke ~/.bash_profile Anda agar
dieksekusi setiap kali Anda login. Perlu diingat bahwa menambahkan
current directory ke PATH amat tidak dianjurkan karena risiko
keamanannya, terutama jika ini dilakukan untuk user root.
Permission denied
Pesan kesalahan ini muncul jika Anda dianggap tidak memiliki hak yang cukup untuk menjalankan program.
Beberapa program, terutama yang sifatnya setuid, diproteksi dari user atau group tertentu. Misalnya:
$ ls -l /bin/su
-rwsr-x— 1 root su-user 27000 2006-12-08 01:28 su
Di sini terlihat bahwa hanya root dan anggota group “su-user” saja yang diizinkan mengakses /bin/su.
Kadang-kadang Anda mengalami program yang baru Anda kopi atau upload
tidak bisa dieksekusi dengan pesan error permission denied ini. Umumnya
ini karena permission file belum ada bit x (execute), contoh 0644 dan
belum 0755:
$ ls -l ketuk
-rw-r–r– 1 steven steven 373 2007-05-05 06:42 ketuk
Untuk menjalankan sebuah program, dibutuhkan bit x (execute) pada
permission. Meskipun Anda root, kernel tetap akan menolak mengeksekusi
sebuah program atau skrip yang tidak memiliki bit x.
Untuk memperbaiki masalah ini, berikan bit x pada program:
$ chmod +x ketuk
$ ls -l ketuk
-rwxr-xr-x 1 steven steven 373 2007-05-05 06:42 ketuk
Catatan: jika programnya adalah sebuah skrip, maka Anda bisa juga
memanggil skrip ini dengan diawali nama interpreter/bahasa
pemrogramannya. Dengan cara ini, Anda tidak membutuhkan bit x pada si
skrip melainkan cukup bit r (read) saja. Contoh, jika ketuk pada contoh
di atas adalah skrip Perl:
$ perl ketuk
Connection refused, Connection timed out, Connection reset by peer
Tiga pesan kesalahan ini juga sering dijumpai dalam bekerja di
jaringan, dan seorang pemula kadang tidak mengerti jelas maksudnya dan
bedanya satu dengan yang lain. Penyebab munculnya pesan-pesan kesalahan
ini memang beragam.
Jika diterjemahkan, “connection refused” artinya permintaan koneksi
kita ditolak. Umumnya ini terjadi jika kita ingin menghubungi sebuah
service yang sedang mati. Maksudnya mati di sini adalah tidak ada
program (daemon, server) yang sedang mendengarkan (listen) di port yang
ingin kita hubungi. Contoh, cobalah menghubungi sebuah port acak di
komputer Anda sendiri:
$ telnet localhost 23056
Trying 127.0.0.1…
telnet: Unable to connect to remote host: Connection refused
Ini memang karena umumnya tidak ada daemon yang listen pada port
tersebut. Berbeda misalnya dengan port umum seperti 80 (HTTP). Jika
sistem Anda sudah diinstal web server:
$ telnet localhost 80
Connected to localhost.
Escape character is ‘^]’.
Ini artinya kita berhasil konek ke port 80 untuk berbicara dengan web
server. Tekan Ctrl-] (tahan tombol Control diikuti tekan tombol “]”)
untuk keluar.
Apa jadinya kalau webserver kita matikan? Misalnya:
# /etc/init.d/apache2 stop
(di distro tertentu mungkin Anda menggunakan sudo /etc/init.d/apache2 stop).
$ telnet localhost 80
Trying 127.0.0.1…
telnet: Unable to connect to remote host: Connection refused
Kini hasilnya adalah Connection refused, karena tidak ada lagi
program yang mendengarkan koneksi di port 80. Jadi kadang-kadang pesan
kesalahan ini dapat dipakai untuk tujuan monitoring, karena menjadi
indikasi apakah sebuah service hidup atau mati.
Tapi bisa saja pesan Connection refused terjadi karena firewall.
Misalnya, di firewall ada rule untuk me-REJECT paket remote ke port 25,
untuk mencegah program di komputer lokal menghubungi SMTP server remote
(dan melakukan spam, misalnya). Maka jika kita mencoba:
$ telnet mx.yahoo.com 25
Trying 68.142.195.60…
telnet: Unable to connect to remote host: Connection refused
Belum tentu berarti service SMTP di Yahoo! mati, tapi mungkin saja ada firewall yang membuat koneksi Anda gagal.
“Connection timed out” artinya saat Anda mencoba menghubungi sebuah
port remote, tidak ada jawaban balik dari ujung sana. Penyebabnya dapat
berbeda-beda: bisa saja koneksi Anda ke remote host memang amat lambat
sehingga limit waktu koneksi yang ditetapkan terlampaui. Bisa juga
terdapat firewall yang memblokir dengan men-DROP (bukan me-REJECT)
paket-paket yang dikirimkan sehingga permintaan koneksi Anda tidaklah
pernah sampai ke tujuan.
Bagaimana dengan “Connection reset by peer”? Pesan kesalahan ini
terjadi jika koneksi dengan remote host sudah terjadi, namun putus.
Penyebab putusnya bisa antara lain: program di remote host sengaja
memutuskan koneksi. Ini pun penyebabnya bisa macam-macam: IP Anda tidak
disukai oleh si program, sudah ada terlalu banyak koneksi dari IP atau
blok IP Anda, program di sisi sana tewas karena satu dan lain hal, dll.
Penyebab lain adalah masalah koneksi internet, misalnya jika Anda
menggunakan dialup dan saluran telepon terputus atau hang up.
Singkatnya, jika Anda mengalami problem koneksi jaringan, perlu
melihat dulu apakah penyebabnya di sisi sistem Anda, di sisi sistem
remote, atau di antara keduanya (ISP, firewall gateway, proxy, dll).
Selasa, 24 September 2013
Langganan:
Posting Komentar (Atom)
Blog Archive
-
▼
2013
(88)
-
▼
September
(65)
- Perbedaan GNOME & KDE di LINUX
- KODE ERROR & SOLUSI PRINTER CANON MP 258
- Sharing Printer di Terminal OS LINUX DEBIAN
- MEMBUAT FLASHDISK MENJADI RAM
- CARA MENSETTING E-MAIL MOZILLA THUNDERBIRD
- CARA MERESET PASSWORD & MENAMBAHKAN USER BARU DI U...
- MACAM-MACAM PERINTAH DI "DOS"
- CARA ACTIVASI WINDOWS 7 DENGAN MENGGUNAKAN COMMEND...
- KELAS IP ADDRES
- CARA SETTING MODEM SPEEDY
- CARA MENGGANTI PASWORD USER DIUBUNTU
- MENONAKTIFKAN SCREENSAVER DAN POWER MANAGEMENT DIU...
- Cara Install Driver VGA SiS di Linux Ubuntu
- Membuat Tampilan GUI menjadi otomais di SLACKWARE
- Konfigurasi DHCP Server di OS Slackware
- CARA KONEKSI WIRELESS WEP DI SLACKWARE
- KONFIGURASI PROXY DI DEBIAN LENNY
- MEMBUAT FORMULIR DI PASCAL
- MEMPERBAIKI "MySQL" DI SLACKWARE
- RUMUS LUAS SEGITIGA DI PASCAL
- INSTALLASI PASCAL
- SETTING WIRELESS DI SLACKWARE 13.1
- CARA AKSES KONFIGURASI ROUTER CISCO
- DAFTAR SUBNETTING "CIDR"
- SISTEM OPERASI JARINGAN
- AUTHENTIFIKASI USER PHP PADA HOME PAGE USER
- INSTALL PLUGIN DI SLACKWARE
- INSTALLASI & KONFIGURASI MySQL DI SLACKWARE
- KONEKSI INTERNET SPEEDY DI "SLACKWARE"
- PROSES INSTALASI DEBIAN Etch
- MIKROTIK SEBAGAI PROXY SERVER
- MIKROTIK SEBAGAI ROUTER GATEWAY
- MACAM-MACAM SERVER LINUX DI DEBIAN
- MACAM-MACAM SERVER LINUX DI DEBIAN
- PEMAHAMAN TCP/IP
- JENIS-JENIS PORT DALAM JARINGAN
- PENGENALAN IP TUNNEL
- INSTALLASI CLARK CONNECT
- CARA MENGINSTAL SISTEM OPERASI LINUX "SLACKWARE"
- INSTALASI MOODLE DI UBUNTU 8.04
- SPESIFIKASI PERANGKAT NETWORKING & CCTV
- NGOPREK PARTISI HARDDISK DI LINUX
- SEMUA TENTANG LINUX
- Perakitan Radio PCBOX/PCTuperware
- INSTALASI SISTEM OPRASI MIKROTIK
- CONFIGURASI ON LINUX
- FUNDAMENTAL WIRELESS LAN
- INSTALASI PROGRAM DENGAN TAR
- MEMBANGUN WEB SERVER SEDERHANA DI SLACKWARE
- PENJELASAN PESAN KESALAHAN DI LINUX
- MENONAKTIFKAN FIREWALL DI LINUX UBUNTU
- MENCEGAH SERVER LINUX DARI SPOOFING, ROOTKIT & FLO...
- KONFIGURASI DHCP SERVER DI SLACKWARE OS
- DEFAULT PASSWORD UNTUK STREAMYX ADSL MODEM (1)
- KEUNTUNGAN DAN KERUGIAN MENGGUNAKAN TINTA PRINTER ...
- JANGAN BURU-BURU INSTAL ULANG
- KONFIGURASI DEBIAN SERVER
- KONFIGURASI PROXY SERVER DEBIAN
- CARA MEMASANG LAGU PADA BLOG BESERTA KODE LAGUNYA
- CARA MEMASANG ANIMASI DI BLOG
- URUTAN KABEL UTP
- CARA MENGINSTALL MODEM SMARTFREN DI UBUNTU
- CARA INSTAL OS MIKROTIK
- MACAM-MACAM KODE ERROR PRINTER CANON MP 258
- CONTOH SURAT LAMARAN KERJA
-
▼
September
(65)

0 komentar: