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);

コードをrootとして実行すると(を使用して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_RDWRO_RDONLYアップデート後、突然すべてがうまくいきます。それでもヒントをありがとうございます!

関連情報