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_RDWR
。O_RDONLY
アップデート後、突然すべてがうまくいきます。それでもヒントをありがとうございます!