我们需要在 Linux 服务器上使用 fapolicyd。这可以防止从我们的主目录运行代码。我们不想让整个主目录免受 fapolicyd 的影响,但我很难找到一种灵活的方法来只允许 vscode 和一些扩展。
我尝试使用共享只读 vscode-server 目录来限制范围,但每个用户都需要写访问权限,这并不比免除整个主目录更好。
我无法在 fapolicyd 规则中使用 glob,因此无法添加 /home//.vscode-server/code- (等)。
我们有很多潜在用户,而且这个数字波动很大,所以我真的不想枚举 /home/user1/...、/home/user2/... 等
有更好的解决方案吗?
出于完全相同的原因,我发现 fapolicyd 中缺乏 glob 或 regexp 支持也令人沮丧。我已经成功如下。第一部分相当干净,但第二部分有点乱。我很想知道其他人是否提出了更优雅的解决方案
启用下载的可执行文件运行。我将以下规则添加到 06-custom_allow.rules (其中 $gituserid 是开发人员的用户 ID):
allow_audit perm=执行 gid=$gituserid exe=/usr/bin/bash : ftype=application/x-executable dir=~/.vscode-server/
启用 VS Code Server 运行。这比较困难,因为每当更新扩展时都会创建一个全新的目录和文件集。为了解决这个问题,我每次由于扩展更新而停止工作时都会运行以下脚本
# /usr/bin/bash
if [[ -z $1 ]]
then
echo 'Specify the user to enable with VS Code Server'
exit
fi
echo "Enabling $1 for VS Code Server. This script must be run with SUDO permissions to be effective"
# Clean up previous trust
rm /etc/fapolicyd/trust.d/vscode-server
# Establish trust on updated vscode-server
fapolicyd-cli --file add "/home/$1/.vscode-server/bin/" --trust-file vscode-server
fapolicyd-cli --update
systemctl restart fapolicyd
您可能需要时不时地清理 .vscode-server/bin 目录,否则它会积累不同的版本并使 vscode-server 信任文件变长