以另一个用户身份运行 GUI 应用程序,需要 /run/user/1000 的写权限

以另一个用户身份运行 GUI 应用程序,需要 /run/user/1000 的写权限

我不想在从 snap 执行专有程序时授予对某些敏感目录的访问权限。这是我目前所做的:

  1. 创建新用户并限制对主/home目录和一些其他目录的读/写访问权限
  2. 通过以下方式为 GUI 应用程序添加了对其他用户的 X 访问权限xhost +si:localuser:[user 2]
  3. su进入其他用户并运行命令

不幸的是,某些程序需要对 具有写访问权限/run/user/1000,而 则由主用户拥有。例如skype从 snap 运行。
这里有什么问题?为什么新用户不直接创建一个新run/user目录?我不太熟悉这些概念,因此非常希望得到详细的解释/修复。

答案1

切换到另一个用户时,似乎su [user 2]会保留当前 shell 的环境变量。为了解决这个问题,我不得不使用su - [user 2]
为了确保新 shell 正常工作,在原始帖子的第 2 步之后需要执行一些其他步骤。

  1. 设置适当的DISPLAY环境变量。echo $DISPLAY在 [用户 1] 的 shell 上运行。为 [用户 2] 设置相同的显示。例如,通过export DISPLAY=:0.0为 [用户 2] 的 shell 运行。

  2. [可选] 如果您在 Skype 等程序中看到类似这样的错误:cannot create directory '/run/user/1001': Permission denied,则只需创建具有适当权限和所有权的目录即可。例如,要创建,run/user/1001请运行以下命令(假设它不存在):

#make sure you're not overriding existing directory properties!
mkdir /run/user/1001
chown -R [user 2]:[user 2]
chmod g-rwx 1001
chmod o-rwx 1001

感谢原帖评论者对此答案的帮助

相关内容