安装到 USB 闪存的权限被拒绝

安装到 USB 闪存的权限被拒绝

我正在尝试使用基本命令实用程序将 ISO 写入 USB 闪存。我在写:

sudo cat path/to/archlinux-version-x86_64.iso > /dev/disk/by-id/usb-My_flash_drive

但我有回应:

zsh: permission denied: /dev/disk/by-id/usb-Generic_Mass_Storage_C5BB4803F4D97884-0:0

也许我需要提供根才能写入该设备?

更新。解决方法:

sudo dd bs=4M if=archlinux-2023.07.01-x86_64.iso of=/dev/disk/by-id/usb-Generic_Mass_Storage_C5BB4803F4D97884-0:0 conv=fsync oflag=direct status=progress

答案1

当您使用如下命令行时:

sudo cat path/to/archlinux-version-x86_64.iso > /dev/disk/by-id/usb-My_flash_drive

shell 将在开始执行实际命令之前尝试设置重定向。因此,只有该cat path/to/archlinux-version-x86_64.iso部分会受到sudo;的影响。这可能不是您想要的。您需要sudo写入设备,不一定需要读取常规文件(除非您无法正常访问该文件)。

重新排列此命令以使用sudo和重定向的一种方法是:

cat path/to/archlinux-version-x86_64.iso | sudo tee /dev/disk/by-id/usb-My_flash_drive >/dev/null

在这里,shell 将首先在两个命令之间设置管道以及结果输出的重定向,然后再启动这两个命令在平行下。将以tee /dev/disk/by-id/usb-My_flash_driveroot 权限运行;它会将其输入的一份副本传递到闪存驱动器,并将另一份副本传递到标准输出。 shell 设置的重定向将以您的常规用户帐户运行,并将传递teeto的标准输出/dev/null,这不需要任何特殊权限。

上面的重新安排与您原来的命令行类似,但它可以被称为“无用的使用cat”,因为您也可以根本不使用管道来完成它,只要您可以.iso作为普通用户读取文件:

sudo tee /dev/disk/by-id/usb-My_flash_drive < path/to/archlinux-version-x86_64.iso > /dev/null

相关内容