This is the first try to unify the command permission tables for
the block layer SG_IO and sg.

I think that we need different default permission for each device
type. This mainly focuses on SBC and MMC.

After everyone agrees on the default permission, I'll extend Jens'
command filters to set an default permission according to device
types. Another possible option is removing policy in kernel
completely. That is, everything is set to CAP_SYS_RAW_IO by default
and distributions need to set up them nicely. I'll convert sg to use
the new permission table code too.

I put all the commands in Doug's document that have the different
permission. I also added some commands that have the same permission
but I'm not sure about.

CAP_SYS_RAW_IO is chosen if the root permission seems to be necessary,
or a device type doesn't support the opcode.

Suggestions?

                                current current
SCSI command                    sg      block   chosen permission
--------------------------------------------------------------------
BLANK                           RDWR    RDWR    ?
- same permission, but conflicts with ATA_PASS_THROUGHT_12. 

GET CONFIGURATION               RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

GET EVENT STATUS NOTIFICATION   RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

GET PERFORMANCE                 RDWR    RDONLY  RDWR(SBC), RDONLY(MMC)
- safe for MMC but, conflicts with ERASE12

MAINTENANCE COMMAND IN          RDONLY  RAW_IO  RDONLY
- various "REPORT ..." commands in here (Doug)

PAUSE RESUME                    RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

PLAY AUDIO (10)                 RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

PLAY AUDIO MSF                  RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

PLAY AUDIO TI                   RDWR    RDONLY  RAW_IO
- opcode 0x48, unassigned to any spec in SPC-4 (Doug).

PLAY CD                         RDWR    RDONLY  RDONLY
- old, new SPARE IN in SPC-4 (Doug).

READ BUFFER CAPACITY            RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

READ CAPACITY(16)               RDONLY  RAW_IO  RDONLY

READ CD                         RDWR    RDONLY  RDONLY
- conflicts with VOLUME SET(IN).

READ DEFECT (10)                RDWR    RDONLY  RDONLY

READ DISC INFO                  RDWR    RDONLY  RDWR(SBC), RDONLY(MMC)
- conflicts with WPWRITE(10)

READ DVD STRUCTURE              RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

READ FORMAT CAPACITIES          RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

READ HEADER                     RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

READ SUB-CHANNEL                RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

READ TOC/PMA/ATIP               RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

READ TRACK (RZONE) INFO         RDWR    RDONLY  RDONLY
- conflicts with XDREAD(10)

RECEIVE DIAGNOSTIC              RDONLY  RAW_IO  RDONLY
- the SES command set uses this command a lot. An SES device is only
accessible via an sg device node (Doug).

REPORT KEY                      RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)
- conflicts with MAINTENANCE (OUT)

REPORT LUNS                     RDONLY  RAW_IO  RDONLY

SCAN                            RDWR    RDONLY  RDONLY
- conflicts with REDUNDNCY GROUP(IN)

SEEK                            RDWR    RDONLY  RDONLY

SEND DVD STRUCTURE              RDWR    RDWR    RDWR
- same permission but conflicts with VOLUME SET(OUT). RAW_IO for SBC?

SEND EVENT                              RDWR    ?
- cdrom.h associates opcode 0xa2 but MMC-2 uses opcode 0x5d?(Doug)

SERVICE ACTION IN               RDONLY  RAW_IO  RAW_IO

START STOP UNIT                 RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)
- hmm (Doug).

STOP PLAY/SCAN                  RDWR    RDONLY  RAW_IO(SBC), RDONLY(MMC)

VERIFY (10)                     RDWR    RDONLY  RDONLY

VERIFY (16)                     RDWR    RDONLY  RDONLY(SBC), RAW_IO(MMC)
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to