我想以普通用户身份执行命令,但我希望拥有 root 权限。具体来说,我创建了一个 VirtualBox 物理驱动器,我想以普通用户身份使用它。
我可以sudo
访问 VirtualBox,但这样会给出未配置的 VirtualBox。另一方面,如果我想将原始图像(按照VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda
文档创建)添加为虚拟机的驱动器,则会给出权限错误。
所以基本上我有这些:多个虚拟机,所有虚拟机都带有虚拟驱动器vdi
或vmdk
图像。现在我想拥有另一个虚拟机,但这次带有物理驱动器,并且我需要我的普通用户有权限执行此操作(可能需要输入我的密码才能授予其 root 访问权限,我主要担心的是它应该以特定用户身份执行,而不是以 root 身份执行,尽管它具有 root 权限)。
这有可能吗?如果可能,怎么做?
答案1
到目前为止,大多数现代系统都使用 udev,并且更改 /dev 下的任何权限/所有者在主机系统重新启动之前都有效。
我建议采取以下行动:
ls -l /dev/sda
在我的系统上它看起来像这样:
brw-rw---- 1 root disk 8, 0 янв. 11 13:43 sda
因此磁盘组具有读写权限
sudo gpasswd -a 你的用户磁盘
我们刚刚将您的用户添加到磁盘组
最重要的一步:重新登录你的用户或重新启动主机系统,因为在此之前你的用户磁盘组成员资格将不会生效
答案2
您必须更改 /dev/sda 上的权限,以便 VirtualBox 用户可以对其进行读取和写入。
答案3
我认为您可能可以使用文件权限而不是 sudo 来解决这个问题?
可能值得检查你的用户是否属于 vboxusers 组:
sudo usermod -a -G vboxusers 用户名
如果失败,请尝试更改相关文件的权限:
chmod 760 /路径/到/文件.vmdk
应创建如下权限:
-rwxrw---- 1 个用户组 0 1 月 23 日 10:35 /path/to/file.vmdk
其中 rwx = 用户的读/写/执行权限
其中 rw- = 组的读/写
其中 --- = 其他用户无权限
您可以在目录上运行以下命令以确保用户也具有访问权限:
chmod 770 /路径/到/
drwxrwx--- 2 用户组 4096 1月23日 10:40 /path/to/
(有关 chmod 的更多信息,请参见此处:http://www.computerhope.com/unix/uchmod.htm)
或者,如果虚拟驱动器仅由您提到的“用户”使用,而其他用户则不行,那么您可以简单地将文件的所有权转让给该用户,让他们以该用户身份登录时拥有对文件的完全访问权限。(并且可能为了整洁将文件复制到他们的主目录中?可选。)
chown 用户名 /path/to/file.vmdk
仍然需要用户具有该目录的权限才能访问该文件。
(有关 chown 的更多信息,请参见此处:http://www.computerhope.com/unix/uchown.htm)
答案4
你可以尝试这个:
runuser -l lambda -c 'ls -la'
ls -la
您想要以非 root 身份执行的命令(示例)在哪里,并且lambda
是像任何经典的普通 Linux 用户帐户一样创建的普通用户。
您是想要使用普通账户的 root 用户。作为 root 用户,您不需要提供普通账户密码。