GNU/Linux >> Belajar Linux >  >> Linux

Variabel lingkungan dalam tautan simbolik

Meskipun tautan simbolik diselesaikan oleh kernel, Anda masih dapat melakukan trik LD_PRELOAD, membungkus semua fungsi libc yang menggunakan nama jalur dan memperluas komponen $XYZ apa pun dalam string yang dikembalikan oleh 'readlink' (ekspansi parameter). Kemudian beri makan jalur yang diperluas ke fungsi yang dibungkus. Anda harus keluar dari jalur target dari ekspansi shell saat membuat tautan, seperti yang disarankan jaztik.

Karena pustaka yang diinjeksi memiliki akses penuh ke lingkungan pengguna, ini akan memenuhi semua ekspektasi OP.


Ya. tidak masalah. sebenarnya Anda tidak akan benar-benar menggunakan variabel $HOME di tautan Anda, jadi itu tidak akan berfungsi dengan solusi cerdas untuk grup pengguna misalnya. Variabel diterjemahkan oleh shell saat menjalankan perintah, dan konten variabel digunakan dalam tautan.

ln -s ~/test /tmp/test 

diperluas ke

/<path>/<to>/home/test -> /tmp/test

Ah. dan hanya variabel lingkungan dari orang yang memanggil ln yang akan berfungsi. Anda tidak dapat menyimpan variabel lingkungan orang lain di tautan. Variabel diperluas sebelum memanggil perintah.


Jika Anda tidak ingin memperluas variabel dalam tautan, Anda dapat menambahkan tanda kutip tunggal di sekitarnya,

ln -s '$HOME/file/or/folder' newname

Ini akan memberi,

newname -> $HOME/file/or/folder

alih-alih memperluasnya ke set $HOME Anda secara lokal. Seperti yang dijelaskan dalam jawaban lain itu tidak akan mengembangkannya sama sekali. Jadi Anda bisa mis. gunakan untuk symlink ke file di dalam $HOME literal folder.

[Perhatikan bahwa ini bergantung pada sistem - tidak semua sistem mendukung symlink varian]


Tautan simbolik ditangani oleh kernel, dan kernel tidak peduli dengan variabel lingkungan. Jadi, tidak.


Linux
  1. Memeriksa variabel lingkungan

  2. Bagaimana cara menyalin tautan simbolik?

  3. Mengatur variabel lingkungan Linux

  1. Cara Membuat Tautan Keras dan Simbolik di Linux

  2. Cara membaca variabel lingkungan dari suatu proses

  3. Terlalu banyak level tautan simbolik

  1. Referensi Variabel Lingkungan *di* /etc/environment?

  2. Perilaku cd/bash pada tautan simbolik

  3. Tetapkan lingkungan sementara ($PATH)