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