편집하다

편집하다

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에 완전히 이상한 권한이 없는 한 루트가 되지 않고도 CD에 있는 모든 내용을 읽을 수 있습니다.

답변2

디렉터리에 액세스하려면 실행 권한이 필요하므로 다음이 필요합니다.

sudo chmod 775 /mnt/cd
cd /mnt/cd

관련 정보