drivin' me nuts: permissions and cdda2wav

Arthur Chance freebsd at qeng-ho.org
Tue Dec 6 12:07:31 UTC 2011


On 12/06/11 11:22, Ronald F. Guilmette wrote:
> With a pre-recorded CD in the drive, the following works fine for me when
> I'm root:
>
>      cdda2wav -D 0,0,0 -B
>
> My question is:  What do I need to do in order to make this work also
> when executed from a non-root account?
>
> Here's what I get when I try to do the above from a non-root account:
>
>    cdda2wav: Permission denied. Cannot open or use SCSI driver.
>    cdda2wav: For possible targets try 'cdda2wav -scanbus'. Make sure you are root.
>    Probably you did not define your SCSI device.
>    Set the CDDA_DEVICE environment variable or use the -D option.
>    You can also define the default device in the Makefile.
>    For possible transport specifiers try 'cdda2wav dev=help'.
>
> Effing hell!  I've tried just about everything I can think of off the top
> of my head to beat this and nothing works.  I've tried chmod 0660 /dev/pass*
> (and yes, the account I'm trying these experiments from _is_ a member of the
> `operator' group), but that didn't help a bit.
>
> And before anybody asks, let me say that yes, I _do_ have:
>
>     atapicam_load="YES"
>
> in my /boot/loader.conf file.
>
> So how exactly does one adjust the permissions on one of these atamicam
> pseudo-SCSI devices.  Where are they underneath /dev ?  Please excuse my
> ignorance, but I just don't know.
>
> <<gnashing of teeth sound>>

I've just been through the same experience getting cdparanoia to work 
for a non-root user under REL 8.2p4. Note that I have the ahci module 
loaded so my cd is /dev/cd0.

You need write access to /dev/cd0 plus the corresponding /dev/passN (use 
camcontrol devlist to find out which) *and* /dev/xpt0.

 From my /etc/devfs.conf

own     cd0     root:operator
perm    cd0     0660
link    cd0     cdrom
perm    xpt0    0660
perm    pass5   0660


This is the relevant part my machine's /dev. I'm in operator group.

arthur at fileserver> ls -l /dev/{cd,pass,xpt}*
crw-rw----  1 root  operator    0,  97 Nov 23 16:24 /dev/cd0
lrwxr-xr-x  1 root  wheel            3 Dec  2 16:08 /dev/cdrom -> cd0
crw-------  1 root  operator    0,  91 Nov 23 16:24 /dev/pass0
crw-------  1 root  operator    0,  92 Nov 23 16:24 /dev/pass1
crw-------  1 root  operator    0,  93 Nov 23 16:24 /dev/pass2
crw-------  1 root  operator    0,  94 Nov 23 16:24 /dev/pass3
crw-------  1 root  operator    0,  95 Nov 23 16:24 /dev/pass4
crw-rw----  1 root  operator    0,  96 Nov 23 16:24 /dev/pass5
crw-------  1 root  operator    0, 113 Nov 23 16:24 /dev/pass6
crw-------  1 root  operator    0, 115 Nov 23 16:24 /dev/pass7
crw-------  1 root  operator    0, 116 Nov 23 16:24 /dev/pass8
crw-------  1 root  operator    0, 118 Nov 23 16:24 /dev/pass9
crw-rw----  1 root  operator    0,  61 Nov 23 16:24 /dev/xpt0


And how to find which /dev/passN corresponds to the cd drive:

arthur at fileserver> camcontrol devlist | grep cd
<ASUS DRW-2014S1T 1.00>            at scbus7 target 0 lun 0 (cd0,pass5)



> All I really wanted to do is to rip an "E"CD (enhanced CD) that I own,
> using abcde.  I found out that cdparanoia chokes on the ECD, so I'm trying
> to figure out how to make abcde work with cdda2wav, but it apparently isn't
> at all easy.  (Any hints or advice welcomed.)
>
> Oh!  And by the way, this causes a segfault and a core dump:
>
>    cdda2wav -D /dev/acd0 -B
>
> I'll have to send in a PR on that, I guess, but it is rather stunning to me
> that nobody even tested for that.



More information about the freebsd-questions mailing list