Shell dapat diperluas ~
ke direktori home Anda. $HOME
biasanya memiliki kesepakatan yang sama, tetapi seringkali Anda ingin merujuk ke direktori home pengguna saat ini dari konteks yang mungkin tidak mendukung ekspansi tersebut.
Saya memiliki file konfigurasi tempat $HOME
bekerja tetapi ~
tidak dan sebaliknya.
Saya kira sekering itu dapat memberikan sesuatu di sepanjang garis ini, sesuatu seperti /var/myself
->$HOME
Dengan itu saya bisa menempatkan nilai dalam file konfigurasi untuk menunjuk ke hal-hal seperti /var/myself/backdrops/pornography/wtf/yarly.jpg
Apakah sudah ada yang seperti ini? Jika tidak, adakah alasan bagus untuk tidak ada yang seperti ini?
Jawaban:
Saya mengerti keprihatinan Anda tetapi jawabannya adalah "tidak" tidak ada hal seperti itu.
Metode yang biasa dilakukan adalah menanyakan OS jalur asal pengguna, atau mendapatkan variabel $ HOME.
Semua opsi ini perlu selalu dikodekan dari aplikasi. Banyak aplikasi, seperti bash, menawarkan "alias" ~ (open (2) tidak menerjemahkannya).
Tentu saja modul vfs atau sekering dapat diimplementasikan untuk melakukan ini. Mungkin ada sesuatu untuk dilakukan, saya akan bertanya itu!
Tetapi apakah ini benar-benar dibutuhkan? Anda dapat menggunakan solusi seperti:
Buat skrip untuk memulai program yang menautkan $ HOME ke jalur relatif atau lokasi yang diketahui.
Gunakan pam_exec untuk menautkan dir $ HOME ke lokasi yang diketahui http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-pam_exec.html
sumber
Salah satu trik (di Linux, setidaknya) adalah mengubah direktori
$HOME
sebelum menjalankan aplikasi dan kemudian gunakan/proc/self/cwd/...
dalam file konfigurasi.sumber
/proc/self
tidak/proc/PID
, karena Anda tidak bisa tahu sebelumnya apa yang akan PID menjadi.Sebagian besar program memungkinkan Anda menentukan jalur ke file konfigurasi pada baris perintah. Jadi Anda bisa menulis pembungkus yang mengambil file konfigurasi standar, memfilternya untuk menggantikan hal-hal seperti
$HOME
untuk pengguna saat ini, dan kemudian meneruskan file konfigurasi sementara yang dimodifikasi ke program.sumber
Anda bisa mendapatkan pid dari requestin pengguna dan meminta sistem direktori rumahnya. Jadi itu mungkin.
Namun saya tidak yakin apakah tidak ada program SUID yang akan menganggap FS sebagai statis.
Edit:
Kode di atas tidak ideal tetapi harus berfungsi untuk kasus-kasus umum.
sumber
getpwuid
ataugetpwuid_r
.