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上のすべてのコンテンツを読むことができます。
答え2
ディレクトリにアクセスするには実行権限が必要なので、次のものが必要です。
sudo chmod 775 /mnt/cd
cd /mnt/cd