Apakah aman untuk ditambahkan. ke PATH saya? Bagaimana bisa?

49

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?

Jander
sumber

Jawaban:

39

Jika Anda satu-satunya pengguna di mesin itu boleh saja, selama Anda tahu apa yang Anda lakukan. Perhatian umum adalah bahwa dengan PATHmemasukkan 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 PATHsebagai daftar jalur statis yang ditentukan sebelumnya adalah soal memesan dan menyelamatkan diri dari masalah potensial.

Namun, jika Anda ingin menambahkan .ke Anda PATH, 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 .dalam PATHadalah resiko keamanan besar: Anda dapat cddirektori 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.

artyom
sumber
1
+ Terima untuk teori yang mendasari dan untuk menyebutkan bahwa masalah masih bisa ada bahkan ketika Anda satu-satunya pengguna di sistem. Kedua jawaban tersebut memunculkan poin yang sangat baik. Saya akan menambahkan bahwa setiap kali Anda berbagi direktori dengan pengguna lain, ada risiko yang meningkat, apakah Anda root atau tidak.
Jander
6
bahkan sebagai satu-satunya pengguna di mesin: setiap kali Anda mengekstrak tar yang tidak terpercaya, ia dapat menempatkannya lsdi direktori Anda saat ini. selanjutnya Anda jalankan lsuntuk memeriksa file yang diekstraksi dan Anda sudah menjalankan kode berbahaya.
lesmana
35

Risikonya adalah seseorang menaruh file berbahaya yang dapat dieksekusi di direktori yang menjadi milik Anda saat ini.

Kasus terburuk terjadi ketika:

  • Anda login sebagai root karena perintah jahat memiliki kekuatan kerusakan tak terbatas
  • .ada di awal PATH Anda karena perintah standar dapat diganti tanpa Anda sadari (biasanya lsyang bisa menyembunyikan diri dari daftar).

Resikonya jauh lebih rendah jika Anda login sebagai pengguna biasa dan memilikinya .di akhir PATH Anda tetapi masih ada:

  • seseorang mungkin menemukan Anda sering salah mengetik perintah dan menginstal yang cocok
  • seseorang mungkin memasang perintah palsu dengan nama yang tidak diinstal.

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.

Jlliagre
sumber
15
Instal sluntuk melihat seberapa sering titik 3 terjadi.
jordanm
atau alias l=`ls`.
Anko
tidak harus berbahaya. Saya berharap lsuntuk mendapatkan daftar direktori tetapi beberapa proyek yang saya unduh mungkin memiliki lsskrip di folder proyek root mereka sebagai jalan pintas ke yang lain. lsmungkin contoh yang buruk tapi saya pasti bisa membayangkan euntuk mengedit, duntuk debug, muntuk make, buntuk build. Saya memiliki beberapa di antaranya secara global. Jika saya mengetik, msaya berharap make untuk memulai (shortcut saya), bukan beberapa skrip lokal dipanggil muntuk mengeksekusi.
GM
@man Benar. Perintah yang tidak berbahaya mungkin tanpa disadari memiliki efek buruk. Perhatikan bahwa perintah huruf tunggal / alias disukai sejak awal Unix karena risiko kesalahan ketik yang tinggi. Standar yang langka adalah wdan [.
jlliagre
3

Sekalipun Anda selalu sangat berhati-hati dengan apa yang Anda ketikkan, menempatkan .pada Anda PATH, 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 .di PATH, 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.

vinc17
sumber