On Fri, Jan 25, 2013 at 07:29:44AM -0500, Gene Czarcinski wrote:
> On 01/25/2013 06:55 AM, Roman Mamedov wrote:
> >On Fri, 25 Jan 2013 06:32:30 -0500
> >Gene Czarcinski <g...@czarc.net> wrote:
> >
> >>This patch hits a lot of files but adds little code.  It
> >>could be considered a bugfix,  Currently, when one of the
> >>btrfs user-space programs is executed by a regular user,
> >>the result if oftem a number of strange error messages
> >>which do not indicate the real problem.  This patch changes
> >>that situation.
> >>
> >>A test is performed as to whether the program is running
> >>as root.  If it is not, issue an error message and exit.
> >>Signed-off-by: Gene Czarcinski <g...@czarc.net>
> >$ ls -la /dev/sda
> >brw-rw---T 1 root disk 8, 0 Jan 15 12:11 /dev/sda
> >
> >The user does not have to be root, they can be a member of the group "disk" 
> >to
> >manage this device.
> >
> >Also some or all of the tools accept not just a block device, but also a
> >regular file as their parameter.
> >
> >Wouldn't it be better to check whether or not the running user has
> >*write access* to the device or file to be operated on, before failing?
> I knew there would be corner cases where root was not required for
> execution.  After all, I do not need to be root to execute "btrfs
> --version".  Now, is it worth the effort to determine the corner
> cases and do you have a proposed solution as to determining what
> privileges are needed when?  I can understand when it could be a
> regular file but is it all that common for users to be part of group
> disk?

   Don't try to check all the possible success conditions beforehand
-- that's what leads to websites that fail to work because your
browser is not IE, but work perfectly when you change your user-agent
string to "MSIE". This is highly frustrating for users.

   Instead, try whatever it is you were trying to do (open a file,
send an ioctl), and determine, as well as you can, why it failed by
looking at the error codes that you get back, and report that.
"Permission denied" -> means you don't have permissions -> you need to
be root, or have yourself put in the disk group, or get the
disk-management-capability. Let the user work out which of those
solutions they need, rather than forcing them to use the one you
thought of.

   Hugo.

> If there is a case where it is difficult to figure out if root is
> needed, then my solution would be to turn it into a warning message
> and remove the exit for that specific program.
> 
> However, I believe the real answer is to use sudo.
> 
> Gene
> >
> >>---
> >>  btrfs-corrupt-block.c | 5 +++++
> >>  btrfs-image.c         | 5 +++++
> >>  btrfs-map-logical.c   | 5 +++++
> >>  btrfs-select-super.c  | 5 +++++
> >>  btrfs-show-super.c    | 5 +++++
> >>  btrfs-show.c          | 5 +++++
> >>  btrfs-vol.c           | 5 +++++
> >>  btrfs-zero-log.c      | 5 +++++
> >>  btrfs.c               | 6 ++++++
> >>  btrfsck.c             | 5 +++++
> >>  btrfsctl.c            | 5 +++++
> >>  btrfstune.c           | 5 +++++
> >>  calc-size.c           | 5 +++++
> >>  convert.c             | 6 ++++++
> >>  debug-tree.c          | 5 +++++
> >>  dir-test.c            | 5 +++++
> >>  find-root.c           | 5 +++++
> >>  ioctl-test.c          | 6 ++++++
> >>  mkfs.c                | 5 +++++
> >>  quick-test.c          | 6 ++++++
> >>  restore.c             | 5 +++++
> >>  21 files changed, 109 insertions(+)
> 

-- 
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
  PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
           --- Quidquid latine dictum sit,  altum videtur. ---           

Attachment: signature.asc
Description: Digital signature

Reply via email to