今天,我惊讶地ssh
发现我的运行 Arch Linux 的机器/run/user/$(id -u)
并不存在。
XDG基本目录规范指出:
$XDG_RUNTIME_DIR
定义相对于用户特定的非必需运行时文件和其他文件对象(例如套接字、命名管道...)应存储的基目录。该目录必须由用户拥有,并且他必须是唯一对其具有读写访问权限的人。它的 Unix 访问模式必须是0700
.目录的生命周期必须与登录的用户绑定。它必须在用户首次登录时创建,如果用户完全注销,则必须删除该目录。如果用户登录多次,他应该被指向同一个目录,并且该目录必须从他第一次登录到最后一次注销在系统上继续存在,并且在这期间不能被删除。目录中的文件不能在重新启动或完整的注销/登录周期后继续存在。
在盒子上systemd
,是/run/user/$(id -u)
首选位置$XDG_RUNTIME_DIR
(即使需要创建?)
如果没有,创建的最佳实践是什么$XDG_RUNTIME_DIR
?
如何确保仅当我“完全”注销时才删除该目录?
(“完全”是否意味着登录 shell 创建的所有进程都已退出?如何检查?)
systemctl --user
对于桌面用户来说似乎工作正常:
dev@dev-VirtualBox:~$ systemctl --user > /dev/null
dev@dev-VirtualBox:~$ echo $?
0
Run Code Online (Sandbox Code Playgroud)
但是当在 www-data 用户下运行相同的命令时,我得到了一个意外的响应
dev@dev-VirtualBox:~$ sudo su www-data -s /bin/bash
www-data@dev-VirtualBox:~$ systemctl --user > /dev/null
Failed to connect to bus: No such file or directory
www-data@dev-VirtualBox:~$ echo $?
1
Run Code Online (Sandbox Code Playgroud)
systemctl --user
这里怎么启用?
运行 Ubuntu 16.04