Answers:
我了解您的担心,但答案是“不”,就没有这种事情。
通常的方法是询问操作系统用户的主路径,或获取$ HOME变量。
所有这些选项始终需要应用程序中的一些编码。许多应用程序,例如bash,都提供“别名”〜(open(2)不会翻译该别名)。
当然,可以使用vfs或保险丝模块来执行此操作。可能有要做的事情,我要问这个!
但是真的需要吗?您可以使用类似的解决方法:
创建一个脚本以启动将$ HOME链接到相对路径或已知位置的程序。
使用pam_exec将$ HOME目录链接到已知位置http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/sag-pam_exec.html
一种技巧(至少在Linux上是这样)是$HOME
在运行应用程序之前将目录更改为,然后/proc/self/cwd/...
在配置文件中使用。
/proc/self
不必设置为/proc/PID
,因为您无法提前知道PID的含义。
您可以获取用户的request的pid并询问其主目录的系统。因此有可能。
但是我不确定是否没有将FS视为静态的SUID程序。
编辑:
struct fuse_context *ctx = fuse_get_context ();
struct passwd pwd, *ppwd;
char buffer[1024];
int status = getpwuid_r (ctx->ui, &pwd, buffer, sizeof(buffer), &ppwd);
if (status == 0) {
if (ppwd == NULL) {
// No record found
} else {
// Handle record
}
} else {
// Handle error
}
上面的代码不是理想的,但是应该可以在常见情况下使用。
getpwuid
或getpwuid_r
。