Usb

安裝後無法讀取 CD 內容

  • October 23, 2020

我正在嘗試安裝 CD 驅動器(通過 USB)並讀取驅動器中 CD 的內容。我能夠很好地安裝驅動器,但我無法讀取內容。這是我所做的:

$ lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sr0             11:0    1 881.6M  0 rom  

$ sudo mount -t iso9660 -o ro /dev/sr0 /mnt/cd

$ lsblk
NAME           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sr0             11:0    1 881.6M  0 rom   /mnt/cd

$ ls /mnt/cd/
ls: cannot open directory '/mnt/cd': Permission denied

我也嘗試過以root身份,但沒有任何運氣。dmesg節目

[1422983.554740] ISO 9660 Extensions: Microsoft Joliet Level 3
[1422983.670987] ISO 9660 Extensions: RRIP_1991A

CD 包含一個在 Windows 上安裝軟體程序的程序,如果這很重要的話。

有沒有辦法調試這裡可能發生的事情?關於為什麼這看起來很好,但我無法閱讀內容的任何想法?


編輯

的輸出ls -l /mnt是:

drwx------ 7 nobody root  4.0K Jun 22  2016 cd

不過,我也試過

$ sudo ls /mnt/cd
ls: cannot open directory '/mnt/cd': Permission denied
ISO 9660 Extensions: RRIP_1991A

此消息表明 CD 是使用 Rock Ridge 擴展創建的,這意味著其中的文件和目錄可以具有 Unix 樣式的使用者/組 ID 和分配給它們的權限。除非權限設置為全球可讀,否則如果 CD 的 UID/GID 編號與您的系統不匹配,您可能無法讀取該 CD。

因此,您將需要覆蓋 UID/GID 資訊。您可以通過添加一些掛載選項來做到這一點:

sudo mount -t iso9660 -o ro,uid=$(id -u),gid=$(id -g) /dev/sr0 /mnt/cd

注意:逗號前後不能有空格!

在執行sudo命令行之前,您的 shell 將$( ... )通過執行括號內的命令並將表達式替換為這些命令的結果來替換這些部分。只有在這完成後,sudo mount ...才會執行。結果將是這些uid=gid=選項將由您的正常非 root 使用者帳戶的實際 UID/GID 值自動填充。

現在,您將被視為 CD 上任何文件的所有者,除非 CD 具有完全瘋狂的權限,否則您應該能夠在沒有 root 權限的情況下讀取其中的所有內容。

引用自:https://unix.stackexchange.com/questions/616025