ioctl CDROM_SEND_PACKET 명령을 실행하는 데 필요한 권한을 어떻게 설정합니까?

ioctl CDROM_SEND_PACKET 명령을 실행하는 데 필요한 권한을 어떻게 설정합니까?

CDIO 라이브러리를 사용하여 USB CD-ROM 드라이브에 꺼내기 명령을 실행하는 동안 권한 부족으로 인해 오류가 발생했습니다. 항상 다음과 같은 오류 메시지가 나타납니다.

INFO: ioctl CDROM_SEND_PACKET for command PREVENT ALLOW MEDIUM REMOVAL (0x1e) failed: Operation not permitted

호출 은 다음과 같이 ioctl호출하는 애플리케이션의 일부입니다 cdda-player.

cdda-player -ev /dev/sr0

감상 후소스 코드libcdio, 다음 코드 줄은 문제가 있습니다.

int i_rc = ioctl (p_env->gen.fd, CDROM_SEND_PACKET, &cgc);

코드를 루트로 실행하면( 를 사용하여 sudo) 모든 것이 잘 작동합니다. 내 CD-ROM 드라이브에 대한 권한은 다음과 같습니다.

pi@autoradio:/import/valen/autoradio/libcdio-master $ ls -al /dev/sr0 
brw-rw----+ 1 root cdrom 11, 0 Jul  5 22:42 /dev/sr0

pi@autoradio:/import/valen/autoradio/libcdio-master $ ls -al /dev/sg0 
crw-rw----+ 1 root cdrom 21, 0 Jul  5 22:38 /dev/sg0

pi@autoradio:~ $ getfacl /dev/sr0 
getfacl: Removing leading '/' from absolute path names 
# file: dev/sr0 
# owner: root 
# group: cdrom 
user::rw- 
user:pi:rw- 
group::rw- 
mask::rw- 
other::---

사용자는 pi그룹의 일부입니다 cdrom. 하지만 표준 eject유틸리티는 작동합니다 .

현재: 일반 사용자로서 팝업을 실행하려면 어떤 권한을 설정해야 합니까? 감사해요.

고쳐 쓰다:이것은 내 커널 버전입니다.

pi@autoradio:/import/valen/autoradio/libcdio-master $ uname -a 
Linux autoradio 4.9.35-v7+ #1014 SMP Fri Jun 30 14:47:43 BST 2017 armv7l GNU/Linux 

답변1

글쎄요, 관리자의 조언을 받은 후 , 제가 설치 한 libcdio버전이 오래되었고 O_RDWRvs. O_RDONLY업데이트 후 갑자기 모든 것이 잘 작동합니다. 그래도 팁을 주셔서 감사합니다!

관련 정보