From: Douglas Gilbert <dgilbert@interlog.com>
To: Marcus Meissner <meissner@suse.de>
Cc: JBottomley@parallels.com, linux-scsi@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: PATCH: scsi: make scsi reset permissions more relaxed (RFC)
Date: Fri, 30 Aug 2013 14:47:22 +0200 [thread overview]
Message-ID: <5220945A.2090906@interlog.com> (raw)
In-Reply-To: <20130830120450.GB31120@suse.de>
On 13-08-30 02:04 PM, Marcus Meissner wrote:
> Hi folks,
>
> cdrecord wants to whack the CD drive with a SCSI RESET ...
>
> So far SCSI RESET can be done at 4 levels (target, device, bus, host)
> and all 4 are checked for CAP_SYS_ADMIN / CAP_SYS_RAWIO.
>
>
> As the cdrecord author wants special permissions for cdrecord, readcd ,
> cdda2wav to allow it to send SCSI RESET commands I was wondering if
> relaxing the permission is a potential idea?
>
> This would allow SCSI reset on target/device if a local user
> gets regular access to a SCSI device (via udev acls etc.)
>
>
> (I know that the actual reset code will fall back into the chain
> target -> device -> bus -> host resetting if one fails.)
Hi,
That escalation sequence probably should be:
device(LU) -> target -> bus -> host
I proposed the following patch some time back to give the
user space finer resolution on resets with the option of
stopping the escalation but it has gone nowhere:
http://marc.info/?l=linux-scsi&m=136104139102048&w=2
With that patch you might only allow an unprivileged user
the non-escalating LU and target reset variants.
If changes are made in that area, we might like to think
about adding a new RESET variant mapping through to the I_T
Nexus Reset TMF.
Doug Gilbert
> ---
> drivers/scsi/scsi_ioctl.c | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/scsi_ioctl.c b/drivers/scsi/scsi_ioctl.c
> index d9564fb..770720e 100644
> --- a/drivers/scsi/scsi_ioctl.c
> +++ b/drivers/scsi/scsi_ioctl.c
> @@ -306,22 +306,26 @@ int scsi_nonblockable_ioctl(struct scsi_device *sdev, int cmd,
> return 0;
> switch (val) {
> case SG_SCSI_RESET_DEVICE:
> + /* allowed if you can send scsi commands to the device */
> val = SCSI_TRY_RESET_DEVICE;
> break;
> case SG_SCSI_RESET_TARGET:
> + /* allowed if you can send scsi commands to the device */
> val = SCSI_TRY_RESET_TARGET;
> break;
> case SG_SCSI_RESET_BUS:
> + if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO))
> + return -EACCES;
> val = SCSI_TRY_RESET_BUS;
> break;
> case SG_SCSI_RESET_HOST:
> + if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO))
> + return -EACCES;
> val = SCSI_TRY_RESET_HOST;
> break;
> default:
> return -EINVAL;
> }
> - if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SYS_RAWIO))
> - return -EACCES;
> return (scsi_reset_provider(sdev, val) ==
> SUCCESS) ? 0 : -EIO;
> }
>
next prev parent reply other threads:[~2013-08-30 12:47 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-30 12:04 PATCH: scsi: make scsi reset permissions more relaxed (RFC) Marcus Meissner
2013-08-30 12:18 ` Hannes Reinecke
2013-08-30 12:47 ` Douglas Gilbert [this message]
2013-08-30 16:18 ` Jeremy Linton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5220945A.2090906@interlog.com \
--to=dgilbert@interlog.com \
--cc=JBottomley@parallels.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=meissner@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.