Le shell peut s'étendre ~
à votre répertoire personnel. $HOME
a généralement le même accord, mais souvent vous voulez vous référer au répertoire de base des utilisateurs actuels à partir d'un contexte qui ne prend pas en charge une telle expansion.
J'ai eu des fichiers de configuration où cela $HOME
fonctionne mais ~
pas et vice versa.
Je suppose que le fusible pourrait fournir quelque chose dans ce sens, quelque chose comme /var/myself
->$HOME
Avec cela, je pouvais placer des valeurs dans des fichiers de configuration pour pointer vers des choses comme /var/myself/backdrops/pornography/wtf/yarly.jpg
Y a-t-il déjà quelque chose comme ça? Sinon, y a-t-il de bonnes raisons pour qu'il n'y ait pas quelque chose comme ça?
Réponses:
Je comprends votre préoccupation, mais la réponse est «non», il n'y a rien de tel.
La méthode habituelle consiste à demander au système d'exploitation le chemin d'accès de l'utilisateur ou à obtenir la variable $ HOME.
Toutes ces options nécessitent toujours un certain codage de l'application. De nombreuses applications, comme bash, proposent l'alias ~ (open (2) ne traduit pas cela).
Bien sûr, un vfs ou un module de fusible pourrait être implémenté pour ce faire. Il y a probablement quelque chose à faire, je vais demander ça!
Mais est-ce vraiment nécessaire? Vous pouvez utiliser une solution de contournement comme:
Créez un script pour démarrer le programme qui relie $ HOME à un chemin relatif ou à un emplacement connu.
Utilisez pam_exec pour lier le répertoire $ HOME à un emplacement connu http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-pam_exec.html
la source
Une astuce (sous Linux, au moins) serait de changer de répertoire
$HOME
avant d'exécuter l'application, puis de l'utiliser/proc/self/cwd/...
dans le fichier de configuration.la source
/proc/self
pas/proc/PID
, puisque vous ne pouvez pas savoir à l' avance ce que le PID va être.La plupart des programmes vous permettent de spécifier un chemin d'accès au fichier de configuration sur la ligne de commande. Vous pouvez donc écrire un wrapper qui prend un fichier de configuration standard, le filtre pour remplacer des choses comme
$HOME
pour l'utilisateur actuel, puis transmet le fichier de configuration temporaire modifié au programme.la source
Vous pouvez obtenir le pid de requestin user et demander le système de son répertoire personnel. C'est donc possible.
Cependant, je ne sais pas s'il n'existe aucun programme SUID qui supposerait que FS est statique.
Éditer:
Le code ci-dessus n'est pas idéal mais devrait fonctionner pour les cas courants.
la source
getpwuid
ougetpwuid_r
.