Saya telah melihat orang-orang menyebutkan dalam jawaban lain bahwa itu adalah ide yang buruk untuk memasukkan direktori kerja saat ini (' ') dalam variabel lingkungan Anda , tetapi belum dapat menemukan pertanyaan yang secara khusus menangani masalah ini..
$PATH
Jadi, mengapa saya tidak menambahkan .
jalan saya? Dan jika terlepas dari semua peringatan saya tetap melakukannya, apa yang harus saya perhatikan? Apakah lebih aman untuk menambahkannya ke akhir daripada ke awal?
Jawaban:
Jika Anda satu-satunya pengguna di mesin itu boleh saja, selama Anda tahu apa yang Anda lakukan. Perhatian umum adalah bahwa dengan
PATH
memasukkan direktori Anda saat ini , Anda tidak dapat melihat perintah sebagai daftar konstan. Jika Anda perlu menjalankan skrip / program dari direktori Anda saat ini, Anda selalu dapat menjalankannya secara eksplisit dengan menambahkan terlebih dahulu./
ke namanya (Anda memberi tahu sistem "Saya ingin menjalankan file ini dari direktori saya saat ini").Katakan, sekarang Anda memiliki semua skrip kecil ini di seluruh sistem file Anda; suatu hari Anda pasti akan menjalankan yang salah. Jadi, menjadikan Anda
PATH
sebagai daftar jalur statis yang ditentukan sebelumnya adalah soal memesan dan menyelamatkan diri dari masalah potensial.Namun, jika Anda ingin menambahkan
.
ke AndaPATH
, saya sarankan menambahkannya ke akhir daftar (export PATH=$PATH:.
). Setidaknya Anda tidak akan mengesampingkan binari seluruh sistem dengan cara ini.Jika Anda seorang root pada sistem dan memiliki sistem terkena account pengguna lain, memiliki
.
dalamPATH
adalah resiko keamanan besar: Anda dapatcd
direktori beberapa pengguna, dan tidak sengaja menjalankan script berbahaya sana hanya karena Anda salah mengetik satu atau script yang memiliki nama yang sama dengan biner seluruh sistem.sumber
ls
di direktori Anda saat ini. selanjutnya Anda jalankanls
untuk memeriksa file yang diekstraksi dan Anda sudah menjalankan kode berbahaya.Risikonya adalah seseorang menaruh file berbahaya yang dapat dieksekusi di direktori yang menjadi milik Anda saat ini.
Kasus terburuk terjadi ketika:
.
ada di awal PATH Anda karena perintah standar dapat diganti tanpa Anda sadari (biasanyals
yang bisa menyembunyikan diri dari daftar).Resikonya jauh lebih rendah jika Anda login sebagai pengguna biasa dan memilikinya
.
di akhir PATH Anda tetapi masih ada:Perhatikan bahwa bagaimanapun juga, risikonya masih ada bahkan jika Anda adalah satu-satunya pengguna mesin tersebut. Perangkat lunak berbahaya akan diinstal jika, misalnya, Anda mengekstrak arsip yang diunduh dari situs yang disusupi.
sumber
sl
untuk melihat seberapa sering titik 3 terjadi.alias l=`ls`
.ls
untuk mendapatkan daftar direktori tetapi beberapa proyek yang saya unduh mungkin memilikils
skrip di folder proyek root mereka sebagai jalan pintas ke yang lain.ls
mungkin contoh yang buruk tapi saya pasti bisa membayangkane
untuk mengedit,d
untuk debug,m
untuk make,b
untuk build. Saya memiliki beberapa di antaranya secara global. Jika saya mengetik,m
saya berharap make untuk memulai (shortcut saya), bukan beberapa skrip lokal dipanggilm
untuk mengeksekusi.w
dan[
.Sekalipun Anda selalu sangat berhati-hati dengan apa yang Anda ketikkan, menempatkan
.
pada AndaPATH
, bahkan pada akhirnya, masih tidak aman karena beberapa program mengubah direktori saat ini menjadi/tmp
(yang dapat ditulis dunia) dan juga dapat mencoba menjalankan utilitas yang sebenarnya tidak diinstal, sehingga default ke apa yang ada di/tmp
. Jika ini terjadi, ini adalah vektor serangan.Perhatikan juga bahwa tidak ada banyak kelemahan menghindari
.
diPATH
, karena./
mudah untuk jenis (khususnya pada keyboard seperti QWERTY, di mana karakter ini adalah pada tombol berturut-turut dan tidak perlu Pergeseran) dan menggunakan./
juga akan membantu penyelesaian, sehingga berpotensi menghemat keystrokes pada akhirnya.Jika Anda benar-benar ingin dapat mengetik perintah dari direktori saat ini, maka shell modern (seperti zsh, dengan itu
command_not_found_handler
) dapat menyediakan fitur untuk melakukan itu dengan aman, yaitu memungkinkan Anda untuk menambahkan semua pemeriksaan keamanan yang Anda inginkan dalam handler, sebelum perintah dieksekusi.sumber