編集する

編集する

USB経由でCDドライブをマウントし、ドライブの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

私もルートで試してみましたが、運がありませんでした。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

ベストアンサー1

ISO 9660 Extensions: RRIP_1991A

このメッセージは、CDがRock Ridge拡張を使用して作成されたことを示します。これは、CDのファイルとディレクトリにUnixスタイルのユーザー/グループIDと割り当てられた権限があることを意味します。権限が誰でも読めるように設定されていない場合、UID / GID番号がシステムと一致しない場合、CDを読むのに問題が発生する可能性があります。

したがって、UID / GID情報を上書きする必要があります。いくつかのインストールオプションを追加すると、これを行うことができます。

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

注:カンマの前後にスペースを入れてはいけません!

sudoコマンドラインを実行する前に、シェルは$( ... )括弧で囲まれたコマンドを実行し、式をそのコマンドの結果に置き換えてこれらの部分を置き換えます。これが完了した後にのみ実行されますsudo mount ...。その結果、これらのuid=オプションは、gid=ルートではなく通常のユーザーアカウントの実際のUID / GID値で自動的に入力されます。

これで、あなたはCD上のすべてのファイルの所有者と見なされ、CDに完全に奇妙な権限がない限り、rootにならずにCD上のすべてのコンテンツを読むことができます。

おすすめ記事