我不想在从 snap 执行专有程序时授予对某些敏感目录的访问权限。这是我目前所做的:
- 创建新用户并限制对主
/home
目录和一些其他目录的读/写访问权限 - 通过以下方式为 GUI 应用程序添加了对其他用户的 X 访问权限
xhost +si:localuser:[user 2]
su
进入其他用户并运行命令
不幸的是,某些程序需要对 具有写访问权限/run/user/1000
,而 则由主用户拥有。例如skype
从 snap 运行。
这里有什么问题?为什么新用户不直接创建一个新run/user
目录?我不太熟悉这些概念,因此非常希望得到详细的解释/修复。
答案1
切换到另一个用户时,似乎su [user 2]
会保留当前 shell 的环境变量。为了解决这个问题,我不得不使用su - [user 2]
。
为了确保新 shell 正常工作,在原始帖子的第 2 步之后需要执行一些其他步骤。
设置适当的
DISPLAY
环境变量。echo $DISPLAY
在 [用户 1] 的 shell 上运行。为 [用户 2] 设置相同的显示。例如,通过export DISPLAY=:0.0
为 [用户 2] 的 shell 运行。[可选] 如果您在 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
感谢原帖评论者对此答案的帮助