如何使 /run/media/* 上的 ACL 设置保持不变?

如何使 /run/media/* 上的 ACL 设置保持不变?

我有各种虚拟机作为来宾在 Fedora 25 工作站主机上运行。我将虚拟磁盘(以及所有其他个人资料)存储在第二个内置磁盘的不同单独分区上。virt-manager以用户身份运行虚拟机qemu,为了启动磁盘,我需要执行:

sudo setfacl -R -m u:qemu:rwx /run/media/cl

这允许qemu用户使用这些虚拟磁盘来启动虚拟机。但是,如果我重新启动主机系统,ACL 设置就会丢失,我必须再次运行该命令。当我使用 Ubuntu 系统作为主机时,该命令只需要运行一次,并且权限更改在后续重新启动后仍然有效。

如何才能使基于 Red Hat 的系统像 Ubuntu 一样在重新启动后记住修改后的 ACL 设置?

答案1

这是一个 hack,但您可以编写一个快速systemd服务来在启动时运行它,也许在/etc/systemd/system/set-qemu-acl.service.

[Unit]
 Description=QEMU ACL Hack
 Requires=local-fs.target
 After=local-fs.target

[Service]
 ExecStart=/usr/bin/setfacl -R -m u:qemu:rwx /run/media/cl

[Install]
 WantedBy=multi-user.target

然后,只需启用它即可。

sudo systemctl enable set-qemu-acl.service

您也可以在系统表中添加一行cron

* * * * * root /usr/bin/getfacl /run/media/cl | grep 'user:qemu:rwx' || /usr/bin/setfacl -R -m u:qemu:rwx /run/media/cl

或者,由于您是手动安装,因此包装器脚本可以为您完成,也许/usr/local/bin/mount-acl

#!/bin/sh
mount $1 $2
setfacl -R -m u:qemu:rwx $2

然后,sudo mount-acl /dev/partition /run/media/wherever就能带你去你想去的地方,不是吗?

相关内容