【问题标题】:Setcap over SSHFSSSHFS 上的 Setcap
【发布时间】:2019-08-26 17:27:02
【问题描述】:

我正在我的机器上运行一个虚拟机,并使用 sshfs(通过 fstab 自动安装)在虚拟机内安装了一个主机文件夹。

abc@xyz:/home/machine/test on /home/vm/test type fuse.sshfs (rw,relatime,user_id=0,group_id=0,allow_other)

那个文件夹有一个我想在虚拟机中运行的可执行文件。但在运行该可执行文件之前,我还需要一些功能。所以我的脚本看起来像:

#!/bin/bash
# Some preprocessing.
sudo setcap CAP_DAC_OVERRIDE+ep /home/vm/test/my_exec
/home/vm/test/my_exec

但我得到以下错误:

Failed to set capabilities on file `/home/vm/test/my_exec' (Operation not supported)
The value of the capability argument is not permitted for a file. Or the file is not a regular (non-symlink) file

但是,如果我在 VM 中复制可执行文件(例如在 /tmp/ 中),那么它工作得非常好。这是 sshfs 的已知限制还是我在这里遗漏了什么?

【问题讨论】:

    标签: linux virtual-machine sshfs linux-capabilities


    【解决方案1】:

    File capabilities 在 Linux 上通过 extended attributes(特别是 security.capability 属性)实现,并非所有文件系统都实现扩展属性。

    sshfs 尤其没有。

    【讨论】:

    • 看来这是正确的,我们不能在 sshfs 上使用功能。即使我在主机上进行了 setcap,它仍然无法正常工作。所以我已经解决了先将可执行文件复制到VM。
    【解决方案2】:

    sshfs 只能执行远程用户被授权执行的操作。您以abc 登录远程主机,因此您只能通过abc 可以执行的sshfs 执行操作——不包括setcap,因为该操作只能由root 执行。在本地计算机上使用 sudo 不会改变这一点。

    【讨论】:

    • 即使他们能够在远程机器上以 root 身份登录并在那里设置该文件,本地机器也不会知道这一点:无法传输文件功能或任何此类额外的元数据sftp -> sshfs.
    • 对——我想说的是,使用sudo 对 sshfs 挂载上的文件进行操作几乎不会产生预期的效果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 2010-10-17
    • 2011-12-13
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    相关资源
    最近更新 更多