我正在尝试设置一个可由任何用户挂载的 VirtualBox 共享文件夹,因此我输入了以下行/etc/fstab
:
# mint shared folder
mint /media/sf_mint vboxsf defaults,user,uid=1000,gid=999 0 0
但是,我收到此错误消息:
juanlu@minted ~ $ mount mint
Only root can mount shared folders from the host.
juanlu@minted ~ $ sudo !!
sudo mount mint
unknown mount option `user'
valid options:
rw mount read write (default)
ro mount read only
uid =<arg> default file owner user id
gid =<arg> default file owner group id
ttl =<arg> time to live for dentry
iocharset =<arg> i/o charset (default utf8)
convertcp =<arg> convert share name from given charset to utf8
dmode =<arg> mode of all directories
fmode =<arg> mode of all regular files
umask =<arg> umask of directories and regular files
dmask =<arg> umask of directories
fmask =<arg> umask of regular files
如果我删除该user
选项,那么我将被迫使用,sudo
但至少挂载点的所有者已正确分配。我在这里做错了什么?
请注意,这可能与以用户身份挂载 VBox 共享文件夹,但实际上我尝试了一个应该可行的选项。
答案1
作为在 VirtualBox 用户支持论坛中得到友好答复,vbox 共享文件夹实际上不是设备(如果是的话,它们将处于/dev/
)和因此“用户”选项等等不适用。因此,不可能允许非管理员用户手动挂载共享文件夹。
但是,仍然可以自动挂载 vboxsf/etc/rc.local
并自定义挂载选项。这类似于自动挂载,但允许为文件夹设置适当的掩码和权限,正如这里解释的那样。请注意,此页面是不完整它指向mount
手册页来列出可用的选项列表,但事实上,其中一些并不适用,如上所示。
答案2
这看起来像是程序文件中的一个错误安装.vboxsf.c,它是 VirtualBox Guest Additions for Linux 的一部分,我相信你没有做错任何事。
在程序启动时,main() 函数会立即检查是否在 root 账户下执行,在处理参数之前,也就是在user
检测或处理参数之前。
检查应该在稍后进行,即在进程(或其分支)的有效用户 ID 更改为指定的用户帐户之后。
你应该向 VirtualBox 开发人员报告此错误。
正确的论坛似乎是Linux 主机上的 VirtualBox(要求登录)。
答案3
您不一定需要该user
选项来/etc/fstab
允许普通用户挂载文件系统。
另一个选项是配置sudo
为允许此操作,无论是否询问执行用户的密码。
从man sudoers
:
身份验证和日志记录
sudoers 安全策略要求大多数用户在使用 sudo 之前先进行身份验证。如果调用用户是 root、目标用户与调用用户相同,或者策略已禁用用户或命令的身份验证,则不需要密码。
标签规范
[...]
NOPASSWD 和 PASSWD
默认情况下,sudo 要求用户在运行命令之前进行身份验证。此行为可以通过 NOPASSWD 标记进行修改。与 Runas_Spec 一样,NOPASSWD 标记会为 Cmnd_Spec_List 中紧随其后的命令设置默认值。相反,PASSWD 标记可用于逆转这种情况。例如:
雷·拉什莫尔 = NOPASSWD:/bin/kill、/bin/ls、/usr/bin/lprm
将允许用户 ray 在计算机 rushmore 上以 root 身份运行 /bin/kill、/bin/ls 和 /usr/bin/lprm,而无需进行身份验证。
因此,这样的一行/etc/sudoers
将允许任何用户无需输入任何密码即可挂载指定的文件系统:
ALL ALL = NOPASSWD: /bin/mount mint
然后就sudo mount mint
可以像普通用户一样工作了。